0%

Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。2011年,企业应用软件专家 Martin Fowler 专门撰写长文介绍。同年它还获得了 Oracle 官方的 Duke 大奖。

阅读全文 »

Sidekiq 是一个用于后台作业的处理框架,它提供了执行 定时异步 任务的后台任务处理系统。可以集成在 Rails 项目中使用,也可以单独的使用。通常用来处理耗时的任务,如上传图像,发送邮件等。它可以配置多个队列,将不同类型的任务分配到各自的队列中。Sidekiq 会将一些运行时的数据存放在 Redis 中,所以请先确保你安装了 Redis。在本篇文章中,我们将对如何在 Rails 中使用 Sidekiq 进行介绍和分析。

阅读全文 »

Puma

Puma 是 Rails 的默认 Web Server,在创建 Rails 项目时已经自动添加了 Puma 的依赖。Puma 是用了多进程加多线程模型,它可以同时在 fork 出来的多个 worker 中创建多个线程来处理请求;不仅如此 Puma 还实现了用于提高并发速度的 Reactor 模块和线程池能够在提升吞吐量的同时,降低内存的消耗。

阅读全文 »

在 Ruby 中,当你需要访问一个常量的时候,很简单直接使用这个常量的名字就行。但是你知道 Ruby 是如何查找一个常量的吗?简单的讲 Ruby 会按照 Module.nesting => Module.nesting.first.ancestors => Object.ancestors 的顺序去查找常量。

阅读全文 »

现在应用中类似 “优先按距离排序” 的功能已经很常见了,那么这些功能如何简单快速的去实现呢?本文将提供一个在数据量不是特别大的时候的解决方案,实现起来比较简单。先将用来演示的表结构和数据初始化一下

阅读全文 »

前两年做过一些微信公众号相关的开发。最近这两年自从微信小程序问世之后,公众号开发慢慢的淡出了视野。这段时间做了一个活动页,用到了微信网页授权登录的相关接口,坑点还是蛮多的,正好整理总结一下如何通过微信网页授权获取用户的基本信息。

阅读全文 »

通常情况下,图片的生成应当在客户端去实现。但是当我们必须在服务端去生成图片时 Barby Gem 是一个非常不错的选择。它是一个用来生成各种标准的条形码,以及二维码的库。Barby 的代码结构可以大致分为 生成器输出。输出器的功能非常全面,可以输出 Base64、PNG、PDF 等等,甚至我们可以基于 Barby 添加自己的输出器。

阅读全文 »

虽然下载文件有 Rails 默认的 send_datasend_file 方法,还有像 axlsx_rails 这样的第三方库。但是我仍然比较倾向于使用 Spreedsheet XML 的方式去开发下载文件的功能。

阅读全文 »