碎碎念

伪需求之员工考勤统计自动化

早两周偶然听的某公司发工资还是 HR 人肉拿 excel 计算的, 当时就觉得非常不可思议, 既然都有刷卡系统, 还有 OA 系统管漏打卡和请假, 难道最后不应该是自动生成工资单才对, 这也太浪费人力了

后来自己简单想了下, 生成工资单这个事, 应该绝大多数企业都会遇到, 除了像 Google 之流不打卡纯靠自我驱动自觉的, 那如果能有办法优化生成流程, 应该可以为企业节省相当的人力, 如果自己去做这样的服务, 是不是可以赚得盆满钵溢 (此处请脑补一个 2B 青年留着口水发白日梦的场景)

简单想了下对普通企业来说, 只要统计打卡, 然后处理公休假和员工请假的情况就搞定了, 公休假由管理员指定, 请假的事通过 OA 走, 小企业可以找个管理员, 大家去他那登记就行. 每月发工资前把大家的出勤情况公示出来让大家看是否有问题, 管理员做点微调修正. 这样不就可以把传统模式下的人肉统计解放出来, 根据不同人的说法, 每月耗这上面至少要 2 个人/天, 我如果能搞定 500 个小企业, 对每个企业收 200 每月的服务费, 就能月入十万 (此处请继续脑补一个中二青年打算拯救世界的傻缺场景)

但是这事情要真这么简单, 那也不应该只有我想到了, 于是我去找了青年企业家汤汤问他们现在的情况, 汤汤现在在浙江管一个家族里的厂, 我印象中规模是 50~100 人. 汤汤直接说我们不像你们大公司, 我们很土的用 excel 算的. 我吐槽说据我所知某公司也是这么干的, 那说明很多人这么土鳖的搞, 你们现在的人力和成本都花哪去了, 看看有没有优化可能. 以下省略废话若干, 直接列现状:

1. 因为是工厂, 所以计算工资单很简单, 就是统计每个人的出勤时间和加班时间
2. 需要一个人事专员来做统计和协调, 一般每月需要花两三天
3. 有打卡设备, 一次性投入 1K+ RMB (三主一备), 打卡设备可以导出原始记录
4. 两三天的人力中, 绝大部分时间花在跟人确认和调整上

列到这, 基本可以断定前面的白日梦是不太可能成真了, 因为:

1. 能自动化一点就是导打卡记录更快, 这个已经被解决了
2. 另一个之前 YY 的可以自动化一点的是能让确认调整更方便省时, 但是直观看好像也没省太多

再细说下之前想的确认调整过程的省时, 主要希望能工人自动化完成调整, 或有管理员简单高效完成, 但是这个的前期成本太高了, 还是有好多问题:

1. 工人需要培训怎么使用这个系统, 这在人员流动比较频繁的生产领域, 也是增加了人力成本
2. 一线工人不一定有设备完成, 那还是需要一个管理员, 而管理员的时间也还是没省下了
3. 另外招一个会这样自动化系统的人对沿海小工厂来说也还是过高的要求

最终结论就是他们的人力成本比我们想的便宜很多, 节省下来的钱绝对不够付服务费的. 需求证伪

一些 YY 中和实际情况不符的地方是伪需求的关键
1. 当前的打卡设备的成本没有我想的那么高, 而且自动化程度也不低
2. 对工人或管理员的要求太高, 培训成本还不够节省下来的成本支出的

小白日梦插曲, 随手小记一下, 欢迎讨论

用沟通模型分析社交网络用户诉求

关于在社交网络 (Social Network Service, SNS) 上, 用户到底想要什么, 这个问题一直在想并且想了很久, 最近对个人认识体系有个相对完整的想法, 感觉还是用沟通模型来解释比较好

在得到这个想法前, 翻看了很多别的地方的讨论, 包括知乎上被转比较多那个 “上人人网就是为了泡妞” 的说法, 如果抛开这些非持续性的稳定需求, SNS 也好, IM 等也好, 最后一定还是回到沟通的本质上来. 虽然人人的早期 (当时还是校内和 5Q 在 PK), 以及其他的很多 SNS (比如早期的 51.com, 还有陌陌) 的第一波增长都是约炮, 但是约炮的人毕竟还是有限, 做成十万或百万规模还行, 而且有道德和法律风险, 要想继续做大, 必须还是走正路, 就还是沟通

在这里把不同的沟通模型拿进来看, 个人感觉主要的差异性在: 1) 实时与否; 2) 反馈与否; 3) 私密与否; 4) 重要与否. 当然这个划分方法不一定能很好区别, 不过大体来看可以如此. 实时性是指是否可以异步进行, 还是必须参与方必须实时参与; 反馈是说沟通是否单向, 收到消息的人是否需要反馈, 在这如果加个强要求就是是否必须反馈; 私密是说这个沟通是否有限制参与方, 非预期内的人是否也能参与; 重要表示对参与方的重视程度, 比如是否需要当面或书面等方式表达. 按我这个定义, 把常用的方式列举如下 (后面符号分别表示是否 实时/反馈/私密/重要, o 表是 x 表否 ? 表可能)

会议 o/o/o/o
聊天 o/o/x/x
电话 o/o/o/o
短信 x/o/o/o
电邮 x/o/o/o
IM ?/o/o/x
SNS x/o/?/x
博客 x/?/x/?
微信 ?/o/o/?

基本上越重要的事情应该是需要当面说, 并且最好是有记录的, 而一些随便的东西就不一定要当面, 而且不一定要是同步通讯, 再随便一点就也可以不要求私密性, 博客谁都可以看, 在轻松环境下的聊天也可以任何人都来参与. 另外一个比较大的差异就是是否需要反馈, 这事是你自说自话就行了, 还是必须有其他人反馈你才能继续下去, 或有动力持续下去.

