重启 Scrapy 翻译计划

之前说的 Scrapy 翻译计划,因为懒虫上身一停就是一年啦,陆续有不少朋友留言想要翻译的完整文档,真是愧对他们。

近期准备重启该计划,一定坚持到底,翻译完成。

好久没玩 Sphinx 和 RST 了,得重新熟悉一下了。

蜜月甲米行 Day 0: 准备

甲米海滩

从13年4月趁亚航大促时订好了机票,确定了明天的蜜月行程,可谓是准备无不充足,用“准备”为题实为准备出行。

老婆说我们一定要把每次旅行都记录下来,等老以后可以慢慢回味,所以为了不辜负老婆的殷勤期盼,我决定从今天开始以流水账的方式每日一篇(有条件的话,不行就回来再补)随笔来记录此次甲米行的经过。

已准备物品清单:

  1. 亚航 check-in paper 双份打印;
  2. Booking酒店确认信 双份打印;
  3. 身份证、护照、签证双份复印;
  4. 浴巾一张;
  5. 洗漱用品(牙膏、牙刷、洗发水、沐浴露、香皂);
  6. SPF50 防水防晒霜;
  7. 防水创可贴;
  8. 常备药品(止泻药、万能神药:藿香正气液);
  9. 墨镜;
  10. 情侣T恤(禁用了红绿二色);
  11. 20寸行李箱;
  12. 美标插头转换器;
  13. 泳装、沙滩裤;
  14. 薄外套;
  15. 便鞋和凉拖;
  16. 相机、iPad、手机;
  17. 299B 7天不限3G流量 happy卡;
  18. 面纸湿巾;
  19. 护肤霜、洗面奶;
  20. 太阳伞;
  21. 风油精;
  22. 移动电源;
  23. 华夏商旅卡;
  24. 浮潜袜;

手机安装应用:

  1. Booking客户端;
  2. Google翻译 – 妈妈再也不用担心我的英语了;
  3. Dropbox – 用来获取亚航的 check-in paper、booking的确认信及其它云端文件;

今天就这么多,明天才是真正的精彩开始,应陶伟同学要求会放大量图片上来刺激他。

让我们 Happy 起来!!

随笔 #918

今天入职新公司第三天,谈谈感受。

目前还在寻找定位的阶段,领导给的定位是需求分析和技术研究,和入职前说的技术团队负责人不同,多少有点失望。

技术研究的定位可能取决与我以前的工作经历,但是从目前公司的项目来看,需要进行技术攻关的东西可能短时间来说都不会有,以前工作掌握的东西已经绰绰有余。

由此看来,自己要做好往产品经理转型的准备吗?这我倒是蛮像试试的….

走一步,看一步。

关于 IMDB API(一)

IMDB API 已上线两个月,目前运行在 Linode 的一台1G内存的VPS上,十分稳定(可能是处理量小的原因——这个月只用了16G流量)。

我一直在网上收集关于 IMDB API 的一些评论,虽然她只是一个衍生品,不过我仍然关心她的使用者对她如何评价。

两个月的时间内,有15位网友报告了19个问题,收到10多封鼓励我继续做好的邮件,也被美国哈町大学的一位老师收录到课件中,整个过程都让人很愉悦。

今天看到了下面两个问题:

第一个问题来自 xbmc 论坛上的一则讨论

问题1

实际上这是个使用不当的问题,加上 limit 参数后,和官方的搜索接口几乎是一样的(包括排序)。

第二个问题来自 PPWeb项目组

问题2

这的确是一个问题,图片小的问题已经在 IMDB API 1.2.1 解决,使用了标准的340像素图像,至于提到的烂番茄数据,等忙完了1月份的考试,再来处理。

IMDB API 第一笔捐赠款

晚上回来登录了 IMDB API 的官推,收到了这样一条推文:


因为paypal的限制,捐赠虽然物理上失败了,但这却证明 IMDB API 已经获得了用户的肯定,可视为逻辑上成功了…… :mrgreen:

IMDB API 1.0 发布

IMDB API 1.0 三大更新:

  1. 所有 IMDB 信息全面支持中文译名检索,如:搜索“生化危机”,可以直接使用“生化危机”的作为关键词检索,而不需要使用他的英文名称;
  2. 新增 lang 参数,可以选择获取返回数据的语言,目前仅支持英文和中文两种语言;
  3. 同音字识别,如搜索“建国大业”时,错误的使用了“建国大爷”作为关键字,IMDB API仍然能够正确的返回结果;

官网地址:http://imdbapi.org/

IMDB API 发布

官网地址:imdbapi.org

IMDB API 是什么?

IMDB API 是一个轻量级的 Web 服务,提供一种 IMDB 数据的有效访问方式。虽然 IMDB 的数据可以在官网上免费下载,但是却没有提供一个很好的 API 来检索这些信息。此 Web 服务旨在一定范围内解决这一问题。

IMDB API 的本质

IMDB API 包含一个 RESTful 接口、一个后台数据更新服务和一个监控服务。

RESTful 接口由三层模块组成:访问控制层(Access Control)、缓存层(Cached)和检索层(Search)。

* 访问控制层(Access Control)

检索请求首先由访问控制层接管,判断请求发起方在一个小时内发起的请求次数是否超过限制,超过限制返回 403 状态,未超过限制则允许请求到达下一层。

* 缓存层(Cached)

检索请求到达缓存层后,缓存层根据检索参数来获取 Memcached 中的数据,若缓存有数据,则直接返回结果,若缓存无数据,允许请求到达下一层。

