杂而不精

今晚调模型调郁闷了, 发现没个顺手的工具确实不行, 于是把拖了很久, 本来指派给别人但一直没完成的 debug 工具给完成了大半.

很早写过一个 python 脚本, 在命令行下调用, 但是不方便输入和构造数据, 看起来也不是很方便, 但一直也有别的事情, 觉得这事优先级不高就一直搁着. 后来要做不同数据下的对比, 除了自己还是没人写这个, 于是把 python 脚本完善了下, 支持多输入, 多输出带对比, 还是没去写界面或数据构造. 再后来在做别的事情的时候, 顺便把这个 python 脚本也做了一次简单重构, 使其兼容线上配置, 逻辑也保持完全一致, 并将其作为一个 daemon, 用 php 写了个界面, 一堆参数可以简单的用 html 表单 (选择框, 下拉菜单什么的) 来生成, 默认值也好指定, 输出还是把原 python 输出到命令行的东西原封不动输出到网页, 但是不支持多输入. 最后就是今天实在忍不了土鳖的开两个窗口去调试对比 (顺带吐槽下其实是某从的显示器不够大, 开两个窗口并排放不开), 把那个 daemon 改的支持多输入, 并将输出做了一些简单的格式化, 还是裸文本但是看起来有条理多了, 并且把模型/数据/配置等支持在线重载, 免得换个数据就去 kill daemon 然后重启时又提示端口号还没释放.

晚上回来的时候看到汤永程在写他去参加天天向上的事, 说到语言学习, 就突然想回忆下, 自己到底一天都在用哪些语言, 好像我也会挺多, 但是都杂而不精. (前面那句话里两个语言指代不一样, 显然笨狗只会程序设计语言…) 按接触/学习的时间排序如下, 记录兼娱乐, 其中一些自己觉得好的书和资料给了链接, 希望对别人有帮助. 写完回头看, 怎么看都是一部扭曲的非主流码农成长史, 而且发现这都能当简历了 -.-|

PASCAL
– 第一个正式去学的语言, 高中玩 OI 竞赛时学的, 也仅仅用于竞赛而已
– 可以应对 03 年 NOIp 高中组级别的题, 没做过实用化工作, 竞赛中用过两年多, 现在应该忘的差不多了

C
– 大学入学前跟着去玩 ACM 开始去学, 一直到现在还在学, 大一作为必修课马马虎虎学过去了, 到大三大四时通读 C 程序设计语言 并完成所有例题和习题, 很薄的一本真的认真看完花了好久, 这本书真的非常赞, 后面就在工作中一直作为主力高级语言在用了
– 可以应对一般的 ACM 水题, 能独立完成计算机专业 C 语言大作业, 看过/实现过一些简单库函数, 结合 APUE (Unix 环境高级编程) 将其和 *nix 底层对接学习了下, 学习/实习/工作中将其混着一点点 C++ 用了几年, 参考别人的开源项目完成过一个 Online Judge 的内核, 这些年代码量加起来我猜应该够十万行了, 但是大部分还是在已有框架下写策略细节, 没做过大项目整体框架比较遗憾

C++
– 单独从 C 里列出来是想说明我真的不会 C++… 曾经在玩 ACM 的时候用过一点点 vector 什么的, 但是这种应该不叫去学 C++ 吧, 大四实习时因为工作需要时翻了下 C++ Primer Plus, 翻了几章后发现买错书了, 本来应该是买 C++ Primer 的… 刚好那段时间的实习也都在做偏策略的东西, 一直没去看工程细节, 结果就一直不会工程了
– 能看懂简单的 C++ 代码, 能将简单的 C++ 写成 C, 剩下的, 我真的不会 C++…

HTML
– 忘了啥时候开始学的了, 反正成天看网页, 看人源代码, 抄抄改改, 从学校图书馆借过很土鳖的类似 xx 天入门的书学过下后就再没系统的学习过, 倒是折腾过很多地方, WHUACM 那现在还有不少页面是我写的或是基于我写的改的, 后来做 RA 和工作时发现很多需要可视化的结果还是用 HTML 来的爽, 零零碎碎写过一些在行家眼里看来就是三岁小孩折腾的小站
– 能看懂简单的 HTML 框架, 能写简单的 HTML, 比如 yewen.us 这样的 (blog 是 WordPress, 特此说明)

CSS
– 这算语言么? 经历/水平同 HTML

Java
– 大学的选修课, 也仅仅到大学的选修课, 考试过后就没再写过了, 买过 Thinking in Java 但是从来没看完过
– 能完成几年前 Java 1.4 时代的课程大作业水平, 仅此而已, 我真的也不会 Java (猎头问你是 Java 程序员还是 C++ 程序员的时候是最伤人的时候, 我回答都不会后对面口气立马就变的很鄙夷, 连猎头都 bs… 这码农当的太失败了)

JSP
– 本来是想去接手第一版的 woj 然后做第二版的, 后来还没开始正儿八经学就发现不如推倒换 php 重来
– 不会, 曾经还会在 Eclipse 里开个新工程的, 也仅仅会开个新工程, 现在啥也不会了

Linux Shell
– ACM 比赛会用到, 同时本着 “一个合格的计算机专业学生应该会 Linux” 这样的想法自己去折腾过, 选修课上迷迷糊糊学过, 实习的时候开始天天用, 一直都在抄别人的来改, 到现在还是三脚猫功夫, 一直没去找系统学习的方法, 也懒得去系统的学, 觉得是工具用的时候能捡起来就行了, 目前计划在可预见的未来系统的去学学 Shell 脚本学习指南
– 日常工作使用语言, 能写简单的控制脚本, 有若干脚本还在线上系统应用

awk
– 第一次实习的时候因工作关系开始用, 也是从那个时候开始领悟 Linux 的设计哲学, 就是用一堆合适的工具去干一件超酷的事情, 而不要想着为了做一件大事情而去发明一个万能工具 (所以我不是 Emacs 党么?), 一直也还是抄抄改改, 没去系统去学, 有 sed 与 awk 这本书, 但还是只想当工具书用不想系统去学
– 日常工作使用的简单脚本, 能写比较简单的文件级 awk

sed
– 同 awk, 用的更少, 几乎忘光了, 用的时候查 Google/Baidu/参考书

C#
– 某年为了贪一次微软夏令营的机会答应了别人的坑蒙拐骗去当武大微软技术俱乐部主席 (结果那年居然没办夏令营, 真是… 动机不纯必无善果), 一看自己会都跟微软特色没关系, 还是学点啥吧. 瞄上 C#, 从 MSDN 上下了个视频教程对着写完过, 然后, 然后就没有然后了. 在 MSRA 的时候修改的那个原型到底用的 C# 还是 C++ 都忘记了
– 不会, 但是真心觉得比 Java 优美, 特别是现在还在持续改进中

