动态密码算法介绍与实现

动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二步验证机制,那么,技术运用,既要知其然,更要知其所以然,动态密码算法是怎样的?

Read on →

周末到了,来段代码压压惊

最近一段时间,写了两篇关于 sidekiq 的源码分析,但是一直想要补充的一段 sidekiq 里边的代码其实是挺有趣也挺逗的,所以这个星期就不要长篇大论的源码分析,来点轻松点的吧。

Read on →

Sidekiq 信号处理源码分析

引言

在之前的文章《Sidekiq任务调度流程分析》中,我们一起仔细分析了 Sidekiq 是如何基于多线程完成队列任务处理以及调度的。我们在之前的分析里,看到了不管是 Sidekiq::Scheduled::Poller 还是 Sidekiq::Processor 的核心代码里,都会有一个由 @done 实例变量控制的循环体:

Read on →

Sidekiq任务调度流程分析

sidekiq是 Ruby 中一个非常优秀而且可靠的后台任务处理软件,其依赖 Redis 实现队列任务的增加、重试以及调度等。而 sidekiq 从启动到开始不断处理任务、定时任务以及失败任务的重试,都是如何调度的呢?遇到问题的时候,又该如何调优呢?

Read on →

嘿,小心你的双等号==

前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,看RubyChina: 别用 raw 和 html_safe,一般来说相对有经验的老鸟也应该都知道这个点,但是还是觉得有必要写出来,再次提醒一下其他小伙伴,避免踩坑。

Read on →

谨防 ActiveSupport::Cache::Store 缓存 Nil 值

Rails 中的 active_support 组件主要基于 Rails 需要提供了很多非常有用的基础工具以及对 Ruby 内置类进行扩展。其中的 cache 模块主要提供了 Rails 中底层缓存的定义以及简单实现。今天要跟大家探讨的是之前在使用此模块所遇到的一个坑,有兴趣学习其基本用法的可以点击以下两个链接:

Read on →

使用 Chinese_pinyin + Friendly_id 为中文标题生成 Slug

在许多项目中,我们可能都会遇到需要为数据生成 slug 的场景,这些场景类似于:

  • 基于商品名称生成 slug
  • 基于文章标题生成 slug

至于为什么需要生成 slug,而不是使用比如 Rails 中默认自增的主键也就是数据的 id,原因其实很简单:

  • 使用自增 id 容易暴露数据,比如通过订单 id 可能导致遍历所有订单,不信,你看这里就有个例子
  • 增加 URL 友好性,/products/18376 这样的链接肯定没有比 /products/apple-watch-gold 这样的链接更招人喜欢
Read on →

MySQL in 查询,并通过 FIELD 函数按照查询条件顺序返回结果

我们都非常习惯通过 MySQL 的 IN 函数来查询特定集合的数据,比如为了在 books 表中找出李雷、韩梅梅和安华写的书,我们可以有如下的 SQL(可以通过 SQL Fiddle查看示例):

Read on →

Apdex——衡量服务器性能的标准

日常工作中,我们总是习惯于通过量化的标准去衡量我们对事物的评价,比如美食点评的星级、酒店的星级、每个个人的信用评分等等。而作为一个 Web 工程师,我们也总是在意于我们网站的性能,因为网站的性能会最直接地影响用户的体验。今天要介绍的就是一种同样能够帮助工程师对应用性能进行量化评估的标准 —— Apdex 。

Read on →

申请以及集成 Stripe 的 Alipay 支付方案

        最近在一个项目需要支持人民币支付,并且客户要求希望能够收完款后的结算是用美元,所以就想到了去年 Stripe 宣布已经跟支付宝达成合作意向,所以经过一番咨询跟集成,终于把 Stripe 集成进来,并且启用了支付宝收款。这篇文章介绍功能申请以及集成的完整过程。

Read on →