原创文章

Python异步任务队列

在开发的过程中,有时会需要用到类似下面的这些操作

  • 用户注册时发送认证邮件
  • 带有Web界面的爬虫
  • 定时计划任务
这些任务的共同特点是执行所需的时间较长,但是我们又不希望其阻塞后续的操作。因此我们将这些任务放进任务队列里来运行。Python常见的异步任务队列实现有功能较丰富的Celery和轻量级的RQ,本文以celery为例。Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统。 Celery经常和RabbitMQ同时提起,但实际上,RabbitMQ和celery并不是同一层面的东西。Celery需要存储介质来存储任务(称为broker),可选的broker有RabbitMQ, redis, mysql, mongodb等。 (更多…)

Frank
原创文章

fabric.js裁剪图片对象

最近手上的一个项目使用[crayon-5b03cb81dc2cf910525557-i/]构建一个图片编辑器,裁剪图片是需求之一。虽然fabric.js提供了原生的裁剪功能,但是内置的裁剪功能目的在于将一个图片裁剪成特定的形状而边框不变(如下图),Google上能搜到的JSFiddle上几乎也都是使用的同样的方法,例如https://fiddle.jshell.net/filiperoberto/wLub3jau/,因此不符合我的需求。 (更多…)

Frank
原创文章

Neuxs 6P的意外掉电故障

去年12月起,大量Nexus6P用户遇到了在电池仍有足够电量(60%-15%)时掉电并关机的情况。从上周开始,我的手机也毫无预兆地出现了同样的问题,而且比网上大多遇到同样问题的用户更严重,意外掉电发生时的电量为50%-80%不等。 (更多…)

Frank
原创文章

Javascript代码同步化

我最近一直在写js。在这期间,我在群里提的最多的问题就是

函数a在函数b执行之前就执行了,我应该怎么办?
我有一个用python写的网易云音乐的下载器,我最近在试图把它用nodejs重写一遍。 它的逻辑非常简单。但是我写了一半就写不下去了,因为一层一层的回调嵌套,代码已经成了[crayon-5b03cb81dcac6464700247-i/]形。js一个重大的特点就是异步非阻塞,但是在一些情况下,下一步的操作需要依赖上一步的执行结果。这样就会有回调中再回调的情况出现。 当业务逻辑一复杂,回调的嵌套越来越多,可读性就会变差,维护起来也会很困难,这就是回调地狱。 node有很多第三方的模块用来将异步调用同步化,来解决这个问题。 (更多…)

Frank
原创文章

使用scrapy构建爬虫

新建一个scrapy项目

[crayon-5b03cb81dcf8b404175227/]scrapy会初始化一个项目,项目文件包括:
  • [crayon-5b03cb81dcf93958742728-i/]定制需要储存的文件的域,类似于orm
  • [crayon-5b03cb81dcf95228286641-i/]管道
  • [crayon-5b03cb81dcf97163841930-i/]设置相关参数
  • [crayon-5b03cb81dcf99251651108-i/]文件夹 定制爬虫
scrapy爬虫的组成 scarpy抓取一个页面的大致流程:
  1. 下载器下载HTTP响应内容
  2. 下载器传给执行回调函数进行解析
  3. 解析后调度器进行过滤,查重等等
  4. 将数据传给管道,作进一步处理
(更多…)

Frank
原创文章

ubuntu升级内核及开启BBR TCP拥塞控制

最近了解到了BBR这个东西。BBR是Google开发的一种TCP拥塞控制算法。很多人反映境外的VPS用上BBR之后,速度得到了明显的提升。 如果有兴趣了解一些原理上的东西,可以参考这里:Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势? 从Linux内核4.9起,BBR已经被整合进Linux内核中,所以直接升级内核到4.9以上的版本并开启BBR模块即可。 只有KVM和Xen架构的VPS可以自行升级内核,因为OpenVZ无法进行内核层级的操作。 (更多…)

Frank
原创文章

PHP获取微信小程序的带参数二维码

最近公司的一款产品需要用到微信小程序的带参数的二维码。虽然微信提供了现成的API,但是整个过程中有非常多的坑。 微信的官方文档:获取二维码 · 小程序

获取Access Token

获取二维码的接口需要用到应用的Access Token。只需要向微信的提供的接口发送[crayon-5b03cb81de044251821995-i/]和[crayon-5b03cb81de04b854204275-i/]即可获得Access Token。每个Access Token的有效期为7200秒,我们的方案是获取到Access Token之后将其写入Redis并设置7200秒的过期时间。 (更多…)

Frank
原创文章

Google Daydream View开箱体验

在今年10月初的Made by Google 发布会上,Google发布了早在6月的I/O大会上就提及了的Daydream VR平台。

购买

10月中旬,Daydream 已经上线包括Google Store、Verizon、BestBuy在内的美国各大线上平台。 我10月中旬在Google Store下单了一台Slate颜色的Daydream View。11月中旬从位于Mira Loma的Google仓库发货,经过4天的运输到达转运公司仓库,再经过大约10天的国际转运,清关,国内转运等等流程,在11月26号到达我的手中。 总共的花费大约是标价79刀 + 税6刀 + 运费80软妹币。

开箱

包裹和国际运单 %e6%97%a0%e6%a0%87%e9%a2%98 Daydream包装 619a2bc4993684296d809ccbc05cad53 Daydream View本体和控制器 78f61fe1cccfa249d76ba104c6f59035 Daydream控制器上有一个可点击的触控板,一个APP按钮,一个Home按钮,和音量键。使用USB C接口充电。 f65ef181fef66865d80632448fae948e (更多…)

Frank