Python
– 好奇心强显然会对各种东西感兴趣, 从研究生开始将 python 作为主力思考/原型实现语言, 写起来确实快, 而且喜欢用缩进来控制语法, 从根本上杜绝了把代码写的很难看或读到很难看的代码 (当然, 有人炫技也还是可以很变态的…). 从 A Byte of Python (中文版) 入门, 再通过 Dive into Python (中文版) 略提高, 再又是抄抄改改了, 成天拿来做系统原型和算法/策略调研和实现, 压根没做 Web 框架什么的 (Django 什么的继续不会). 手头有一本 Python Cookbook, 无奈此书奇技淫巧过多, 只敢将其当工具书偶尔翻看
– 日常工作使用的主力语言, 若干自己的小系统, 若干系统原型 (还有一些一直懒得改和没人改的在线上用)

PHP
– 既然会 HTML 了总该会门动态语言来做交互吧, JSP 看起来就很重那就玩比较好上手的 PHP 咯, 又是一门通过抄抄改改入门的语言, 到现在还是抄抄改改的水平, 手里常备PHP官方手册做参考, 反正也不是项目必须语言, 做点调试工具什么的还是够了
– 菜鸟入门水平, 有一些小原型和调试工具

JavaScript
– 没学过, 不会, 会抄简单的样例连蒙带猜的改, 还是比如 yewen.us 的导航栏效果, 比如会知道怎么改参数用 HighCharts 的简单功能

Perl
– 一直觉得 Perl 是很神奇很牛逼的语言, 但是由于此语言装逼者众多, 且语言本身设计初衷很大一部分就是为了装逼, 而且本来很多不想装逼的因为语言特性又很容易将代码写的巨扭曲, 所以一直没能像别的那样连蒙带猜拆拆改改的去入门乃至提高. 为了使用和改动迪生大神的某 perl 脚本时下决心去学学, 去年换工作前利用平常和周末不加班省出来的时间完整的学了一遍 Perl 语言入门 (小骆驼书), 感觉确实很精妙很方便, 但一直没实际用过, 有需要的时候大部分时间都顺手用 python 解决了, 现在恐怕又忘光了, 但是要捡起来应该比较快, 但要估计这辈子都不打算达到装逼级的熟悉和精通了, 打酱油的 3P 党就好 (Perl/PHP/Python)
– 系统入门过的语言, 从来没实战过的语言

果然都是杂而不精, 同笨狗一贯性格, 甚至现在都还有兴趣去看看 Go 和 Lua, 前者是因为 Google 和设计者名身在外想看看是不是能从中看出点什么未来趋势, 同时悟点以前没悟出来的本质性东西, 后者是听说游戏领域用的很多 (这个应该是受云风影响), 而且很方便实现 robots 做模拟测试, 想看看以后工作中是不是能用的上 (实在不知道 robots 翻译成什么好, 总感觉用 机器人 这个词怪怪的). 如果闲的蛋疼, 还想去看看 ruby 和 lisp, 一个是经常拿来跟 python 对比的语言, 自己一直用 python, 也想看看他山之石, 另一个好歹也活了这么久, 是跟计算机科学和人工智能一起萌芽发展起来的东西, 膜拜下也好, 而且随着多核架构和并行架构越来越普遍, 据说会更有优势?

不过, 要专注, 要做事, 要带人, 而且参考一贯的光说不练的风格, 估计也就这样了… 偶尔打酱油插科打诨还可以.

有些笔试题的存在意义就是搞笑么?

昨天有个以前一起玩 ACM 的队友跟我说个题, 说是前几天腾讯实习生招聘的笔试题之一, 原文如下

已知a[0],a[1]…a[n-1]
现在要构造b[0],b[1]…b[n-1]
其中 b[i]=a[0]*a[1]*….a[n-1]/a[i]
要求,不能用除法,不能使用其他任何存储变量,除了循环变量i,j之类的
要求O(1)的空间复杂度,O(n)的时间复杂度

关键是不能用除法

看到这题后的第一反应是这特么不会爆类型么? double 也经不起这么搞吧. 然后就冷静下来想怎么解决, 不能用除法就避开那个除法操作咯, 把 b[i] 的推导公式换成 a[0]*…*a[i-1]*a[i+1]*…*a[n-1] 就是了, 一看就像个 DP. 推了下后写了这么个代码 (假设所有数都是 int 且不爆类型大小)

// 先构造一遍, 使得 b[i] = a[0]*...*a[i-1]
b[0] = 1;
for (int i = 1; i < n; ++i) {
  b[i] = b[i-1]*a[i-1];
}

// 逆序, 使得遍历到 b[i] 时, sum = a[i+1]*...*a[n-1]
//这时候 b[i]*sum = a[0]*...*a[n-1]/a[i]
int sum = 1;
for (int i = n-1; i >= 0; --i) {
  b[i] *= sum;
  sum *= a[i];
}

然后被提醒说 sum 这个变量也不能有, 好像原文中是说了不能用其他存储变量… 但是这不还是 O(1) 的空间复杂度么, 腾讯好像经常喜欢搞这种无聊的要求 (卡一两个变量), 于是当场就怒了

叶文/Snoopy阿排 20:41:49
那把他写到循环里好了… -.-|
叶文/Snoopy阿排 20:42:32
老实说, 这个题出的很烂…
叶文/Snoopy阿排 20:42:36
烂的无与伦比
** 20:43:05
哈哈
叶文/Snoopy阿排 20:43:15
首先, 这种奇技淫巧没有任何意义
其次, 连乘更大的问题是爆数据类型…
** 20:44:41
是啊
** 20:44:51
关键一点就是没有任何意义
叶文/Snoopy阿排 20:45:41
而且, 要真抠细节, 他没说不能修改 a 的值, 我在做逆序的时候把 sum 换成 a[] 就行了

果然改 a 数组的值就达到目的了? 好像是? 这样有意思么?

最后, 真心求既不使用多余变量, 且不修改 a 的值的做法.

入手 X200 UltraBase

YY 了多年的 ThinkPad 底座, 终于用一个几乎全新的二手货圆梦.

以前没有本的时候就很好奇底座这个东西, 07 年在 G.sh 实习时第一次实际见识了底座的便捷性, 偷用过几次后发现各种爽, 后面一直没有自己入手, 一是没需求二是太贵 (全新的一千多, 太烧包了). 在淘宝上关注过二手, 但是总觉得二手贩子的货很靠人品, 而且如果不是当面交易, xx 成新总有不同的理解. 前几天某喵说今年你都给买了这么多东西了, 生日我送你点啥吧, 想了半天觉得自己没有急需的必需品, 想烧的东西太多太贵不符合攒老婆本的大方针. 但是某喵一直说还是送我点啥吧免得老觉得欠我的, 最后想起来笔记本底座这么一货, 说也不算贵, 就这吧.

淘宝上搜 “X200 底座”, 最近有成交记录的最便宜的是广州一个卖家, 340 的样子. 收藏夹以前莫名其妙还收藏了一个广州的卖家, 299, 加 25 顺丰, 评价不错, 跟老板聊了下也都是很实诚的人, 问了几个问题后就下手了. 一是为什么搜索搜不到, 解释是 “他家的底座一般都跟二手机打包卖, 所以设定了无法搜索到”, 这个解释倒是挺靠谱的, 不知道淘宝是否真有这个功能; 二是机器成色九六成新, 功能齐全, 没有钥匙但是有光驱位减重模块.