扯回到 SNS (特别是人人) 上, 这四个特征对应的分别是:
1) 实时性. 信息是否能被实时获取, 甚至实时的推送到收件人那并有明显提示. 更严格对应到人人上, 就是新鲜事的到达速度, 以及导航栏气泡/聊天窗等信息到达速度. 应该说人人对实时性要求没那么高, 最多也就是数分钟这个实时性, 有爆炸性事件能保证可以被传播, 热点内容的传播足够快就行, 类似 IM 那样的实时性要求并无太多必要
2) 反馈性. 用户行为是否需要有反馈, 且反馈是否需要有明确通知. 对应到人人上, 就是新鲜事是否可以被回复, 被分享, 被喜欢 (或其他的快速情感表达, 赞/踩等都算), 反馈的通知就还是气泡或其他推送信息了. 不过很多反馈会要求实时, 比如两个人版聊起来了, 这时候微观交流就会被从 SNS 变成 IM. 其他的反馈可以不那么实时, 但是一定要有
3) 私密性. 用户行为是否需要限制可见人或参与人. 对应到人人上, 就类似个人主页是否任何人可见所有内容, 相片等内容是否只有好友可见或更复杂的隐私模型 (这个近期也想写点东西说下)
4) 重要性. 是否需要区分不同重要性的内容? 比如我女朋友的新鲜事我一定会关注, 而一些公共主页, 类似我们爱讲冷笑话这样的, 可能就是兴趣来了看一下, 没兴趣时就不看了, 来自这些地方的新鲜事丢了就丢了我也不在乎

SNS 的默认模型不需要那么实时, 所以太过频繁的消息推送会让用户觉得反感, 获取信息的主动权应该由用户来拉, 除非是用户非常关注的信息值得去推送 (比如某屌丝暗恋关注的女神有新动态, 他可能需要去抢沙发以获得更多好感)
另外用户的行为需要获得反馈来提升 TA 的黏度, 所以当用户的信息是被朋友或陌生人看到且作出相应回应 (我看过了, 我觉得赞, 我来说几句, 我来骂醒你) 后, 这个消息一定要推送给 TA, 至于实时性与否可以分情况讨论. 另外如果是太频繁且无用的提醒, 那此反馈渠道基本就算废了

来看看现在人人网上的用户都是啥样:
1) 有人喜欢显摆, 发个照片或日志希望大家都来看看我有多牛逼, 这种人需要更多更实时的反馈, 所以消息应该尽快推给他的朋友或其他人, 并让他的朋友尽快反馈 (哪怕只是很简单的一个赞按钮), 这样能促使他更多的活跃
2) 有人喜欢观察, 就是看自己订阅的信息, 这时候需要让他的信息流的实时性和完整性更好, 同时因为其拉信息足够频繁, 所以可以让其自己决定查看方式 (新鲜事是否按时间序这时候就很重要, 同时是否支持分好友组或分类型查看也很有用)
3) 有人就是 “我跟大家说个事, 我说完了, 再见” 这样的风格, 以工作了发婚纱照和娃的照片居多, 不过其实他们还是希望有反馈的, 比如 “婚纱照真漂亮” “娃好可爱” 等, 但是他对反馈的时效性不敏感, 只要定期有一个汇总就好, 并且他很可能不会主动来看反馈, 需要我们去推送 (一天一次? 一周一次?)
4) 有人就是 “今儿大爷心情好上来看看朋友们有啥好玩的”, 以工作了偶尔上来看的居多, 这些人需要尽可能快的让其获取关键信息 (主要是为了完成反馈操作), 然后再用起感兴趣的内容做扩散阅读希望能让其有更多的黏性

第一种和第二种人会是重度用户, 但第三种第四种才会是更多人的存活状态, 而且大部分人同时兼有 34 两种特性
第一种人需要的是更好的发布器, 让其发布内容更方便更爽, 同时把反馈尽可能快的推送给他并让他获得满足感, 并能跟其他人互动起来
第二种人需要的是更合理的信息获取方式, 优化新鲜事, 相册分享等浏览方式 (比如严格按时间序, 指定用户范围或新鲜事类型), 并给他足够简单高效的反馈让 13 两种用户能持续活动
第三种人更需要一个合适频度的反馈渠道 (邮箱? 合并了的手机通知?), 让他们能从发布信息获得成就感, 并保持活跃度继续发布内容或跟人交互, 过频的通知反倒会逼走他们
第四种人的信息流组织是个很有挑战性的活, TA 的收件箱可能压了一堆没读的东西, 那怎么把重要的东西挑出来让他不要错过, 同时也满足 13 两种人的反馈需求, 这个事情很重要, 那新鲜事就不应该按纯时间序而是按重要性组织, 或单独提供一个要闻模块, 以在可能很短的访问时间里更多完成他的信息获取需求和让他完成其他人需要的反馈行为

具体到一些产品上, 个人感觉应该做的
1) 消息本体, 保证其能被进行回复/分享/喜欢等操作, 并且消息展现的不同地方体验一致 (不管是新鲜事, 还是个人主页或时间轴, 以及终端页)
2) 新鲜事, 保证信息不会因为消息传递阻塞或蹩脚的排序/折叠/聚合方式而丢失或有很大延迟, 同时提供多种查看方式让用户自己选 (时间序/分组/分类/特别关注等)
3) 分享/收藏, 有算法聚合或人工推荐的公开信息聚合页供随便逛的用户打发时间, 也有多维度的查询方式让用户定位自己看过或收藏过的特定信息
4) 搜索, 类 Facebook Graph Search 那样的有点科幻, 而且实用性不高, 能按关键词搜人, 个体的新鲜事中的文本标题或正文, 以及全站公开信息的文本部分就 OK (比如状态, 相片/相册描述或标题, 分享的视频标题和评论等, 特别是用户自己的新鲜事内部搜索)
5) 通知系统, 更精准的消息推送, 现在导航栏上有消息气泡, 加好友气泡, 提醒气泡, 这仨应该被合成两个, 如果需要有实时的聊天需求, 类似私信或站内信这样的可以单拉一个气泡, 且无关紧要的进 ticker (这是个神器, 后面会讨论), 如果导航栏上的通知做的足够优, 网页内的右下角弹窗应该也能被整合
6) Ticker, 不得不说 Facebook 的这个东西是我在其他地方都没见过且我觉得非常赞的神器, 这里面糅合了不重要的新鲜事和通知, 保证信息的完整性, 且因为其占据的位置不大且不那么醒目, 又不会干扰用户正常行为, 同时 ticker 可以作为实验田, 我们猜测不重要的新鲜事可以试着先移到这, 如果用户还持续交互, 说明用户对此消息源或此类型的消息还是感兴趣的, 应该被更重视用更重的产品来展现, 通知反馈也是一样 (比如我的好友 x 跟 y 加为好友, 我要不要也跟 y 加为好友), 另外如果要对信息流做货币化, 这里显然也是个很好的切入点(做广告做久了的职业病, 啥都想到卖钱上去). 总之, 这个东西是少数几个我觉得一定要从别人那腆着脸抄过来并将其好好优化的功能之一
7) 隐私体系, 大部分人当这个地方是公开场合 (谁都能看, 比如微博), 或有限开放的公共场合 (大家对人人的默认定位, 好友可见, 其他人看我的内容被分享的情况了), 如果一旦有不适合按这个规模公开的内容, 用户又找不到方便的手段限制, 那势必会流失或遗憾 (比如我有一些以前的猥琐照片想分享给大学同宿舍那几个哥们, 现在就是放哪都不好, 人人上的隐私体系管不住, QQ 群别人不一定看到, 大家的交流也是时间序的而不是围绕这张照片进行, 不过 QQ 空间似乎有这样的功能了?), 而相反, 如果给用户提供隐私选项让其对部分内容加限制, 反倒应该能促进他更多的发布公开内容, 并让全站良性循环