* 检索层(Search)

检索请求到达检索层后,根据用户参数从数据库检索数据,返回的结果(无论有无数据)将自动被缓存层接管,存入 Memcached 中,同时将结果返回给请求方。

这三层最开始全部由 python 编写,运行在 uwsgi + gevent 上。后来考虑到读取缓存中的数据也要 uwsgi_pass 到 python 来处理,实在是有点不够优雅,同时也为了能最大程度利用  Nginx 的高效低能耗的非阻塞特性(虽然 gevent 也是非阻塞的),于是用 Lua 重构了访问控制层和缓存层,使它们完全运行在 Nginx 服务内部,使这它们成为完全脱耦的独立模块。

借着这个思路,本打算也将检索层重构到 Nginx 内部去运行,但是经过反复的压力测试(使用 ab),发现 uwsgi + gevent 组合的性能居然和运行在 Nginx 内部的性能不相上下,甚至还略胜一筹,着实出人意料,于是暂时放弃了这个想法。

数据同步

IMDB API 的数据目前可以在36-48小时内与官方数据完全同步一次,由于本地资源有限,该周期无法进一步提升。

在 Tengine 基础上手动集成 Openresty 的所有组件

喜欢 Openresty 的编程性和其提倡的“让你的 Web 服务直接跑在 Nginx 服务的内部”,但同时我又非常喜欢 Tengine 所提供的新特性,是否还有人跟我有一样的纠结呢?

Openresty 集成了许多第三方的模块来增强 Nginx 的可编程性,通过它开发人员能够很方便的安装它们,如果你是一个懒人可以直接使用 Openresty 提供的便利。但如果你也和我一样对 Tengine 情有独钟,同时又想具备 Openresty 那样强大的可编程性,还有一点小勤快的话,请继续往下读,我将提供一个基于 Tengine 手动集成 Openresty 所有组件的安装过程。

Continue reading “在 Tengine 基础上手动集成 Openresty 的所有组件” »

近况@2012-9-12

这篇文章本应该昨天写的,但是因为 WordPress 发布文章的问题推迟到了今天。

工作

对于自己的发展方向迷茫了很久,年龄不大不小,是否坚持这个行业一直也很纠结。但最近从一些国内的前辈身上看到了许多,同时也坚定了很多。

这个行业很有魅力,放弃!舍不得。相信很多仍然坚持写代码的前辈,很多都经历过我这个阶段。

做一个独立程序员,这个想法由来已久,这和自己的性格有关:不喜欢拘束的工作环境和按时上下班的限制。

做一个独立程序员,但不是现在,你至少需要有已经在产生收入的产品来维持你的生计,这个目标我锁定在两年后。

学习

最近又开始回重大上自习了,准备来年的各种考试,向媳妇承诺的5年内拿到研究生学历的承诺一定要实现。

项目

最近有一个小应用会上线,暂时叫它 IMDB API。该应用用于对 IMDb.com 的数据进行检索。

做这个应用的想法源自自己的另外一个项目(暂时叫它猫克斯),该项目中正好需要一个检索影片 IMDb 信息的接口,但是网上没找到合适的,要么被官网威胁着关了,要么获取的数据字段不够丰富。

于是乎,我产生了自己在官网提供的文本数据的基础上实现一个,目前正在数据处理过程中,预计能在下周内完成并上线,本应用使用域名:imdbapi.org 。

由于数据是全英文的,所以前期未考虑国内的开发者(主要是备案不让过 :neutral: ),仅针对国外用户的使用做了优化,如:

  • 采用国外的CDN来加速应用的访问;
  • 检索分词支持同一单词的不同时态的识别;
  • ……

尽管如此也对中文用户的使用做了少量优化,如:华语电影支持直接输入中文进行检索等,对国内用户的支持,会在有一定国内用户的基础后进行。

当产品上线后,会专门写一篇更详细的文章来介绍该应用。

爱情

最后来谈谈感情方面,和媳妇的小家10月份开始装修,以前吊儿郎当的生活几乎完全收敛了。媳妇的脾气不好,爱生气,不过没关系,我爱你,老婆。

WordPress 新建文章和页面,“发布”按钮变“提请审批”问题解决

前几天更换了博客的主机,昨天想发布新文章时,发现原本应该是发布按钮的地方变成了“提请审批”,看了一下用户权限是管理员,没问题。

Google了半天,网上全是SAE平台的问题,另外一个是因为 mysql 服务没有数据库目录权限造成的,这些都不符合我的情况,实在没有办法打算重装 WordPress。

重装 WordPress 时,到安装数据库一步,提示一整页的 SQL 错误,其中第一条提示“Invalid default value ‘user_registered’”(文字大概类似这样),看了一下它执行的SQL,原来这个字段的默认值是设置的“0000-00-00 00:00:00”,而我当初在安装 mysql 时,设置了较严格的模式:

sql_mode = NO_ZERO_DATE,NO_ZERO_IN_DATE,TRADITIONAL

问题找到,现在回想起来,之前在后台除了无法新建文章和页面外,其他内容的新建更新都没问题。这可能是文章和页面会自动保存草稿的原因,而自动保存草稿时插入默认值失败,获取不到 post_id ,因此才会出现我所遇到的灵异现象。

注释掉 mysql 的这条配置后,重启 mysql。哈哈!“提请审批”按钮又变回了那熟悉的“发布”了。 :mrgreen:

hacked by ivy