昨天下午卖家在广州发货, 今天下午收到顺丰快递, 拿出来试用了下很赞, 比我想的还要好很多. 超乎想像的一是成色几乎全新, 果然不同人对成色的理解是不一样的, 这次运气爆表; 二是本来说没钥匙的结果带了钥匙. 其他就中规中矩了, 上图: (新浪微博图床)

X200 UltraBase 真机图

X200 UltraBase 真机图

接口
背部: 电源 (ThinkPad 标准 20V 接口), USB 2.0*3, VGA, DisplayPort, 耳麦, RJ45 网孔, 锁孔
右侧: 锁, USB 2.0*1, UltraBay (就是光驱接口, 也可以换第二块硬盘的托架, 数字小键盘什么的, 我这上的是个减重模块, 就是块造型贴切的塑料片, 免得空一块难看, 同时挡住免得进灰)
正面: Dock 接口, 很多定位孔和锁扣, 说明书, 漏水孔
左侧: 第二块电池充电器, 弹出按钮 (笔记本放上来旁边亮红色禁止图标, 按了变绿色三角后猜能扳弹出扳手, 类似弹出 U 盘的操作, 该操作笔记本上也能完成), 弹出扳手 (图上被我掰开了)
前面: 锁定, 开关, 立体声喇叭 (这个很出乎意料, 本以为就是两片孔)

使用小记
真的很方便很方便, 终于从 YY 变成实战了. 笔记本放底座上的时候机身自带的 VGA 接口失效, 必须插底座, 这个, 确实应该也不会脑残到放底座上还插显示器到机身, 而且 X200 估计也就只能支持两路输出 (这个没查资料验证, 印象中是). 笔记本放底座上的时候全部 USB 口都是可用的, 这样就变成了总共 7 个 USB (机身*3, 底座背部*3, 底座右侧*1), 底座上的插根数据线随时连手机倒是挺方便的, 或者长期挂个移动硬盘 (这样好像还不如把 UltraBay 用起来…). 为了验证底座上真的是立体声喇叭而不是两片孔, 用 Windows 声音测试后, 再开豆瓣电台玩, 上来就是许茹芸的日光机场, 飞机起飞的声音让我以为是风扇啸叫了… (一说明这个喇叭的音质改善还是很明显的, 我这种木耳都能听出来, 二是这个底座相对于我以前都在后面架点东西把笔记本底部架空的放置方法确实让散热变差了)

概率题, 另一个孩子是男孩的概率

好久没写日志, 今天看到个有意思的问题, 也能很快说清楚, 记录一下.

问题: 有一对夫妇有两个孩子, 已知其中一个是男孩, 则另一个也是男孩的概率是多少?
候选答案一: 因为生男生女的概率都是 1/2, 每次生育都是独立事件, 所以概率是 1/2
候选答案二: 因为两个孩子的性别总共有四种等概率可能, 分别是 男男, 男女, 女男, 女女, 现在已知其中一个是男孩, 排除掉 女女 这 1/4 的概率, 所以另一个为男孩的概率是 1/3

这个问题引起了很多争论, 两种说法的支持者都很坚定. 今天看了一堆讨论, 最后发现其实是对题意理解不一致导致的, 关键问题就是 “已知其中一个是男孩” 代表了什么意思.

说 1/2 概率的把那句话理解成 “已知大孩子是男孩”, 所以把四种等概率可能排除掉了 女男, 女女 两种可能, 剩下两种可能里, 小孩子是男孩的概率是 1/2.
说 1/3 概率的把那句话理解成 “已知其中有一个孩子是男孩, 但是不知道是大孩子还是小孩子”, 所以只能排除 女女 这一种可能, 剩下三种可能里, 另一个孩子是男孩的概率是 1/3.

感觉我应该把分歧说清楚了. 下次如果有人遇到类似问题的时候, 可以看看问题中的条件是否有 tricky :P

试了下 Win8 Custom Preview

大约半年前试过 Win8 的 Develop Preview, 当时就图个乐看了下, 没什么 metro 的应用, 传统 win 应用也没发现 win8 上用起来比 win7 爽的任何地方, 装好后就再没用过.

等 Win8 Custom Preview 发布, 看了下发布记录都是一片赞扬, 想 DP 算 beta 的话, CP 应该是 RC 了? 之前用 Win7 时, 就是 Beta 还很多小毛病, RC 开始用的非常爽, 果断跟进 Win8 看看.

昨天早上起来开旋风, 加离线任务, 用离线加速先扒到服务器上, 早上在家拖了一个多小时还没拖完, 4M 的网还是不够快, 晚上公司没什么人时下完, 用微软的 Windows 7 USB DVD Download Tool 刻到 U 盘上, 拆出淘汰下来的一个笔记本硬盘, 全新安装.

Win7 USB DVD Tool 官网地址太难找, 给个天空的链接吧 http://www.skycn.com/soft/57523.html
Win8 简体中文 32bit 旋风离线地址 http://url.cn/4C3m9c
Win8 简体中文 64bit 旋风离线地址 http://url.cn/1uTrBq

机器配置: ThinkPad X200, P8700 (2.53G, 2C/2T), 4G, 100G (7200rpm), GM45

感觉不到十分钟就完成了安装过程, 开始配置, 发现没抄序列号, 而且不像 Win7 可以先跳过去, 进系统后再配. 好吧, 拿手机一搜, 直接在搜索摘要里就看到, 所有语言所有版本都一样的: DNJXJ-7XBW8-2378T-X22TX-BKG7J

相比之下配置过程显得更慢, 绑定了 Microsoft Account (就是以前的 Live 帐号), 把头像等个人信息都拖了下来, 机器密码也是那个帐号的了, 并按提示输手机号好找回密码 (这就真是大杀器了). Gmail 内立马就收到两封邮件说绑定了手机号和新的设备名.

随便瞄了下, 和 Develop Preview 没啥变化, 某些细节做的更完善一些, 整体来看变化不大. Metro 下原生的天气, 地图, 股票等几个应用都被提示不在我所在地区的电子市场提供, 你妹的不提供你放桌面上干啥, 而且我去电子市场强制下载后还是跟我提示一样的错误, 明明后面真正的内容都出来了, 错误框挡得住操作挡不住显示啊. 电子市场现在还是没多少东西, 不知道是不是因为我装的中文系统外加把地区选成了中国, 游戏稍微多一点, 社交就只有 WordPress.com, 人人, QQ 三个.