租房提取公积金流程记录

更新 2014-09-30, 因政策变化, 本文部分内容已不适用 (新闻来源: 人民网: 北京提取公积金无需购房合同 租房可3月提1次)
更新 2013-04-18, 发票和租房合同原件已取回
更新 2013-03-28, 钱已到账, 发票暂未取回

大约半年前发现公积金放在国家那是不划算的 (计算方法见最后), 所以一直想着把钱盘出来, 最近完成了提取的大部分步骤, 把过程写下来供他人参考

步骤和注意事项
a. 开租房发票和完税证明
a.1) 房屋所在区的任一地税或代征点办理, 代征点一般几个小区就有一个
a.2) 带上 1/2/3/4/7/8 去, 交租房合同上总租金的 5% 税费, 一般都只收现金, 得到 11/13
a.3) 注意发票的付款人是租房人, 收款人是房东
a.4) 注意完税证明的纳税人名称是房东
a.5) 注意发票上的租房时间和合同一致
a.6) 注意发票上项目只能是 “房租”
a.7) 注意发票上总额除以租房月数后是整数
a.8) 房产证在最近一年及发票上租房周期内没有其他租房提取记录
b. 在中智办理支取手续
a.1) 中智在汉威大厦 27 层 4 号窗口
a.2) 先在后面电脑上提交电子申请, 桌面第三个快捷方式, 点打印 (实际不用打出来) 后再提交
a.3) 提交 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15 给窗口工作人员, 验证后当场返还 1/3/5/9
a.4) 据说 7/11/13 办妥后由驻公司的中智员工还我
a.5) 每月 20 日前办理当月的申请, 月底到账
a.6) 提取人最近一年需没有提取记录

所需材料
1. 房东身份证原件 (a/b 用, 验证后当场返还)
2. 房东身份证复印件 (a/b 用, 收走)
3. 房东房产证原件 (a/b 用, 验证后当场返还)
4. 房东房产证复印件 (a/b 用, 收走)
—- 如果房产多人所有则需每个人的身份证和房产证原件复印件
5. 租房人身份证原件 (b 用, 验证后当场返还)
6. 租房人身份证复印件 (b 用, 收走)
7. 租房合同原件 (a/b 用, b 处收走, 办妥后归还)
8. 租房合同复印件 (a/b 用, 收走)
—- 非中介用合同建议用北京住建给的模板, 没用的可以删掉, 关键是要有房东和租房人信息, 房屋地址, 租期, 租金这几个
9. 支取用银行卡原件 (b 用, 验证后当场返还)
10. 支取用银行卡复印件 (b 用, 收走)
—- 不强制要求公积金联名卡 (反正是一年一次的操作)
11. 租房发票原件 (步骤 a 获得, b 处收走付款人一联, 办妥后归还?)
12. 租房发票复印件 (b 用, 收走)
13. 完税证明原件 (步骤 a 获得, b 处收走, 办妥后归还)
14. 完税证明复印件 (b 用, 收走)
15. 提取申请书原件 (b 用, 收走)
—- 中智的在这里下载

提前支取的理由和其他的一些感慨
公积金中心的计息方法是: 当年缴存的公积金按活期利率算存款利息 (目前是 0.72%), 去年及之前的按三个月定期利率算存款利息 (目前是 2.75% 左右)
一般的投资收益应该在 4% 以上 (随便哪个银行的理财产品都不会低于 4% 吧? 这还是最稳妥收益最低的)
提取公积金要交的税是 5%
所以, 如果一年半内不买房, 花 5% 的手续费 (税费) 把钱取出来做投资, 一年半内能回本 (如果有其他更好的投资渠道回本时间更短), 而且钱放自己手里比放国家那显然更放心, 谁知道政策以后会变成怎样

感觉我办这坨事还算是没怎么折腾, 关键是有朋友肯借我房本和身份证用, 不然就算是正常租房, 一般的房东也绝对不会把这两样东西给你哪怕半天, 而且对应房本在这个时间段内还不能有其他租房提取, 所以现在中介帮弄都是要 15%~20% 的手续费, 他们租房本什么的也还是挺贵的, 而且都是把一个房本对应到好几个合租租房合同上去帮人取. 另外公积金中心不对个人, 必须是以公司或人才市场的名义去, 这应该也是中介手续费高的原因.

ps. 朝阳的公积金管的比较严, 中智卡的更严 (那个房东房本和身份证原件就是中智的土规定), 所以如果在海淀能取建议在海淀取了, 据某些中介说可以用买房等发票套出来, 最低的时候手续费只要 3%

12306 和火车票那点事

