Django中外键删除导致的死锁

dev | Comments

这周发现的一处引起mysql死锁的代码:

1
ArticleQuiz.objects.filter(pk=quiz_id).delete()

死锁往往是两个事务加锁顺序不一致导致的,这里看着只是很简单的一条语句,也只有一个primary key的查询,但是还是引起了死锁。

使用Nginx和json-server搭建测试服务器

dev | Comments

App开发时需要构造数据测试各种逻辑,最直接的办法是请求一个拥有和线上环境一样数据的测试服务器,不过往往在开发时,需要修改的只是很少的一部分,如果可以指定自己想要修改的API,其他还是正常请求线上环境,这样测试起来也会方便很多。

TOTP -Google Authenticator两步验证

tech | Comments

使用单一密码的安全性有限,当进行敏感操作时需要更好的验证方法来确保账户安全,比如短信验证,或者像支付宝口令这种基于时间的一次性密码。Google Authenticator是一个实现了OTP的客户端,它不仅可以给Google账户提供保护,也可以把它集成到现有的网站上,以实现两步验证。

(译) The Y combinator (Slight Return)

翻译 | Comments

or:

How to Succeed at Recursion Without Really Recursing

Tiger got to hunt,
Bird got to fly;
Lisper got to sit and wonder, (Y (Y Y))?

Tiger got to sleep,
Bird got to land;
Lisper got to tell himself he understand.

  — Kurt Vonnegut, modified by Darius Bacon

石头的病

note | Comments

    如果石头健康
    如果石头不再生病
    他哪会开花
    如果我也健康
    如果我也不在生病    
    也就没有命运

            --海子 <<石头的病 或八七年>>