Metro 下很多快捷键和手势果断还是需要有个简单教程的, 微软这个魂淡以为大家都是神仙自然就会了么? 我看了那么多发布会和试用记录, 没几个有手势教程的. 由于笨狗也没学会, 所以就不写教程误导群众了. 只知道 Metro 下按住大概标题栏那个位置, 拖屏幕左边是锁定在左侧, 拖右边是锁定到右侧, 锁定后拉分割线可以恢复全屏, 点右键呼出 Metro 应用的菜单, 按住标题栏往下拖是关闭应用 (不然按 win 键退出时只是把应用挂起), 鼠标停留到左下角可以呼出类似传统开始按钮的一个 Preview 界面, 鼠标停留到左侧可以看到最近打开且挂起在后台的 Metro 应用, 鼠标停留在右下角可以让右侧滑出一个操作面板, 可以进行所有应用搜索, 配置面板什么的.

很多发布会记录上说的流畅度笨狗完全没感觉到, 虽然这个机器配置是挫了点, 但是 CPU 和内存应该都是扛得住的, 只有可能是硬盘在拖后腿 (07 年买的希捷 7200.2 100G 盘, 现在随便一个大点的 5400rpm 盘都能秒杀他, 更别说微软官方演示用的 SSD 了), 而且打开任务管理器, 发现有几个系统服务非常吃 CPU, 平均有 1/3 以上是被系统服务吃掉的.

下了原生的 Cut The Rope (割绳子) 玩, 跟之前发布到 IE9 上的一样, 没什么新意. 系统自带的弹球大炮倒是变成真 3D 了, 只发现左右 Ctrl 是下面的挡板, 没找到发射和其他控制键, 球自己出去的, 而且 3D 太花了看不太清 :( 就跟我看魔兽 3 跟星际 1 的感觉一样. 下了原生的人人和 QQ, 其中人人能登陆进界面, 但是界面非常不友好, 很多留言看不全, 回复只能回楼主不能回具体的人, 等等等等各种不爽, 果断还是换用浏览器上了, QQ 更是连好友列表都刷不全就卡那不动了, 屡试不爽, 从没成功过. 装传统界面的 Chrome, 发现更喜欢 Chrome 渲染出来页面布局字体效果. 自带的输入法经常自作聪明切到中文, 按 shift 切换中英文有点小不习惯, 虽然现在写东西本来就是开着中文输入法也用 shift 切, 装 QQ 拼音纯净版, 很疼的发现很多程序默认就是中文模式的输入法了, 找了半天还找不到怎么改成默认英文.

播放音乐的有传统界面的 Windows Media Player 和 Metro 下的音乐, 这俩居然没法统一, 经常一点就变成了两边一起放. Metro 的音乐 Collection 似乎要联网? 而帐号又提示没登上去, 到底是天朝本身就被无视了, 还是 GFW 干的? Metro 界面的音乐没找到怎么建播放列表, 只能单曲播放, 疼…

晚上折腾完后关机, 之前看过说开机快关机慢, 看半天没灭就直接睡觉了, 结果早上起来还没关掉, 怒啊, 按电源键, 进入休眠了, 唤醒, 解锁, 输完密码后卡死了, 再休眠, 唤醒, 解锁时想了下直接关机吧, 这次倒挺快, 小几秒就熄了. 重新开机关机就很快了, 而且好像系统服务非常吃 CPU 的现象也有所缓解, 你这是要闹那样啊.

早上关了 Win8 后把硬盘拆出来, 插回之前的硬盘, 正常回到 Win7 下来工作, 周末如果有空再折腾看看. 总结: Win8 现在基本还是不可用状态. Metro 下的应用太少, 很多都不能用, 能用的很多也都不靠谱. 如果不用 Metro 界面, 没发现传统界面比 Win7 有多大优势 (资源管理器的 Ribbon 界面有点用, 但是也没有非常有用), 那为啥不直接用 Win7?

档案户口迁移记

去年曾答应某人写这么一篇教程, 后来想想这样对度娘太不厚道, 而且那个朋友最后也没走, 所以搁下. 不过很遗憾今年很多前同事也走了, 问起来似乎这方面有经验的就是我了, 那就写个教程吧. 以下内容适用于户口/档案由度娘委托海淀人才保管, 且是市内迁移到其他人才机构托管的情况, 其他迁移请查阅相关资料. 由于某狗没入党, 所以没有党组关系迁移的手续, 如果是党员的请注意党组关系要怎么转.

离职流程参考度娘内网, 有很详细的流程, 按图走就行了. 记得工作交接清楚, 能解除的报警短信都解了, 不要像我, 隔三差五还能收到报警短信, 都不知道找谁把那个报警去掉.

档案户口比较烦, 一步一步写.

1. 新单位调档函 (新单位办理)

到新单位要一份调档函, 一般都是一份打印好了直接填个名字就行的表, 并确认新单位的户口/档案托管机构是哪里, 去看看户口/档案调入须知, 比如朝阳区中智的集体户口迁入迁出.

2. 档案户口迁出申请 (度娘处办理)

度娘的档案存在海淀人才, 按海淀人才的档案调入调出页面上的提示, 打印调出表, 填好, 找直接经理签字, 找 HR 盖章. (我上次去的时候 HR 在大厦的 F1-CE 区集中办公)

一定要注意的是, 我们的档案里没有定级表 (研究生) 或见习考核鉴定表 (本科生), 其实已经成了死档, 无法调入调出, 还需要去海淀人才下载中心下载定级表 (研究生用) 或见习考核鉴定表 (本科生用), 跟档案调出表一样, 自己填好个人信息部分, 找直接经理签字, 找 HR 盖章 (什么定级工资啥的都空着, 海淀人才会帮你填, 日期最好也空着找海淀人才填).

离职的时候在 HR 那要求开一份档案/户口转出介绍信, 盖章.

3. 档案户口迁出办理 (海淀人才处办理)

从软件园广场坐 982 到四季青桥北, 下车后往回走小几十米, 路西就是海淀人才服务大厅, 进门, 右拐上二楼, 拿一个档案的号和一个户口的号 (似乎是一个 2 开头一个 3 开头).

办户口那人一般很少, 直接去说要办市内迁移, 他要什么材料就给他什么材料, 完了签字登记, 户口页原件到手.

档案排队人一般很多, 先在拿号那的收款处查下自己的档案托管费是否结清, 度娘似乎是半年一结, 所以一般会欠海淀人才几个月的托管费, 自己补上吧, 如果新单位给报销, 记得要发票. 拿着新单位调函, 档案转出表, 交费单, 定级表或鉴定表, 到办档案的窗口办理档案迁出, 他查好后会让你到另一个没有叫号的窗口去排队等拿资料, 等档案袋调出来, 把你该塞进去的塞进去, 一封口, 档案原件到手.

4. 档案户口迁入办理 (新单位委托的人才机构)

先看看要迁入地的要求, 要复印证件就复印证件, 要填表就填表. 户口还要求有无犯罪记录证明, 这个可以找四季青派出所开, 也可以在自己租房所在地找片警开, 我当时是没时间去四季青派出所, 就找社区里的片警开的.

这个不同的地方有不同的要求, 一般按其网站上的说明来就行了, 没什么要注意的坑, 不行的话问问新单位的 HR, 或打电话问问新委托机构, 而且办理过程一般都很快. (顺带吐槽下, 海淀人才的电话非办公时间没人接, 办公时间根本打不进去, 早上九点卡点打才比较靠谱)

5. 社保?

只要还在北京市, 社保什么都是无缝迁移, 可以不管. 但是缴纳方式可能要注意, 我就是新单位交社保交挂了才想起来要去办户口/档案迁移的.

我毕业时户口还是外地, 所以社保一直按 外埠城镇 缴纳, 到新单位时想户口都落好了, 应该是 本埠城镇 了吧, 结果 HR 告诉我社保交不上去, 还得按原来的交, 然后自己改. (两者缴纳的比例是完全一样的, 2012 年开始单位缴纳比例也完全一样了, 不知道还有什么区别, 我猜改成本埠的要靠谱点)

怎么改直接问新单位的 HR, 我得到的信息是提供: a) 身份证双面复印件 (复印在一张 A4 纸上); b) 户口本户主页 (显示户别类型: 本市城镇页) 和本人页的复印件 (复印在一张 A4 纸上), 后面的事情让 HR 办. 户口那个复印件必须要去托管的人才机构办 (办户口迁移时过自己手的只有本人页的原件), 而且建议是等新委托的机构落户完成后去办理. (这个我还没办完, 此流程仅供参考)