每年春运时铁道部和 12306 都要被喷死, 自己也和 12306 斗智斗勇了两三年, 这个冬天跟着 @scat 君折腾了很久, 随手写点什么说说这事.

提前说明我只是火车迷, 不是铁道部的人, 用不着帮铁道部把黑的说成白的, 我自己也有各种怨气要喷, 只是希望能提供一个相对客观的事实供大家来参考参考. 前半段跟喷子对喷和对 12306 的吐槽的会多点, 后面有一些胡思乱想的一些可能称得上是建议的东西.

喷子和不那么容易的 12306

然后以一个标准喷子的口气对那些说 12306 做的很烂随便找个本科生就能写的人骂一句, 去你大爷的什么时候国内的学生素质这么高你有多少我要多少; 再对一些所谓业内人士说的这种负荷找淘宝什么的能轻松解决的观点说句很抱歉, 这两个虽然在规模和突发性上有不少相似点, 但是还是有很多不一样的地方, 比如淘宝上一件商品如果有多件是无区别的, 而火车票一张就是一张, 有人买到上铺还不干非得换下铺, 而且这里面一张票就是一个锁, 而且淘宝超售了最多补货或退款, 火车可不是说加床或加位子就能加上去的, 而且要是先跟你说买到票了然后说不好意思超售了我们退钱给你, 不知道有多少人想直接穿过显示器把那边的服务器给砸了; 最后说说 12306NG 那帮人, 最近没关注, 一年前看了下那个论坛和所谓的发起人, 很可惜里面大部分都只是夸夸其谈一些自称砖家的喷子, 很多人估计都没做过百万规模的系统就敢各种意气风发指点江山, 这种人都能说出靠谱的整体解决方案和细节注意点来那就见鬼了.

喷爽了咱们来摆事实讲道理说说 12306 的各种不容易, 先说我们是怎么搞他的:

> 最早的 12306 基本上就是一个高校实验室的产品, 空闲时段可用, 用的也还凑合. 据说有收钱不出票的情况, 不过我还没遇到过, 所以不好评论. 退票的钱不是实时到账的, 快的几天慢的一个月我也都遇到过

> 等到了高峰期的时候, 开始各种登陆不上, 各种刷不开页面, 或提交不成功. 这时候最大的问题是带宽和前端服务器不够, 压根抢不到一个有效连接.

> 等把带宽问题基本解决后, 发现每一次页面加载都需要做太多次 GET 操作, 而且很多页面数据不优化不压缩, 虽然系统还用了 jQuery 什么的至少看起来算是跟上先进生产力的技术, 但是整体还是比较糙, 据说是用 CDN 和大量加机器来算扛住. // 不过到现在一次页面加载需要获取的资源还是太多, 而且一开始没做内部的负载均衡, 容易出现一个 ISP 解析过去都在少数几台机器, 所以同一地区不同 ISP 接入的速度会有明显差异 (比如北京联通用户多, 基本就卡成幻灯片, 用用户少的电信线路就相对靠谱点), 而且个人认为不少机器加的很浪费

> 有了缓存机制后发现一个巨坑爹的地方, 12306 似乎把后台实时数据和 CDN cache 在某些地方用反了, 比如余票等实时性非常强的数据反倒在前端有一个 cache, 平时还好, 但是高峰期放票瞬间这个 cache 就要命了, 如果你赶巧碰上一个更新较慢的 CDN, 估计等你刷到数据时票都被别人买完了 // 这个问题现在还是没有解决, 所以才有使用一些专线 CDN (比如传说中的海外线路) 可能会保证网络比较通畅 cache 更新也比较快的说法

> 等机器, 带宽, 缓存什么的搞差不多后, 开始有技术流的 hack 手段出现, 曾经有这样的刷票方法: 要买 2.3 的票, 但是还有几分钟才放票, 不确定自己是否一定能命中更新较及时的 CDN, 于是可以先查 2.2 的票找到对应车次的任意席位的票, 在填写乘车人信息时改 POST 请求中的参数, 把时间改成 2.3, 席位改成自己想要的 (比如硬卧), 然后强制提交, 只要到了放票时间, 不管自己连的前端服务器是否更新余票缓存, 都可以把这个请求提到后端进行处理. 这方法我用过, 很爽, 可惜现在被封了. // 封的手段是在提交订单时加了一个加密串, 发到站, 时间和车次必须和加密串对应才能提交. 不过这个加密串在同样条件下每次查询都可能不一样, 但是同一个验证码可以用无数次 (或者是一个比较长时间段内都可用, 没确认), 所以可以用大量的机器密集轮询 12306 不同的前端服务器获得对应的加密串, 一旦有这个数据就可以构建数据强制提交了. 此方法目前还可用且有人在用, 不过需要考虑 12306 现在开始限 IP 或限同 IP 的连接数了

> 12306 注册帐号需要提供证件号, 不能坑别人, 所以默认大家一人就是一个帐号, 同帐号只要有订单没完成, 就不能去下别的订单, 如果一次要买不同车的票, 那就疯了, 还好 12306 允许护照/港澳通行证什么的也可以注册, 谢天谢地又多几个帐号可以一起刷了, 果然办个护照什么的还是没坏处的. // 这个限制其实也能绕过去, 你收集一堆朋友的帐号给你抢一张票不就行了. 还有个更 ws 方法能很容易搞到成百上千的帐号, 个人使用怎么着也都够了, 具体方法还是不说了, 免得被封

> 能搞到提交所需数据, 也有足够的帐号去刷, 那接下来的问题就是怎么把能自动化的地方自动化. 各种抢票助手的原理大致都是做一个浏览器插件, 自动重试查询, 并且监控对应的票额, 然后把一些能自动完成的步骤自动完成 (比如点下一步什么的) // 这里还是有带宽的问题, 其实并不是每次都要把所有的流程都走完, 获取的数据也只要核心数据, 不少插件应该没考虑好这个, 还是对用户的网络有比较高要求. 另外 12306 也做了一些限制, 比如连续两次重试时间不能小于五秒, 偶尔也改一下 URL, 做个 302 跳转什么的. 不过整体而言这个封不了, 完全模拟用户行为, 后面的一些 hack 也基本是这个思路