—-伤感的分割线—-

曾经一起追梦的少年, 终究也还是散落四方. 不同于毕业那几天内就人走楼空, 周围熟悉的人慢慢的一个一个少掉这才更让人难过. 祝大家一切都好, 保持联系, 坚持最初的梦想.

爆流量记

缘起

过年回家那几天发现此博客垃圾评论暴涨, 从一周几条涨到一天一千多, 当时懒, 人肉删了就没管. 回北京后发现还是这样, 删是删不及了, 只能把 Akismet 打开, 拦的效果还不错, 再要求访客第一次发表评论的用户要过审核, 这下好了, 基本上能拦住, 偶尔一两条漏的人看一下也就砍掉.

这个空间买的就很便宜, 一个月 5G 流量对纯文本的 blog 来说完全够用. 在搞垃圾评论期间发现流量暴涨, 在一月还剩下没几天的时候收到邮件说流量达到 90%, 当时想了下估计是发垃圾评论的在抓站把流量搞的, 等我把垃圾评论处理了应该就没事, 看后台监控好像没怎么涨了就没继续关心. 第二天收到邮件说流量爆了, 而且登空间后台都登不上去. 没办法只能联系空间提供商 flyssh.net, 说我是被垃圾评论搞挂的, 让帮看看能不能处理, 那边很快回复说看我爆的还挺厉害, 但是因为我也是受害者, 免费给我加了 5G 流量, 但是垃圾评论这事他们搞不了, 祝我尽快搞定.

解决

我观察了下空间后台的流量监控, 发现不是实时更新, 而是一天一次. 另外由于服务器在美国, 上面的时区是 -5:00, 所以是每天下午一点结算, 我搞定了垃圾评论后每天流量还是非常夸张, 之前正常时一天不到 100M, 现在却一天 1.5G+. 想不清楚到底哪里有问题, 看了下后台有 Apache 的日志, 就抓下来分析了下, 这一看不要紧, 怎么 404 的次数这么多而且流量都这么大?

HTML 返回 次数 总字节 平均长度
200 4219 103,647,235.00 24,566.80
301 2597 1,750,723.00 674.13
500 4 13,882.00 3,470.50
302 62 49,992.00 806.32
403 4596 15,855,133.00 3,449.77
304 274 57,134.00 208.52
404 10555 1,488,782,649.00 141,050.00

从大到小挨个分析, 最大的是 404. 看错误绝大部分都是因为下 win7 未遂. 想起来 yewen.us 这个域名曾经在度娘内部提供过下载, 放的是度娘发的 X200/X201 可激活的 Win7 Pro, 估计有人用迅雷或旋风下载过, 结果被他们记住这个链接了. 但是我都返回 404 了居然还不停的请求, 真坑爹. 拦不了迅雷旋风就从自己这改变, 将那个 win7 的链接, 以及下载主入口都添加 301 跳转, 让去找正确的 ourfcr.info 下. 另一个 404 来源的大头是最近被搜索引擎抓站, 因为我没显式提供 robots.txt 也返回 404, 应对办法就是加了个空的 robots.txt 到根目录.

404 的另外一个问题是返回页怎么也都这么大? 本来应该跳转到 /404.shtml, 一个不到 1k 的文件, 实际却跳到了 /blog/404.php. 中间换过一次主题, 新主题的 404 页面包括了整个主题框架, 就因为这所以数据大? 在弄不明白为什么 404 不是跳到 /404.shtml 的情况下, 果断将 /blog/404.php 先改成了一个纯 html 的:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>404 Not Found</H1>
</BODY></HTML>

其次是 200 正常返回, 看了下 Agent, 不少还是垃圾评论发送者和搜索引擎的爬虫, 这没办法, 只能希望搜索引擎爬完后不再爬那些过期页面, 垃圾评论被 ban 掉后不再骚扰.

再一个大头 403, 看记录似乎是某些搜索引擎或垃圾评论发送者的爬虫逻辑写的有问题, 每访问我 blog 的一个页面都会再去访问一个受限的链接, 从而引起大量的 403 错误. 这个不知道怎么写 robots.txt, 就放那吧, 等他抓完了应该就好了.

上面的所有所有修改都完成后, 单天总流量下降到 77.0MB, 算下来是绝对不会超过每月 5000M 的限额了.

其他问题

搞定流量问题后, 还有剩下几个不紧急的问题:
1) 404 为啥是由 /blog/404.php 返回?
2) 开 Akismet 防垃圾评论是不是靠谱?
3) 垃圾评论和爆流量都是换主题后导致的, 中间有联系么?

对 404 那个检查实验了半天, 应该是在 WordPress 开启固定链接时, 在根目录的 .htaccess 里加的 rewrite 参数将不存在的访问默认的都导向 /blog/ 来处理, 所以空间后台的错误页面管理失效, 我那个改动是正确的, 丑点就丑点吧, 反正正常人类浏览遇到 404 点下后退好了, 发垃圾评论什么的我才不管呢.

Akismet 固然是有效的, 但是很多时候也担心是否有性能和流量的问题, 搜了下果然还有更 ws 的解决方案, 那就是中文验证. 之前发到我 blog 的垃圾评论都是英文的, 而考虑到我的 blog 应该不会有全文非中文的评论, 所以只要限制评论必须带中文就行了. 修改主题的 functions.php, 在最前面加上这么一段

function scp_comment_post( $incoming_comment ) {
    $pattern = '/[一-龥]/u';

    // 禁止全英文评论
    if(!preg_match($pattern, $incoming_comment['comment_content'])) {
        wp_die("You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!");
    }
    return( $incoming_comment );
}
add_filter('preprocess_comment', 'scp_comment_post');

这下整个世界清静了, 连偶尔一两条 Akismet 放过去, 但因为访客第一次发言进入审核队列的垃圾评论都没有了. (上面那段代码很好理解, 就是把汉字在 utf-8 里的编码位置开头结尾过一遍, 看评论中是否有文字在其中, 不在就报错)

对于换主题导致的问题, 不知道垃圾评论是否有关系, 这个主题用的人挺多, 作者还有几个其他主题也在被很多人用, 应该不至于在主题中嵌代码通报垃圾评论发送者, 只能说是个巧合, 或者说垃圾评论发送者对这个主题有匹配模板, 能快速从搜索引擎那搜到且自动发垃圾评论. 爆流量则是有一定关系了, 一是主题允许换色, 导致多个 css 加载, 二是 404.php 等处理页面太大, 换色的问题想了下让大家忍受下我的审美观, 不准换就行了, 404 的问题前面解决过了.

附小广告
flyssh.net 提供的 ssh/vpn 都挺靠谱, 推荐下, 要折扣优惠码的可以私聊我. 他家虚拟主机如果最便宜那几档还有卖的话也非常划算, 可惜现在最便宜的也是 100RMB/年. 管理员都很 nice, 出问题时都很快很友好的帮助, 都是搞技术的, 沟通特别舒畅.

暖气漏水记

先提醒一下, 本篇是纯无厘头没逻辑的吐槽发泄文, 正常人看不懂是正常的, 也请不要拿此文水准来衡量我的语文水平…

去年冬天搬家后很快就来暖气了, 话说这边暖气那叫一个给力, 洗澡后穿个小内裤在屋里各种活蹦乱跳, 跟以前西二旗那个在家还穿棉衣的地方完全不可同日而语.

回家过了个年, 到北京没两天, 某天晚上门上贴了张条, 如下

喵滴, 某狗向来对这种威胁性口气极度反感, 话说你谁啊, 热力公司的还是邻居? 否则是什么意思? 好歹留一电话我也回过去问问是怎么回事吧. 不对, 难道是小偷探路?

过了小半个小时突然有人敲门, 一看是一老太太, 说是楼下的, 门上那条她贴的. 心想这老太太看起来也还挺慈眉善目的, 怎么写的条就这么凶神恶煞, 嘴上说我家暖气哪漏了我不知道啊, 不然你来看. 老太太说是主卧漏了, 我搬开挡那的小柜子, 还是没啥问题, 地上都干爽着呢. 给她留一电话, 说等热力公司的人吃饭回来过来看 (为啥她就不留个电话呢…). 再过小半小时, 继续有人敲门, 老天太带俩民工大哥过来看, 热力公司的果然就是专业, 一看就说这铝塑管在墙里这段折裂了, 你看水都顺墙下去了, 一边拿一不知道啥工具对墙上一戳, 墙皮一片一片的掉, 还真润润的在渗水. 得, 漏水得修, 大晚上的没法修, 第二天吧. 这房子还是从中介那租的, 房东联系方式都没, 跑到门口那个我爱我家, 居然还没关门, 让给联系房东看看.

第二天上午上着班, 接一电话说是物业, 让回去看怎么弄. 回去就过个马路的事, 但是到家没见有人, 下楼, 往小区门口走, 突然就看那老太太了, 然后话语权就被交到一穿公交制服的物业大爷那, 从这时候开始就持续两天的鸡同鸭讲… 先是联系房东, 因为我是跟中介签的合同, 所以要找中介才有, 中介那说他们管房源的小姑娘还没来, 其他人没权限, 你打电话给她看看. 打电话, 小姑娘说我还在路上, 要一个小时才到. 继续回中介那, 说你们就没个别人有电话的? 一堆人摇头. 转头问物业大爷, 大爷说他留的是一固定电话, 号都空了. 然后莫名其妙的中介那还是翻出了房东电话, 打过去, 说暖气漏了楼底下在闹, 然后就开始扯要怎么修, 别把墙弄坏了如何如何, 那个物业大爷继续各种莫名其妙的交涉, 啥有意义的内容都没说. 找热力, 还是昨天那俩, 开始说各种楼老了没阀门什么的, 这时候, 扯这些干啥, 又不是现在能解决的. 物业大爷就说大过年的给人家点钱呗, 我心想话说难道这还可以不给钱免费修??? 我又不是不给钱. 过来看了后说把从墙里走的管子锯掉换从外面走, 并加阀门, 让我去买料, 问阀门要啥样的, 说你一问人家就知道了, 结果, 在燕丰售货员拿出一外一内两种接口的阀, 我就无奈了, 说都给我吧, 我回去问要哪个, 多的回来退… 回去热力的人说现在搞不方便, 下午吧. 漏水处太低, 盆放下不去, 弄了个京东的塑料袋在那接漏, 半天才滴一滴.

下午继续看, 继续扯各种理由, 说楼里没有阀, 水箱放水要很久什么的, 要修得断两栋楼的暖, 而且修到晚上估计恢复不了供热, 会被一票人投诉, 还得再推一天上午来修吧. 期间房东神奇出现, 看了后说这么屁大点事, 我还以为要怎样怎样呢, 换根管子接个阀就够了, 回头找他要钱. 走的时候房东还特意说了下说楼下老太太各种挑剔, 最好别在上面动静太大… 话说我能弄出啥动静来啊. 房东比其他人比起来磨叽程度要好很多, 只是很奇怪为啥听他描述这楼里住的都是各种奇葩…

第三天 (喵滴居然都第三天了…), 上午九点那俩热力的大哥准时过来, 说很多外面的阀门都关好了, 就等水放完 (话说北京都管阀门叫节门的么? 热力的这么说, 物业也这么说). 本来这种楼应该会在顶楼有一个总闸, 热力的人第一次上去看看能不能关, 人还挺和气的说楼道里是该帮忙, 等第二次上去真关的时候就狗血了, 楼上那老太太 (怎么又是老太太…) 一开门就喊我有心脏病, 我才吃完药, 你们要干嘛要干嘛. 她家姑娘也说凭什么楼下漏水老要去找她家, 拜托这种楼就是这样啊. 更狗血的是热力的人找到那个阀后, 发现上面的铁圈掉了, 方形螺口被他家装修时锯掉了, 锯掉了… 这是怎样的脑袋能干出这事啊. 最后果然还是跟前一天预计的一样, 要关几栋楼的水. 期间中介那个房管姑娘也过来看是怎么回事, 刚好热力说最好进水出水一起换, 还要买管和阀门 (昨天明明说的只要一边 -.-), 就让中介的姑娘帮去买, 特意交代让拿着昨天买好的去对着买, 不然估计还要弄错要退. 等水放差不多时热力的大哥开始卸老的换新的, 就算拿了个盆接, 地上还是一滩水, 我看这架势估计拖把加抹布搞不定, 果断翻了件 BIT 的 T-shirt 出来让其光荣牺牲 (本来就洗成喇叭口了, 而且估计不会再穿了, 所以…). 下原管子的时候热力的大哥把手弄破, 再翻箱倒柜给找创可贴, 买这么久居然这时候用上了 -.-| 热力大哥准备把暖气片里的水也放掉好做别的操作, 但发现出水口的螺丝被挡住, 暴力搞了下后那个螺丝华丽丽的断了… 放弃.