> 一直到上一步, 应该说已经能将大部分操作自动化完成, 唯一的麻烦就是验证码. 12306 一直到 2013/01/25 用的都还是用一套非常弱的验证码, 字迹清晰颜色差异明显, 最关键的是字体似乎只有两种, 随便找个学过基本的图形学的本科生应该就可以搞定, 先做二值化提取出有字的部分, 然后做水平和垂直方向的投影, 按区块直接跟已知的单个验证码特征库最对比就可以了. 死猫君和其同伙用 C/C++ 实现, 能做到 1ms 一个验证码, 99%+ 的准确率, 12306 在这样的识别效率面前已经完全不设防, 想怎么搞就怎么搞. // 但是超简单的验证码已经从 2013/01/26 开始变成了一个相对复杂的, 原来的方法需要做一些优化才能用, 且识别率可能不那么高

> 就算验证码的识别率下降, 但哪怕只有一两成的成功率, 机器还是比人快的. 12306 的对策一开始是加浏览器参数校验, 如果是裸的 POST 请求就拒绝掉, 但是 http header 这种东西, 自己人肉走一遍流程把对应的数据扒下来让机器模拟还是毫无压力. 接下来 12306 是不停的改接口 URL, 虽然最后还是落到同一个处理接口上, 但是加上了跳转判断, 直接提到最终接口的会被拒绝, 到这就变成猫鼠游戏, 12306 改一次 URL 对应的机器行为就要跟着改一次. 估计是今年各种机器行为搞 12306 搞的比较疼, 虽然他们已经提供了超过一千个对外 IP, 也还是怕被这么搞, 接下来的一招是加了更严格的间隔时间限制, 这时候机器行为的成功率就很重要了, 一旦重试最少五秒就过去了, 而且有一些步骤加了很猥琐的隐藏等待时间, 机器提交太快会报错, 而慢一点接近人的速度就没事. // 最后那个限制真心无解, 不过对手快的人也是很伤的, 别人眼尖手快你还能不让别人买? 跟 @scat 吐槽说看来 12306 对他们的网络很有信心, 正常人五秒内是刷不开第二次或能提交上请求的. 另外机器重试时加个随机附加时间, 可以对人的行为模仿的更像, 这个 12306 没法做特征库来判断是人的行为还是被机器刷

> 攻防到这阶段, 两边基本就没什么办法了, 不过 12306 干了件更 NB 且 WS 的事情: 同 IP 限制登陆人数和封 IP. // 不知道 12306 怎么判断的, 反正 jike 他们那种抢法绝逼是要被封 IP 的, 但是很多企业对外出口就一个, 要赶上员工集体抢票, 结局就是集体悲剧, 反正我在公司悲剧过几次 -.-|

目前拉锯战就到此, 如果是真的搞技术的人, 要是自己的产品成天都在被一群这么蛋疼的人这么玩, 估计早就疯了, 所以说 12306 今年系统一直还可用 (虽然还是会卡还是没有票), 且一直在增强防御, 还是挺不容易的

关于 12306 和铁路客运的吐槽及建议

前面在同情了半天 12306 后还是吐槽没票这个现实, 没票的最大原因还是运力不足, 大家都想过年前一天到家, 那单日发送量必然爆表, 但车就那么多, 只能靠抢

运力不足有一些变通的方法, 比如加挂车厢, 动车重联等方式来提升已有运力, 这个大家都很爽; 比如卧代座 (硬卧车厢当硬座买, 一节车厢大概多卖 20 来张票), 这个大家也觉得还好, 遇上比较 nice 的车上铺还能爬上去轮流躺着睡觉; 比如开临客, 这个似乎就不那么灵光了, 大家对临客的印象还是又慢又破的绿皮车, 经常让车和晚点, 殊不知现在连高铁都有临客, 只是不挂 L 的车次, 临客最大的问题还是时间不好, 一般都半夜出发或到达, 除了这个其他都还好, 我坐过北京到南宁的临客, 空调车人也不多, 除了慢了点其他都巨爽; 比如提升车底周转率, 普速时代最多就是把长途车到终点后再开个短途, 把到下一次发车前的这段间隔用起来, 这个意义好像不大, 而且本来车还是要整备的, 但是动车和高铁时代提升周转率就很有意义了, 同样的北京到武汉 1225 公里, 一路不停按 250 的速度要至少五个小时, 但按 380 的速度跑就不到四个小时了, 同一列车底长短混跑, 一天可能就能多开一趟车, 可惜这个被现任铁道部的猪头领导以安全为由强制降速, 而且给动车组生产厂家的订单也不加, 导致需要车的时候没车, 单车底也还有检修里程限制, 不可能 7*24 连轴转, 坑爹啊这不是

另一个导致运力不足的问题是车票价格, 现行火车票价格已经十多年没变了, 期间还经历了六次大提速, 其他交通方式和物价已不知道涨了多少, 偏偏铁道部自己还涨不了价 (发改委什么的一堆流程要走), 所以只能绿皮改空调, 普速变快速 (虽然实际时间可能还慢了) 来曲线救国, 动车和高铁的票价是明显上了一个档次, 所以也能解释为什么有高铁后普速必然会少一堆, 大部分国人还是缺钱不缺时间的主, 特别是学生这种巨叽歪的群体. 造成同样结果的还因为人民群众的生活水平提高了, 也娇气了, 以前有硬座就很好, 现在很多人还非卧铺不坐, 最狠的是只要硬卧下铺的, 人家理由多充分: 软卧太贵硬座不爽上铺难爬, 需求就这样被密集化 (很多人都是只坐某趟特定车的某种特定铺)

在供给远小于需求的供需现状下怎么搞都无解, 那只能把问题退一步, 让大家怎样以一个 “公平” 的方式来搞. 我自己想过一个方案, 后面有一次问了 @cnberg 印度是怎么弄的, 发现跟我想的基本一样, 我先说说印度怎么订票:

1. 订票提前周期很长. 订票时
– 1.a 如果有票则付全款出票, 完成
– 1.b 如果没票则交押金 (大约 10 人民币) 进入一个排队队列
2. 排队过程中
– 2.a 可随时查询在队列里的位置, 当新票额放出或有人退票或退出排队, 你在队列里前进, 排到后付全款出票, 退押金, 完成
– 2.b 如果到开车时间还没排到有票的位置, 退押金, 完成
– 2.c 主动退出排队队列, 押金不退, 完成
3. 退票
– 3.a 退票收取大约 10% 的手续费, 完成

这里面最爽的是引入了排队机制和获知自己排队位置的查询接口, 让整个过程对乘客而言更透明. 但是当时我们讨论时也说到, 中国春运是刚需, 提前半年估计也会在订票的时候就把系统和队列压爆, 只是把现在提前 20 天的坑爹提前了而已, 而且对那些没法提前那么长时间确定行程的人是一种伤害. 而且估计印度网民远没中国多 (具体数据没查, 但是用脚也能想到), 所以系统压力没那么大

我的方案比这个更激进点, 不同的是
1. 排队时就可以先付全款, 这样一旦排到票马上就能出票, 不至于说排到票时自己不方便, 因为没法付款而导致被从队列里强制踢出去
2. 退票费按退票时间到开车时间的间隔依次递增, 越晚退票手续费越高, 这样也让那些买多张票备用但最后只用一张的人提前把资源让出来给有需要的人 // 现在就很多人买好几张票备着, 走之前才退, 结果其他有需要的人也来不及捡漏

这些都是比较大的系统性变化, 我们这些玩票也就吐吐槽, 如果有不妥或没考虑到的地方也欢迎讨论

落到 12306 本身, 感觉可以提供一个精简版入口来满足订票需求, 像界面/退票/添加修改常用联系人之类的操作很少用到, 没必要每次都为了兼容这些操作而走那套有巨多图片和 .js 加载的系统, 刷票助手什么的其实就是在帮忙减轻网络压力, 反正大家只要能定到票, 直接做个纯文本界面也无不可

2012 年度盘点

从 2006 年开始每年写年度记录, 继续保持下吧.

先流水账记些大事:
一月, 公司年会, 蹭百度年会, 刷回家火车票, 暖气漏水
二月, 搬到静安中心五楼, 出去拓展
三月, 去围观了场婚礼
四月, 入手 X200 底座, 买了辆小折, 刷街, 奇怪的去了趟环铁
五月, yewen.us 续费, 换手机, 买 new iPad
六月, 伪球迷看欧洲杯, 正式刷了一次铁博
七月, 搬到静安中心二十五楼, 开搞新鲜事, 爸妈来京, 买 X200 电池, 恶意刷小米之家
八月, 新室友, 去深圳围观架构师大会, 买 M4
九月, 校招, 去泰山, 装了一堆新配件弄成整机带回家
十月, 宅家, 去武汉校招, 围观死猫让人压力山大的个性婚礼, 续租和中介折腾
十一月, 还是校招, 帮小强跑一些结婚材料, 又去围观了个婚礼
十二月, 校招终于结束了, 工作上有明显产出, 组织 PUZZLES 群聚, 滑雪, 入手 650D

关于生活, 最大的事情该算全家对喵的全面认可, 但是某喵那边还没搞定, 还死活不让我说, 但是我又想显摆, 所以全年有不少事情只能这样被隐藏掉, 简单的说就是 “笨狗热恋中, 还没结婚生娃, 很幸福”. 全年又围观了很多婚礼, 看很多人生娃, 果然都已经进入到结婚生子的年龄, 说到这还是不展开了, 参照前一句打引号部分好了. 另外今天回忆时发现, 原来今年是最近几年唯一没有搬家的一年, 暖气漏水折腾过一次, 到期续租时被中介坑过一把.

关于工作, 搞了半年, 基本上从广告抽出来, 留下一个还凑合的摊子. 很遗憾的发现, 在互联网, 只要不是在非常大的公司或垂直划分的很清楚的地方做别的, 还是比较难和钱绕开. 换到新鲜事上, 在年末最后一段时间效果飙上去, 有这样一群非常给力的同事和朋友, 真的很赞. 对数据的认识又更深刻一些, 驱动去弄了很多数据方面的事情. 校招占了今年下半年很大的工作比重, 见识了各种强人和奇葩, 最后抢人还是抢的很辛苦, 但为了保证持续产出, 人的质量一定要保证, 今年各种事情都再次验证了这个定理. 因为一些奇奇怪怪的原因进了人人的技术委员会, 参与职称评审, 出去参会, 看看不一样的事情其实挺好的. 团队今年在公司获得一人次季度之星, 一人次最佳新人, 一次最佳团队, 当奶妈补血当的应该还算不错.

个人习惯上, 今年看了不少杂书和技术方向的书, 也在自己记一些笔记, 过的勉勉强强, 不算上进, 但也没完全颓废. 写 blog 明显懒了很多, 有一些东西是不方便写, 有一些就完全是因为懒. 因为在公司每个月混电影票, 所以今年多去电影院看了几场电影, 算把生活品质提升了下吧. 最近给自己定在公开课学习/复习一些东西的目标, 希望能坚持下去, 不学习, 要完蛋.

身体方面, 年初和年末去滑过两次雪, 中间有段时间每天做操, 骑车没跑远路, 就刷街了, 全年体重在 64~66kg 之间波动, 果然没达到去年 YY 的体重 KPI, 不过体检也没啥毛病, 就这样吧.

全年在个人穿着方面几乎没花钱, 倒是还在折腾电子产品, 给自己/喵/老爸各换了台手机, 买了个 new iPad, 给 X200 买了底座换了电池加了 SSD, 基本上算新配了台电脑带回家, 2012 马上要过完时买了个 650D, 可惜顺丰这次不够给力, 本来想着今年最后一天到手的还没送到. 网络方面也还持续投入, 买 ssh 和 vpn 维持科学上网, 域名续了五年费, 家里网络终于升到 20M 光纤. 一开始对 iPad 和手机各种折腾越狱, 刷机, 到后来也还就是当个普通玩具来用, 平平淡淡也好.