折腾到快十一点终于弄完, 一地狼藉, 给热力的大哥一百块钱人工费, 说给我写个收条吧, 我好跟房东报账. 这热力大哥写了几个字后说不会写字… 我看电脑就在旁边给他打出来抄算了. 这时扭头一看房东又诡异的出现, 热力大哥很开心的说不用写条了直接要吧, 然后跟房东各种吐槽了下六楼的心脏病老太太, 东西一收就走了, 房东顺带看了下房子也走了, 我把地上清干净后, 想这事终于完了.

过几天再接到一陌生电话, 居然是物业打电话回访说弄好没, 答弄好了后又被各种没要点的磨叽叨叨了半天, 这事终于真的完了.

感想:
1. 为啥阀门会被叫做 “节门”? 哪个节? 截?
2. 为啥热力不用生料带而是用麻做接口防漏?
3. 老楼还是容易各种问题, 防御式编程哪都适用 (本例中是自家暖气出入口也留好阀门)
4. 北京大爷大妈各种磨叽各种语言混乱没要点, 沟通太费劲
5. 不讲究的老太太是很可怕的生物

互联网企业的 x 文化?

在去年的年度盘点里有提到一些公司文化差异的问题, 当时想说的是这个世界越来越 x 的文化导向, 怎么就变这样了呢? 民间口语中略有轻浮个人觉得还能接受, 可以用尚未开化完全或民风彪悍等理由解释. 但是在一些公众场合, 特别是有影响力的公众场合, 还是觉得很难忍受, 过 x 的文化在很多地方会被认定为性骚扰才对?

这个问题最早是看 CCAV 某年的内部年会 东方红时空 时想到的, 里面有不少荤段子, 具体细节现在回忆不起来了. 当时看到平常很严肃那些主持人什么的也这么恶搞和低俗, 有点震撼. 不过要说那个片子留下了什么, 最有影响力的应该是电影剪接恶搞的兴起 (胡戈早期的剪接作品都是如此, 一个馒头引发的血案和讲春运的那个), 以及敬一丹还是谁说的一句 “在这样的夜晚, 除了创造人类, 我们还有什么追求”. 但是跟后面的那些比起来, 这个又算很纯洁的了.

后面看到网络上一些对阿里系的传闻, 觉得明显过头了, 比如知乎上在淘宝的工作挑战这个问题中提到的男女关系, 这里面的内容我向一些阿里的员工求证过, 无法证实, 但是从交谈来看, 很多无法证伪不那么夸张的事情似乎也是事实, 甚至都算公司文化了. 另一件很震撼的事是 @Fenng 曾经在新浪微博上转过一个淘宝新人培训时跳恰恰舞的图, 但他转的那个原微博已经被删, 只找到这张图, 搜 “百淘 新人” 能找到不少淘宝人的辟谣, 结合人人奥斯卡上类似的那一段, 应该是谣言. 去年冬天跟一去了淘宝的大学同学聚时也聊了下这方面的话题, 感觉阿里在那方面的企业文化确实是明显超过我的底线了, 淫而不荡, 这个太难了, 在网络上见过太多说着说着就成真的事了. 个人认为之所以阿里系会这样, 是因为阿里是一个销售导向的企业, 当今社会很多生意和黄赌毒都有说不清道不明的关系, 那销售等对外团队中这种文化就比较盛行, 继而带的整个公司都是这样. 由于这个文化冲突, 找实习, 毕业找工作, 换工作时, 阿里系都是被我直接忽略的对象.

到人人后只是觉得这边的某些文化更本土化一些, 连加入的第一个群名字都叫 “土俗骚”, 日常也有一些比较三俗的事, 但是整体还好, 不会过. 在人人奥斯卡上是被小震撼了把, 虽然以前也听说过会很黄很暴力, 但是一看这名字 基情穿越, 再结合下内容, 确实也还是有点过. 听闻销售那边会比较狠, 技术方向会稍微好一点.

回想下以前呆过的那些地方, 似乎都比较保守, 外企对这个问题都很敏感, 毕竟性骚扰是很严重的问题. 百度也挺保守的, 最多就是很熟的小圈子内闷骚下. 是说这些地方的大部分人以前在学校还是比较传统的乖宝宝, 所以比较正派?

不管是假正经还是真正派, 希望自己能一直光明向前, 言行一致. 不抽烟不喝酒, 只混技术圈, 远离人情世故, 会丢掉一些东西损失一些朋友和感情, 但是留下的会是更经得起考验的朋友吧. 不抽烟是因为家里没人抽烟, 自己也没兴趣, 对身体也不好, 不喝酒是因为酒精过敏 (海鲜过敏一般认为是个悲剧, 酒精过敏我看来还算好事了), 只混技术圈是因为不会人情世故不会说话, 出去绝对被各种拍死. 似乎杜月笙还谁说过, 如果一个男人不抽烟不喝酒, 那还有什么靠得住的 (大意如此), 我说是因为那年代没别什么能爱好了吧, 现在随便找个爱好就各种耗时烧包了.

搜索和推荐的需求猜测

最近去围观了几场年会, 刨开文化的差异, 从不同公司里领导层和员工更关注更强调的点也是可以看出来不同产品的差异. 把自己看过做过的一些东西揉进去连起来看, 有一些关于 “需求满足” 的想法, 抛砖引玉, 请大家提供更多的观察角度和建议.

搜索和推荐, 以及计算广告

我不知道业界对 “搜索” 和 “推荐” 的定义分别是什么, 我自己的定义是
推荐: 对一个特定的用户, 根据其历史行为, 推测其可能的需求, 推送满足潜在需求的内容给用户
搜索: 对一次特定的请求, 推送满足该请求的内容给用户

这么一分, 搜索就可以看成是推荐的一个真子集. 搜索相对发展的比较成熟一些, 个人觉得现在的发展重点更多在 “理解需求本身”, “内容丰富度” 以及 “内容时效性” 几个方向上. 而推荐, 现在更多的问题应该都在 “推测需求” 这个环节.

计算广告, 则是在搜索和推荐的内容中加入商业结果, 本质是一样的, 只是需要额外考虑商业收益和可持续性. 任意一家商业公司都需要收入来维持整个公司运作和发展, 在资源受限的情况下, 一般都会先考虑商业结果接入, 毕竟活下去才是王道, 死了就啥都没得搞了.

搜索中的需求

搜索的需求都更直接, 而且相对独立, 比如我搜 “西二旗地铁站附近的饭馆” 或 “北京到上海的机票代理”, 直接给结果就行了. 而一些比较复杂的搜索, 因为事件本身需要更多考虑, 或是因为需求比较难用文字表达, 则会引起一系列的搜索, 但是这一堆搜索请求也都是可以比较容易将其黏合在一起成立一个系列事件. (各搜索引擎的个性化搜索中的短期行为个性化)

因为搜索需求是如此的直接暴力, 用户就是需要某物品或服务, 所以广告也可以直接暴力的给出, 效果还很好 (稍微好点的广告应该都可以做到百分之几的点击率, 转化率也不低)

也因为搜索需求的独立性, 偏搜索的产品在考核时更多都用 PV (Page View, 页面访问数) 说话, 用户黏度不大, 流失风险也不低 (甚至压根就没有用户概念, 只有请求的定义). 个人感觉这就是百度推新首页, 阿拉丁, 开放平台等产品的目的, 留住用户, PV 至上向 UV (User View, 独立用户访问数) 转换, 而且还能降低系统消耗并提升效率 (变现/搜索结果满足需求等效率)

推荐的需求猜测

和推荐有关的东西很多, Netflix 的影片推荐, douban 的读书推荐, 各种个性电台的音乐喜好推荐, 电商网站的商品推荐, Web 2.0/SNS 的内容推荐. 其中有一些是能比较直接带来收入的, 比如影片推荐, 商品推荐, 做的人很多且深入, 而另一些变现能力不明朗的产品, 比如个性化电台, 大部分都还只是玩票, 公司有人的情况下做着玩玩, 攒点技术.

Web 2.0/SNS 的内容推荐在推荐中的位置比较尴尬, 一方面用户需要更多更好的内容推荐 (用户需求强烈), 另一方面变现比较难 (公司投入回报比低). 为了留住用户显然要做推荐, 从中能挤出点商业需求弄点钱让自己活下去也是很多推荐团队要考虑的事.

回到推荐的需求判断, 一般推荐系统都是在根据历史行为猜用户的未来需求 (实时的直接需求那都是搜索, 不管是通用搜索还是站内搜索), 所以最朴素的想法就是用户过去看过啥, 喜欢啥, 关注啥, 买过啥, 就给 TA 推荐类似的东西. 这种简单粗暴的方法在影片推荐什么的会比较有用, 效率高, 相关性也好, 用户的个人喜好一般不会变化太快, 而且会一直有相关需求, 如果需要维持内容丰富度, 可以做一些随机化, 或用用户的朋友的喜好来推荐.

但是其他行业中, 就会有是否是 “持续性需求” 的差异. 电影我看了这部还会看别的, 吃饭我吃过这家店还会考虑别的类似的店, 但是有一些需求一次完成很久不会变, 比如我买了个路由器, 只要不坏或脑子抽了要骚包下, 一般不会去买第二个 (帮别人买这种行为应该分开考虑, 或者现在这种行为也很多?), 再比如学英语我报了个老罗英语后, 至少短时间内我不会再考虑去报个新东方或别的.

不同的持续性, 也应该有不一样的做法. 电影, 音乐等已经有良好分类标签的持续性需求, 可以直接提关键属性来做推荐 (主演, 主唱, 导演, 词曲作者, 风格等), 还会有一些影评乐评等用来辅助标记, 还有排行榜, 感觉相对比较容易, 至少做个原型出来要容易, 同时, 用户兴趣的相似度也是可以考虑的, 比如看了电影 A 的人都看了电影 B, 那现在有一个人说他看了电影 A, 我们也可以推荐他去看电影 B. 视频等没有明确分类标签的持续性需求, 计算被推荐条目和用户的相关性比较麻烦, 也不够准确, 这时候用户之间以及被推荐条目之间的相似度似乎是一个更可以考虑的点, YouTube 曾经发过两篇 paper, 其中 08 年的 paper 有很多很炫的方法, 但是同样的那批人在 10 年发的 paper 就回归到最朴素的相关浏览算法了, 而且还特别说了, 数据量大是一个非常明显的优势, 另外展示位置和展现样式的影响因子也非常非常大 (除非算法有天翻地覆的差异, 位置和样式才是最大的影响因子吧 :P). 而像衣服等 “有搭配的持续性需求”, 除了用户购买的相似度, 是否可以考虑从搭配需求上去做? 比如有 MM 买过一件大衣, 除了继续推荐类似的大衣 (通过所有用户的查看/收藏序列), 其实更应该去推荐可搭配的帽子/围巾/靴子什么的才对? 比如笨狗前年脑抽买了个大显示器, 过了一段就攒了台电脑主机, 然后还买了一个音箱… 这就是典型的可搭配持续性需求. 有关搭配性的持续性需求还没去找相关的 paper, 如果有麻烦告诉我一下.

人人的推荐需求

回到人人或其他生活平台级的推荐系统, 因为信息源过多且不集中, 所以简单的文本提取关键词然后按这些关键词推荐的方式绝对不会工作的很好. 在 NLP/IR/DM 支持下, 我们可以识别出用户讨论的内容, 如果能再识别出 TA 是在说需求还是在提供反馈评论, 那接下来需要一个需求转换图, 按这个有向图的下游节点来推荐就好了. 一个已经买了智能机的用户你给他看无线路由的评测或购买信息是顺理成章的 (当然前提是他还没买路由), 一个正在找留学信息的用户你除了推荐留学中介, 外语培训应该也是可以的, 甚至一些出国教程, 必需品购买等都是可以的 (教人打包行李的日志视频等等)

一个好的推荐系统最大的问题在于怎么识别或预判出一个合理的需求. 大概流程如下

1. 提取用户目前的兴趣点或兴趣方向
2. 判断用户是在 seek 阶段还是 review 阶段
-a. 如果还在 seek, 直接按搜索的方法做推荐, END
-b. 如果是在做 review, 转 3
3. 判断 review 的内容是否有重复性
-a. 如果有重复性, 直接按经典相似度的方法做推荐, END
-b. 如果没有重复性, 但是有搭配延续性, 转 4
4. 离线挖掘有搭配延续性需求的转换图, 按图指导推荐方向, END

在一个信息充分度足够的平台上, 应该更容易做 4 中的那个转换图, 否则平台太过垂直, 就只能做到 2.a 或 3.a 那个地步. 比如京东如果没有商品评论, 他只能知道我现在在京东上找什么, 买过什么, 然后在同类别内做推荐. 但是如果换到一个非常大的平台上, 可以根据一些蛛丝马迹来推荐更多相关的东西 (当然因为信息量更大, 推荐的准确度会下降, 但是整体来最后的成功数应该会接近或更高). 比如知道我买了机票后, 除了可以向我推荐相关酒店, 旅游等资源 (目前 qunar, kuxun 等已经做到的), 当地的纪念品 (以前在百度, 有出差回来带当地小吃给大家分享的传统), 甚至旅行用的拉杆箱 (今天在电梯里看到一个实际案例), 这些都谁可以推荐?

如果推荐靠谱, 而且有更多的信息提交渠道, 用户可以继续提供更丰富的信息, 形成良性循环. (说提交是从数据的角度来看, 产品上包装下可能就是用户非常愿意做的分享, 比如人气之星, 分享送礼等)