还是略有点感伤和迷茫, 感觉偏混日子, 之所以把蹭百度年会都写到大事里去, 是因为当时齐秦唱外面的世界时, 突然像是被狠狠戳到心底最深处后就泪流满面, 看的喵直接吓傻了, 好久没这样毫无防备的痛哭, 发泄过后日子还是得继续, 那就还是这样继续吧. 自己有一些想法, 但是喵和妈妈都觉得不靠谱, 现在因为喵要工作的原因, 又带来些新要考虑的问题.

本来预留了今年最后这几天来好好展开写点什么, 但是感觉现在总没有那种少年意气风发, 青年锋芒毕露的锐气, 更多的都是默默, 平平淡淡写这么点也不想再去展开. 其实还是要更锐利一点的好, 有霸气才能有才气.

你好, 2013.

一季招聘快结束时的找工杂谈

本文说给要找工作的毕业生听, 其他人可以围观看乐子

核心三句话: 该有的有, 该没的别有, 该出彩的最好出彩

简历要有, 基本联系方式要有, 如果不是漂亮妹子就不要放照片吓人了, 个人隐私身份证号家庭信息什么的反正我是不看的, 要有人闲的蛋疼觉得自己信息泄漏的还不够多写上凑个字数那也没人拦的了, 有竞赛/项目/实习经历那最好, 详细说明具体是个什么事, 你在中间扮演什么角色以及你有多重要. 核心目标是节省互相了解的时间, 不浪费口水, 而且写的时候应该没有当场说那么紧张吧

没有太牛逼的简历也没人给你担保那还是去下笔试吧, 比直接霸面还是靠谱点. 卷面整洁点好, 要涂涂改改可以在草稿纸上进行, 没带草稿纸可以在考场问监考的要, 有思路把思路写清楚, 要写代码什么的当然也是越清楚越好, 带注释那就完美透了, 免得遇上比你菜很多的改卷人因为看不懂而把你咔嚓了, 面试时也可以让面试官有个提前了解, 就不用拿菜题来让你感觉被羞辱了

面试时别迟到, 如果路上有状况提前打电话给 HR 告知, 否则很可能是你去了后因为打乱安排而被各种等, 流程好的公司会有很好的预案, 但是不是每个公司每个 HR 每个面试官都那么靠谱. 面试有啥说啥, 会的东西就不用藏者掖着了, 不会的也想办法说明自己为啥不会, 是有别的途径可以弥补这方面的不足, 还是怎样可以短时间内赶上给面试官一个正向的未来预期. 面试时别装逼, 一般面试官不会比你傻太多, 装失败了会有很大的负向影响, 装成功了也会让别人觉得你不好沟通, 礼貌待人在哪里都是适用的. 面试快完时可以就面试的公司做一些了解, 或者让面试官给一些建议, 不要问 “你觉得我这次面试怎么样” 这样的问题, 这种问题让人怎么说? 好的话你明显能看出来面试官也很 high, 不好的话人家也不好当面打击你对吧

后续跟进有必要, 对你是唯一的一次机会, 在公司看来你可能不过是万千人中普通的一个, 很可能会漏了或忘了, 但是如果人家告诉你还在跟进, 特别是还告知了大致进度后, 就不宜缠着死问了

最后吐槽一句话: 一天面试十几个人真不是人干的活, 这种面试强度下面试官的标准还有可靠性吗?

校招趣事

最近筛简历过校招候选人, 被北邮和中科院的人潮汹涌吓到了, 有些有意思或很苦逼的事, 说说

1. 收到的简历里北邮的数量似乎是最多的, 按北邮出来的人的说法, 北邮在找工季信息共享的很好 (byr 果然不是盖的), 然后很多人不管职位需求, 只要看有一点相关的就会去投. 这种筛的人很痛苦啊… 特别是有很多不了解的项目和实习, 一开始觉得好像很牛逼的样子, 后来看多了就发现怎么看都是个野鸡事

2. 去年参加校招面试的某狐狸, 说出去面试老能遇到北邮的人, 后来很 ws 的做了个实验, 出去面试碰到不认识的人就问 “你北邮的吧?”, 大部分情况下都命中, 屡试不爽 // 我能吐槽下恶趣味么…

3. 收到一份 00 级本科的简历, 本科武大物理, 然后在中科院念了五年的物理, 不过这个经历貌似没下文, 因为简历上最后的学习经历是计算机方向的硕士, 跟大家说了下, 都觉得应该是学物理太苦逼而且很难毕业没办法只能转方向了, 唉, 真心苦逼

4. 简历做的好不好在校招海投季节显得尤其重要. 有人的简历做的就让人看不下去, 两个人一天筛一千份简历的情况下, 八成会被直接无视; 有人简历一开始是大片大片的不知所云, 有亮点都放后面, 不知道怎么想的, 你们试试看在 Win7 的资源管理器里打开预览窗格, 然后看自己简历, 能不翻页情况下能看到多少内容? 我在筛实习生筛过后的简历时就这么筛的

5. 除了智商是硬伤, 感觉沟通更是硬伤. 有几个北大的妹子面的各种心情愉悦, 说什么都能很快跟上思路, 理解题目意思和跟上提醒都非常上道, 相比而言可能因为北邮人实在太多, 总能遇上那么一两个极品, 面试时各种沟通找虐, 你不明白他说什么, 他也不明白你说什么, 或者压根就不屑跟你说或想去理解你, 你都不屑了你还来个球啊 (摔), 刷小怪也认真点好么

无聊理工男在面对浪漫时干的二逼事

今天在 http://zhoucaiqi.com/emlog/guoke-website.html 上看到对一个网站的介绍:

这网站的域名相当伤感,内容也很伤感。
整个网站只有一张静态网页。这网页只有一张孤单的图片,以及冷寂的一两句话。

里面说的是这个 http://www.guoke.com/ 网站, 点过去看了下, 确实很孤单落寞的感觉.

前面是浪漫, 下面是无聊理工干的二逼事.

先是 NetMD 同学说多好的域名, 果壳没买下来, 然后死猫同学矫情了下后说这些历史图是怎么截到的, 接着我无聊去看了下 whois 的记录, 找到如下信息:

Domain name: guoke.com

Administrative Contact:
Hu Yanlin
Hu Yanlin (admin@doeasy.com)
+86.1068469837
Fax: +86.1068467228
2-1-2105, No.27 Zengguang Road
Haidian Dist.
Beijing, CN 100048
CN

继续看 doeasy.com 这是个什么网, 发现是域名贩子, 立马觉得 guoke.com 是不是也是域名贩子弄的, 然后一开始那个文章只是在给这个域名做推广. 不过要真是域名贩子, 能做到这样也挺不错了, 又仔细看了下一开始那个帖, 发现是在 Twitter 上 fo 的一个深圳的 IT 工作者的个人博客, 应该是真的默默关注了这么久, 还是一个温暖的故事吧.

事情还没完, 关于 guoke.com 拥有者的地址, 好奇看了下是海淀区, 那个 Zengguang Road 是个什么地方呢? 用拼音打了下居然第一反应是 增广路, 这… 我好像图论学的也没有那么好吧, 再找了下是 增光路, 死猫君表示难怪这么熟, 原来就在他现在住的地方旁边.

无聊理工 + 2B 完毕, 随手一记.

自吐 & 自勉

今天百度最高奖, 看了下, 最终入围的五个团队有三个自己呆过, 拿奖的仨也呆过俩, 好多认识的人, cong~ (附: 拿奖的新浪微博消息) 他们都做的很赞, 自己曾经在这么好的团队, 耐不住性子, 做不出东西, 因种种原因离开, 开花结果自然无份

现在么, 好好做事, 手头事情也很有搞头, 那就好好搞吧, 皇天不负有心人 :P

自吐部分开始, 曾经有一个帖再引用了以前的一个段子 (原文见: 被诅咒的 Snoopy)

Me 13:23:45
我从 b 家离职后不久, b 家的碳酸饮料就免费了
我从 g 家离职后不久, 餐补就直接发钱了, 等我开学, 上海也是自助餐了
小强 13:25:56
你快点离开武大
Me 13:26:16
why?
Me 13:26:23
这样师弟师妹的伙食就有希望了?
小强 13:26:57

小强 13:27:18
你离开acm acm就拿到金牌了
Me 13:28:20

我一定要把这个段子续下去:

* 2007 年夏离开武大 ACM 队, 该年秋天武大第一次拿区域赛金牌, 第一次进入世界总决赛
* 2008 年初进微软俱乐部, 该年夏令营活动被取消
* 2009 年初离开微软俱乐部, 该年夏令营活动恢复, 并增加 UCLA 夏令营
* 2009 年秋天回归百度, 过了一个月从普天搬西二旗, 自助碳酸饮料机被取消了
* 2011 年秋天离开百度, 半年后自己做废了的俩项目重新上线
* 2011 年秋天离开百度, 次年原团队拿百度最高奖

随笔杂记

有一些比较糙的想法, 没有成型, 随便记录下

大公司病和用户基因

主要内容来自新浪微博 @纯银V 的博文 腾讯抄你怎么办. 里面有挺多非常值得参考的观点, 吐槽大公司的各种弊端让人看的非常爽, 强烈推荐.

其中有一段在说 “用户基因”, 大意是在网易里想做一个摄影社区, 为了利用好网易庞大的已有用户量, 任意往里倒资源, 就会让用户群鱼龙混杂, 最后完全做不下去, 还不如一直走兴趣相投的精英版路线. 这样的例子比比皆是, 比如百度知道和知乎, 就是完全不一样的定位和用户群, 哪怕一开始都想定位于精品问答, 而知道绝对还是会发展成大众化问答且质量参次不齐. 其实这应该也是百度一直比较难做出什么精品产品而非大众产品的原因, 偏偏百度做大众产品成功运气的成分更大点 (比如知道和贴吧), 很多时候是想做精品产品而因为用户基因的关系而悲剧掉 (比如百科绝对没法像维基那样精品化, 只能是不那么严谨的大众科普加一些好玩搞笑). 从这个结论出发, 如果是在有很多用户基础的公司内做新产品, 路就两条, 一是做小众精品, 尽量不要用公司资源, 免得导入大量低质用户, 二是老老实实做平民产品, 利用已有用户资源且应对各种坑爹的奇葩. 是不是突然觉得有哪里不对? 如果走第一条路, 那为什么还在个大公司里做呢? 还不如直接出去创业, 反正做事都一样, 还免得大公司各种条条框框限制, 比如风车. 除非这个公司的已有用户也都是高质量用户, 如豆瓣的很多新产品.

回归模型和在线学习

一开始还是一个微博上的问题, 说幼儿园的题目大人不会解, 找了个样例是

967621 = 3
797321 = 1
378581 = 4
422151 = 0
535951 = 1
335771 = 0
565441 = ?

一般都是列方程求解, 但其实这也是个挺好的回归模型应用例子, 打算下次写机器学习手记的时候就写这个. 我人人上的好友写了一篇 幼儿园的题目和机器学习的关系, 我分享的链接后还跟别人讨论了下在线算法和离线算法的差异. 其中提到一些很有意思的观点, 就是 online 的更新算法会因为只在继续拟合新样本而不管原来样本的拟合, 会导致结果的抖动很大, 这是其在跟 batch 方法比较时的缺陷, 但换个角度看, 正因为 online 的方法没有受到历史数据的约束, 反倒可以更快的响应新数据的变化. 最后那个响应的问题, 也许可以在现在的工作中用起来, 最近就一直被新数据响应和数据短期内剧烈变化所困扰.

数学之美

吴军博士浪潮之巅后的又一部经典之作, 把以前谷歌黑板报上的系列文章重新整理加补完, 前几天在京东上买了这本, 正在看, 强烈推荐.

希望读完后能有一些笔记性的东西出来, 这里先记一下. 第三章 2.2 节讲到对低频样本出现的潜在观测误差的处理, 用平滑或做折算的方式降低抖动可能, 这个想法也非常赞, 在最近的工作中应该也可以用起来, 实际上之前做过的某事情已经就在用类似的方法, 只不过思想和折算方法不太一样罢了.