Month: 十二月 2011

2011 年度盘点

按惯例每年写一篇总结, 记录自己的过去, 碎碎念兼反思得失. 下面基本按时间序来说说不同角度的大事

元旦回家, 一个人的春节

避开春节的火车, 选在元旦回家, 家里人基本都在, 该吃吃该睡睡几天也就过去了, 不用像过年一样大把时间都耗在各种走亲戚上, 经常像个小孩一样腻着爸妈, 晚上一起烤火打牌, 随随便便什么都聊下, 也挺好的

过年一个人在北京过, 年前几天和年后才上班的几天公司都冷冷清清的, 没怎么干活, 在做一些自己的小爱好什么的, 其实跟休假差不多. 过年那几天提前把一些吃的屯好, 最后过的倒还行. 装上三国志 11 在这几天通了一次 (应该是简单模式), 也重新回顾了下那段历史, 好像就这段时间把三国演义的小说好好看完了. 期间去了趟地坛庙会, 跟我想的庙会还是有很大落差, 就一游乐场嘛

换室友, 换房子

在西二旗租的房子的前室友 sandy_sp 因为个人原因, 离开北京去了上海银联, 一个听起来很操蛋又很有米, 偶尔想想也很悠闲很爽的地方, 所以室友换成了 boluor. 跟 boluor 还是经常会在晚上扯技术问题, 本来都打算要睡的两个人穿个裤衩站各自门口就一些系统问题扯上一两个小时, 再看下时间不早还是快去睡觉, 第二天还要干活. 后面我走了后 boluor 不无遗憾的说现在没人跟他扯这些了, 只能自己闷头看书, 我好像也觉得现在这个状态并不是非常好, 很多跟人学习的过程是一个隐性的, 要时刻注意

因为换工作的关系, 也因为想离 MM 更近点, 从西二旗那搬来了柳芳, 从 13 号线的那头到了这头. 新房子就在公司对面, 早上上班只要几分钟, 大部分时间还耗在等电梯和等红绿灯上了. 这边更市区一些, 买什么或办点什么事都要方便不少, 生活方式略有变化, 不像在西二旗只能窝家里或公司, 出门就奔上地华联. 新房子有新室友, xenplus, 也是武大集训队的师弟, 在公司的同事, 把我忽悠过来的这只鱼, 不过好像因为在这边和 MM 在一起的时间更多点, 所以都缺少些技术讨论和同步成长? 因为买菜什么的变方便, 所以开伙频度明显增加, 自己厨艺只是略有进步, 某喵倒是越来越强

不那么顺利的工作, 坑爹的事故

上半年做了件大事, 中间因为一个诡异的问题把整个进度拖慢了不少, 但是没等最终好好做完就被大老板整个拍掉. 唉, 总是抓不准做事的时机, 而且坑爹的诡异问题经常被自己撞上, 不知道该自嘲运气实在有问题, 还是自夸做的多也容易错的多? (那个诡异的问题和交换机的 buffer 设置有关, 会导致服务器超时不一致, 但是这种事情谁想的到谁有权限控制啊) 整个过程中因为自己的疏忽和流程的漏洞, 弄得有连着两周都在出各种事故, 后来自己都没法忍了写事故通报时都不知道到底该怪谁

上半年做了另一件自己认为很有意义, 但实际上几乎没有任何老大认可收益的事情. 虽然自己坚持这件事的意义重大, 而且很多还在一线的同事也认可, 但是, 有些东西, 老大说没意义就是没意义, 或者就算老大想认可但评估体系没法考量那这事就是没意义的, sigh

用 Markdown 做基础维护了一个类 wiki 的分享站 ourfcr.info, 帮了不少人, 但是也因为纯属个人爱好和没做好协同编辑, 其实也只是一个人在做. 那一段每天早上六七点到公司, 干这事到九点等大家来了再切回正常工作状态的日子, 是个人习惯和工作效率都很高的一段时间, 很舒服很充实, 后期很多有心无力和懒得搞也慢慢荒了, 现在离职后那个内部站自己都看不到, 索性也算断了这个念想, 不怀旧, 也欺骗自己不愧疚

七月去业务一线实习了一段时间, 从另一个角度看了很多不一样的东西, 颠覆了很多认识, 也有很多想法, 但最后, 却发现大部分事情还是无能为力去改变. 特别是后续的工作方向又发生大变, 正如离职时的告别邮件里说的, 很多未竟的梦想和许诺, 实在抱歉, sigh

在八月还是九月的某个时间, 突然就觉得做的事情真的没意思了, 而且从前面的很多记录都以叹气结尾就知道工作认同感是怎样, 之前的一些不爽和念想就变成了 “我要换个地方看看不一样的活法”, 这直接导致了离职. 这期间本来想作收尾工作的一次小流量, 最后还莫名其妙的出了持续两周的事故, 又是坑爹的诡异问题导致, 真心无奈, 彻底无奈 (这次的问题是持续集成的编译机群新增了一台, 系统环境不一致造成, 又是莫名其妙的不可控也压根想不到的问题)

换工作

十一月初从百度凤巢广告系统策略离开, 到人人来做人群定向, 做事有一定的延续性, 也有挺大的改变. 目前来看一切都还算好玩, 不一样的数据, 不一样的应用场景, 有很多不一样的东西要去学习, 也有很多不一样的坑可以刨

虽然从百度走了, 但是感觉很多时候还是在用百度的方式在思考问题, 跟以前的同事 (同时也都是很好的朋友) 都还保持很好的联系, 让很多人都吐槽 “好像你从来就没走过一样”. 最后几天很 ws 的跑回去参加以前组的年终聚餐, 本只想跟大家聚聚, 然后就一些不涉及两边公司机密的纯技术问题进行下探讨, 最后倒变成了纯混吃 + 恶意占用抽奖 quota, 太损 RP 了

跟大家聊一些技术点的时候, 明显还是能感觉到两边的整体成熟度有很大差异, 人人这边是更年轻更无畏的另一种风格, 其实很像几年前的百度, 没有太多人可以教你, 要你自己学习自己进步. 当然, 人人这边很多事情本身也是在做开拓性的工作, 没有参考也正常

工作环境变朴实了很多, 有些落差, 不过基本上还不影响干活本身, 今天去看了下很快要搬过去的新工作区, 希望继续跌落, 这还是朴实路线啊 (我很厚道的忍住了吐槽没用贬义词, 但是没忍住要加个括号吐槽下) 唯一让我还是觉得不甚喜欢的就是人人跟国内大部分 IT 企业一样, 会有很黄很暴力的氛围, 关于这个, 我准备单独写篇博文讨论下, 草稿和框架已经有了

各项游玩

春天的时候跟槽群的朋友一起射箭, 好玩. 去植物园, 除了天气和交通比较坑爹, 其他都还很赞, 只是大家打 UNO 的兴致没那么高了

小组内组织去开卡丁车, 磕磕碰碰的上手, 意犹未尽的离开, 速度感带来的刺激果然是男生的本能追求. 多的票后来又跟 MM 一起偷偷去了一回

每年一度的大 bui, 凑上 FC2.0 的人一起去的坝上, 想起 07 年都可以组织整个 ECOM 的大 bui, 现在光是 FC 检索端就要两辆大巴, 扩张真快. 草原没有想的那么漂亮, 被牵着走的骑马也挺没劲, 只有回来路上马被别的马惊了下时跑了两下算是比较 high 的体验. 没在草原玩坑爹的游乐设备后面被证明是明智的选择, 跟着老万一起去开的四轮摩托, 在草原上跑的煞是惬意. 长期不晒太阳, 出去随便晒了下背上就脱皮了, 这还是穿了衣服的保护呢

秋天小组 bui 去打了趟高尔夫, 在室内对一块练习场挥杆的那种, 运动细胞还是不咋的啊, 完了不出意外全身酸痛好几天

终于去了趟颐和园, 也去了趟天坛, 想想在北京还有挺多地方没去的, 故宫, 后海, 798, 十三陵, 虽然俗气了点但是还是值得去去吧. 又去爬了两次香山, 都是不同的路线, 锻炼下挺好的, 在室内闷久了逗松鼠玩都是件很有乐趣的事情

冬天来人人后去了次温泉, 第一次去温泉, 泡的挺爽, 只是容易出汗且怕闷的笨狗没法持续的好好享受, 果然不是享受的命 :P

到人人后因为开会, 去密云水库附近的一个度假村呆了两天, 那段时间北京城区的空气实在太糟糕, 出去透透气非常爽. 继去年去皇后镇后再一次看到满天星空, 有种回到无忧无虑小时候的淡淡的幸福和忧伤. 但是那两天已经很冷, 风也挺大, 就没继续文艺下去, 不想在外面冻得像个二逼就回屋里好好当普通青年吧

爸妈来京, 亲情和爱情

7 月份爸妈来京玩, 不过当时在上班, 也没怎么陪他们玩, 景点本身也没什么太大意思, 老爸也喜欢自己到处晃, 就让他们自己玩去了. 爸妈每天早上六点左右出门, 玩到中午回来, 刚好避开游客高峰期和交通高峰期, 也不算太热, 我倒是觉得这种模式挺好

期间我的作息时间跟他们差太多, 一般都是爸妈出门时我妈把睡地板的我捅起来让睡床上去, 然后我还能完整睡上一觉再起来去公司上班. 晚上会比平时早点回来, 一起吃晚饭, 然后在家干会活, 一起聊天扯淡, 发现现在跟爸妈好好谈谈都是件很奢侈的事

一些陪同的项目更多都是吃吃喝喝, 略显无趣. 最后找了天跟老爸一起骑车去晃了圈北体, 堂妹在那边上学, 家里人想看看就看看, 反正也不远

跟爸妈就 MM 的事情好好谈妥了, 坚持到最后, 一开始的问题其实都不是问题. 等某喵也谈妥, 这事就成了算了, 免得夜长梦多 :P

学习

本来毕业后这个词就出现的少了, 自己还是明白得保持学习, 可惜从小到大懒惯了, 虽偶尔想想, 但也没有啥太多进步. 论文还是看的少看的不够深, 该关注的东西贴的不够紧. 还是得经常提醒和敲打下自己. 这个行业本来发展就很快, 从业者又都是即聪明又勤奋的人, 必须逼这自己持续往前跑, 才能跑到别人前面, 至少要维持不掉队吧

本打算在下半年把一些基础的东西重新回顾扎实下, 结果只好好看完了 perl 入门, 做完所有练习题后也没在实际生产中用到, 估计现在又忘的差不多了. 其他诸如数据结构, 算法, 数学等内容, 原来打算在谋划换工作时, 用不拼命工作省下了的时间过一遍, 却没料到来人人的过程会这么快, 这些事后面就被搁下了

运动和健康

考虑到自己的体重实在是有问题, 且锻炼机会越来越少, 为了逼自己锻炼, 也完成许久以来的骚包念想, 五一假的时候去入手了一辆美利达 Duke 500, 开始骑行锻炼

五月份和死猫/囧猫去了趟十三陵水库, 低强度活动, 走八高辅路到昌平城区, 再沿十三陵水库一圈, 原路返回. 期间各种欢乐, 比如赶上国际越野跑, 水库边文艺女青年和她的 A-Bike, 死猫的神奇座杆, 也还遇到有骑车的事故. 长大下坡上 45KM+ 的速度和第一次去滑雪时的感觉一样刺激

之后一直没太有空去骑长途, 有一段终于觉得自己太颓废, 自己拉了一趟香山, 只是到山脚下, 来回 30 多公里花一个多小时, 平均速度 20 多, 自己还挺满意的

秋天和死猫, 猫嫂加囧猫去了趟蟒山, 大部分路线和去十三陵一样, 连中午吃饭都是一个地方. 但是因为绕路和爬山, 对笨狗这样的新手来说强度还是有明显增加的, 途中好几次想放弃登顶, 感谢死猫一直陪我鼓励我到最上面, 最后一路放下来真的是太爽了. 可惜囧猫因为借的车刹车装反导致下山时摔了, 出事和回程少个人还是让这一次骑行还是留下不少遗憾

换工作搬家时从西二旗到柳芳来回骑了几趟, 才开始在城区骑稍远的距离, 对各种红绿灯和自行车道上的不讲究很不爽. 八高等路线上的堵车也还是心烦, 特别是不讲究的汽车把自行车道甚至人行道都霸占了时. 第一次从西二旗到柳芳路上遇到马拉松, 到底是北京此类赛事真的很多还是我运气真的很好老被我碰上?

对体重彻底没法忍, 给自己定的锻炼计划是每天 50 个俯卧撑 30 个仰卧起坐, 执行过程中还是有偏, 最近维持每天早晚一次广播体操 + 45 个俯卧撑, 肥了懒了后运动起来各种不给力啊, 随便弄弄都腰酸手疼的. 目前体重 66.6kg, 看起来不可能在 2012 来之前降到 60kg (一开始的大跃进计划) 或 65kg (后来觉得靠谱点的计划) 了. 但是还是得维持锻炼, 明年给自己定个 60kg 的体重 KPI?

骚包和折腾

清明节的时候突然脑抽进入完成式, 忽悠上阿牛一起去换手机, 入手 HTC Desire (G7/Bravo). 现在回头看, 当时不是一个太好的出手时机, 因为买之前价格坚挺了很久, 而买了后很快就跌了好多, 不过反正都是玩, 过去的事情就过去了吧. 接下来就是各种折腾, S-OFF, ROOT, 刷机, 玩软件, 一开始还有兴趣记录下, 后面就懒得记了, 现在终于回归理性, 就想要个稳定顺手的系统好好用着别出毛病就行了

换房子时重新办宽带, 薅上联通羊毛, 送了个 3G 号加一年的 66 套餐. 鉴于之前移动 159 的号还得用, 而那个 N1200 又给了熊, 干脆再买个诺基亚 C1-02 插移动号当备机, Desire 就换联通 3G 号, 在外面无聊时可以上网玩了. WCDMA 网络速度比 EDGE 确实有质的飞跃, 但是联通的信号稳定性还是不如移动, 希望联通能越来越靠谱, 良性竞争推动整个行业进步, 不要只靠国家强制制式绑定来扩展市场

被 CHH 放毒, 对乐高的科技系列无限 YY, 这不就是从小到大一直想玩却没钱买的东西么. 圣诞节前完成对自己的忽悠, 说忙一年了就当买个大玩具奖励自己吧, 果断出手 2010 科技旗舰 8043. 圣诞当天上午收到同城快递, 下午和晚上就忍不住将其装了起来, 默认的挖掘机形态. 找电池时还想自己以前买那么多 eneloop AA 充电电池终于有正经用途了, 坑爹的是这货居然是 6*AA (机体) + 6*AAA (遥控器), 最后拆各种电视/空调遥控器终于再凑够六节 AAA, 玩的甚爽, 准备元旦或什么时候拆了挖掘机形态换推土机形态

换工作后去办了户口和档案迁移, 真是各种坑. 现在看事情应该都办完了, 回头单写一帖说这个办理过程, 也给其他人一个教程介绍

因为翻墙需要, 在 flyssh.net 上买了一年的 ssh, 后面推荐别人买时发现他家还提供主机服务了, 最便宜的一年才 20 块钱, 试试看的心态就买了个玩. 把 yewen.us 指向这, 也就有了最新的这个 笨狗又一窝, 最近一两个月花了些时间把以前散落各处的日志合并整理到这里, 现在只剩以前 Q-zone 的一百多篇没有分类和打 TAG, 其他的都搬好了, 真是体力活. BBS 上写过的一些东西, 虽然值得纪念, 但找起来都难, 还是算了

终于还是没躲过天涯这一波

上周还吐槽那几家顺便感慨自己还好没中招, 今天把 天涯数据.kz 拖下来, 红果果的发现了笨狗的用户名和那个弱的不能再弱只在挫站上用的弱密码, 邮箱居然还是已经不存在了的一个. 话说我怎么会注册天涯呢, 从那个邮箱来看, 应该是在 06 年或更早的时候注册的, 那时候怎么就脑抽要注册个天涯呢, 难道是为了看那个 红色帝国的暴力美学 那个帖?

1. 用户名是我的, 邮箱已经因为太久没用被服务商关停了
2. 密码是弱密码, 某些很久没更新密码的挫站估计还在用, 有心人不用费心试了
3. kz 用 KuaiZip 解压, 估计他们家软件的安装量这两天翻了至少几十倍
4. 果然文本可以压出很恐怖的压缩率, 1.71G 的 50 个 txt 就被压成了一个 377M 的 .kz, 不过解压速度也放在那, 花了快 6 分钟

CSDN 这个杯具带倒了整个茶几

最近几天要是哪个 IT 民工没有关注 csdn 密码这个事情, 估计要么是被抓去封闭开发了, 要么是死了. 如果还需要回顾下, 具体的事情经过可以参考 http://csdn.aspx2.com/, 按我能统计到的资料, wooyun 的 http://www.wooyun.org/bugs/wooyun-2010-03523 应该是最早的公开信息源, 具体的下载链接我还是不发了, 自己找吧.

csdn 那个库的真实性还是挺高的, 至少周围有不少人能验证上, ACRush 和 Matrix67 都被爆了, 而且被爆的很难看. 但根据网络消息和 scat 等人的人肉分析, 那个库的泄漏时间应该在 09 年. 其他库的真实性存疑, 至少传闻的人人库应该也是 08 或 09 年的数据, 那时候人人还叫校内吧? (刚查了下, 改名是 09 年 8 月的事) 而且密码有效率比较低, 很多能登陆的帐号也都是僵尸号, 没什么内容, 倒是有可能就是以前恶意注册的一堆水号资料被注册的人不小心弄丢了. 而且今天继续流出的新浪微博那个文件 (weibo.com_12160.dbh) 和人人库 (xh-2.txt) 几乎是一样的.

问了人人安全组的人, 以及和人人网黄晶的一些状态互动, 我还是相信人人应该不至于干明文存密码这么弱的事情. 不过从 wooyun 上 http://www.wooyun.org/bugs/wooyun-2010-03337 这个漏洞的回复, 和今天人人上某好友用 HttpFox 检查的结果来看, 这个漏洞很可能是真实存在的, 但是我把这个 bug @黄晶 的时候被否定了, 求有时间的人去验证下. 这种浏览器明文传输密码的事情在 KO 和 littleken 他们做 WOJ 第一版 (Noah) 的时候就被人搞过, 后来通过 SHA1+salt 加密密码, 并在浏览器提交数据前就加密, 才搞定这事.

更多的跟进消息可以见 aspx2 的那个页面, 分析上我个人比较赞同 http://www.36kr.com/p/71020.html 里面的说法, 主要的问题是 1) 新人不懂; 2) 脑残需求; 3) 历史遗留; 4) 政府要求; 5) 站点私心. 问题一个比一个严重, 而且越来越难修复. 一般来说新人不懂还是可以很快学习到, 脑残的需求还是可以被有理想的程序员拍回去, 这两个还算简单, 解决起来也容易. 历史遗留的问题一般大家都不敢动, 能用的系统你没事去改什么改? 又不算 KPI, 再说了, 改挂了谁负责? 而且很多程序员对公司并没有那么大的认同感, 都抱着 “反正过多久我就不在这了, 只要不在我手上出事” 的念头干活, 也难怪现在的很多产品烂成那样. 政府要求这种真的是一朵奇葩, 不过我倒是觉得与其明文存密码, 还不如给政府提供超级通道, 让他可以直接进来, 这样虽然都是被强奸, 好歹也算戴了个套, 痛是必然的, 好歹不会得病和怀孕啊. 站点私心这种完全就是流氓行径了, 小站还有这样可能, 做大了的站应该就不用靠这个赚钱了吧, 还是说这样来钱还是要快很多, 大家还是想赚快钱? 话说开个色情网站用来收密码好像是个挺不错的想法?

目前我看到对此事件的阴谋论包括: 1) robbinfan (csdn 那个头) 得罪了人; 2) csdn 和黑帽价格没谈拢; 3) 反抗政府实名制. 前两个都是就是论事, 听起来也很有道理, 09 年的库现在才爆发, 中间应该在黑市上已经流通很久了, 事实上这么一想, 很可能还有别的新库正在黑帽们手里流通着呢, 而我们还傻乎乎的说还好这次没被爆掉. 反抗政府实名制, 其实也有道理, 让大家看看网络到底多不安全, 还实名个腿, 下次漏的可能就是身份证号和家庭住址了, 再愚昧的民众也会起来反对的. 我个人对反抗实名制这个阴谋论还是挺满意的, 让民众开化最好的方式就是革命, 而革命必然会很痛, 这次痛的人多了点.

一些趣闻八卦

  • CSDN 杯我最喜欢的密码, CSDN 杯程序员最喜欢的邮箱等活动真是大大锻炼了大家的脚本处理能力, 挺好的技术普及活动. (话说为什么我的角度总这么奇怪?) 今天上午面别人就顺手拿这中间的活动所需技术当面试题给出去了, 不过结果不太让我满意 :(
  • 很多爱情段子, 算是本次惨痛的茶几颠覆 (一地杯具) 事件为数不多让人感到温暖的地方.
  • csdn 有两个比较难理解的高频密码, 一个是 dearbook, 这个我猜到都是 “第二书店”, 就是 csdn 的一个业务; 另一个 xiazhili, http://www.guokr.com/ask/item/81227/ 的 12 楼真的太牛逼了…  (正解答案: xiazhili 是 csdn 下载频道 09 年上传比较多的一 MM 会员, 众多程序员意淫的对象, 故 xiazhili 作为密码不足为奇)
  • 类似 “ppnn13%dkstFeb.1st” (娉娉袅袅十三余,豆蔻梢头二月初) 的密码, 果然是文艺到家, 其实我猜这是某百度员工的杰作? 因为百度的很多密码就是唐诗宋词中的某一段变换而来, 连内网给的好密码样例都是 “Hhzstsla!” (黄河之水天上来啊!), 而用过的类似密码更是不计其数. 话说 MySQL 好像也是个好密码? (明月三千里, 好冷…)

有关密码安全机制, 我自己的密码一直是分级的, 目前来看还算安全. 数字密码有一个纯 6 位数字应对脑残的只能用数字做密码的场合 (比如某些电信业务), 有一个好点的 6 位数字密码拿来给银行卡用. 网络密码有一个 6 位弱密码用来注册那些我不甚信任或无所谓的网站, 丢就丢吧, 反正也不是多大个事, 有一个 8 位的大小写字母加数字做一般强密码 (有些地方不然用特殊字符), 最后有 8-12 位的强密码来把关最后的核心业务 (gmail, 网银, 支付等, 且跟钱有关的都分开设定).

设定密码的方式其实用中文拼音转换就挺好的, 很多字符做下变化就模糊掉了, 比如 {数字 1, 大写字母 I, 小写字母 l, 特殊字符 !} 就是个很好的互换集合, 类似的还有 {数字 0, 大写字母 O, 小写字母 o} 等等. 做个样例: “不怕猪一样的对手” -> “bpzyydds” -> “bPz!yDd5”, 这样就又安全又好记了.

我个人建议密码还是学我那么去保存, 或用一个开源的密码管理器来管理, 开源的意思是至少自己信得过这个东西, 不然这一丢更惨, 所有的都没了.

遍地创业机会?

从百度离职后, 看了很多不一样的东西, 也被很多朋友介绍说去创业吧, 所以有此一篇

遍地黄金的创业机会?

接到过一些创业邀请, 主要在 手机应用, 增值服务 两个方向, 听起来就像是说 “遍地是黄金, 谁不捡就是傻子”

移动互联网现在很热, 也确实有很多一夜暴富的案例, 但是是不是真的就遍地黄金想拿就有? 我还是觉得未必, 一是笨狗胆小, 二还是觉得这不符合我理解商业规律. 我个人觉得 90% 的创业公司 (或者说创业项目比较好) 会死掉这个说法绝对不是夸大其词, 甚至在我看来, 只会更高, 特别是现在很多完全没有仔细思考就一猛子扎进去乱搞的人越来越多, 跟当年股市泡沫好像就是一样的嘛. 移动互联网上的很多创业都是 “觉得一个东西好玩” 就去做, 很多都只是创业者自己的小众需求而已, 没法扩大规模, 没法变现, 最后, 只能死掉

商业模式是才是最后赚钱的核心

前一段在回顾浪潮之巅时, 自己掰出来这么一句话:

创业的最高层次是创造新的生活方式, 并衍生新的商业模式

这句话更多的是想说 Twitter 和 Facebook, 这两个公司都是创造了一种新的生活模式, 让个人的信息发布和联络渠道发生了颠覆性改变, 其革命程度不亚于当年 Google 等搜索引擎把大家获取资料的方式从目录检索变成关键词检索. 但是抛开 “伟大” 而言, 大家都是要吃饭的, 再看看这两家的盈利状况呢? Twitter 现在似乎一直没有一个靠谱的盈利模式, 从外界能获取到的信息看来, 能维持运作就不错了, 而且最近 Twitter 的更新越来越慢, 都让人怀疑他们还在没在好好做产品. Facebook 虽然没上市, 没公布其财务状况, 但是外界的信息显示他家今年的利润应该不下 10 亿美元, 而且吸金能力越来越强. 所以, 这两家我看好 faceboook 的前途 (虽然我不喜欢 facebook 这家企业, 但是喜好和看好是两码事), 觉得 twitter 会在不久的将来挂掉.

两者最大的区别就在于是否找到了一个可以健康发展的商业模式. Facebook 利用他强大的用户信息网络, 能将定向投放广告做的越来越准, 而且他的用户黏性保证了这个广告市场只会越来越大, 广告主们竞争越来越激烈, 整个体系是一个健康前进的生态系统. 反观 Twitter, 因为更多的是只言片语, 且有大量的 API/客户端 分流, 用户黏性小 (更多指的是在其网页上的停留时间), 没有定向广告的能力, 又没有从用户那收钱的增值服务, 想不出来后续能靠什么撑下去, 概念最终总还是要落地, 童话的最后公主和王子在一起后, 也还是要过柴米油盐的生活, 不切实际的泡沫总会破灭的.

如果说前面说的更多是对未来的展望和分析, 有个人喜好因素在里面, 那我们回顾下历史. 互联网上这几年 Google 和 Yahoo 应该算是反差最大的两家了吧, G 的绝大部分收入还是来自 AdWords 和 AdSense, 前者依托他强大的搜索技术和用户量, 后者依托其海量数据处理能力和庞大的广告主资源, 虽然 G 一直想多元化经营, 但是很遗憾, 其他部门的营收真的只能算九牛一毛. 而 Y, 一直守着自己的目录式搜索, 跟进关键词搜索的模式还是慢了点, 而且技术也糙了点, 等发现广告市场的风向从 Banner 广告转向精准定位时再去做 panama, 不仅时机上落后于人, 技术上也一直跟不上, 发了那么多 paper 也无济于事. 市场只看结果, Google 两倍于 Yahoo 的 CPM, 再加上几倍的市场份额, 就注定了一个会进入良性循环而另一个在恶性循环中苦苦挣扎, 好像 Yahoo 都快要被收购了?

再举个例子, Apple 和 Nokia. Apple 固然有其工业设计等因素推动其前进, 但是 App Store 确实是个伟大的战略, Apple 通过 iPhone 的强大, 时尚等特性扩大用户群, 然后通过 App Store 来吸引开发者, 把付钱和赚钱的渠道打通, 然后两边都能进入良性循环, 用户能有越来越多的好应用可以使用, 开发者也越来越容易从自己的好作品中获利. 而 Nokia, 现在好像只剩下调侃他 结实 和 续航 的段子了, 功能和设计上的不思进取导致了用户群流失, 对开发者不友好, 开发者很难赚钱导致开发者流失, 最后也就只剩下 Nokia 自己在推官方应用, 以及一些大公司为了安抚用户推出点 Symbian 的客户端, 用户和开发者两边都恶性循环, 最后的结果, 微软要收购诺基亚的谣言好像又越来越盛了?

增值服务都在闷声发大财

前面那个部分基本上都是在吐槽, 也没提出什么建设性意见, 毕竟生活方式的革命不是谁都能想出来的, 最近几年全球在互联网和移动互联网上的大跃进也基本上掏空了大家的需求. 如果不能 revolution, 那回头考虑下 evolution, 很多传统行业还是在低调的赚钱, 赚大钱, 靠的就是 evolution.

因为工作关系的原因, 过去几年关注互联网广告比较多, 这是个很奇怪的市场, 不管是国外的 Google, Yahoo, Bing 等等, 还是国内的 百度, 淘宝 等终端服务商, 都在拼命发展自己的技术能力, 把系统弄的越来越牛逼, 也越来越复杂, 而需要使用此服务的广告商, 根据个人的了解, 不管国内还国外, 都是小白, 而且一个比一个白. 看起来好像是先进生产力和生成方式跟落后劳动者的冲突了, 解决这个问题, 要么是广告主自己学习进化, 去适应更精细的游戏规则, 但是这个途径太麻烦, 并不是每个人都需要在每个领域都成为专家, 特别是很多广告主是中小企业, 压根没有人力来做这个事情, 大企业很多也没有太多人力来做这事, 那要么就是引入中间人, 让专门的人来做专门的事. 说到这, 想起来前段时间京东老总刘强东在微博上说要自己建干线物流, 其实也是类似问题, 要么由中间人 (干线物流公司) 来完成这部分自己不擅长, 也不必要去擅长的工作, 要么就自己花很大成本去做这事了, 这是一个反例.

回到互联网广告的中间人, 一般会管他们叫 广告代理公司 或 SEM (Search Engine Marketing), 这个市场在国外貌似稍微成熟一点, 在国内大都是很糙的起步阶段. 这里面有非常多的事情可以做, 不同的网络媒体, 不同的投放优化方式, 拿人钱财替人消灾, 据说这个行业的毛利润至少有 10%, 佣金是一部分, 优化后的利润空间自己也可以分一部分, 可惜现在这个圈子缺人缺技术, 好多人都是看着钱在面前, 却捞不到, 腾不出手捞, 没空捞.

在互联网广告之外, 帮别人赚钱也是一门很大的生意, 淘宝自己就是干这事的最大中间商, 什么聚划算啦, 直通车啦, 都是为了更好的让卖家赚钱, 同时自己收佣金或压缩成本获利. 在淘宝之外, 目前应该也有好大一批帮淘宝卖家赚钱的创业企业在行动了, 我猜赚钱也是大大的, 低调发财真好. 因为有朋友在这个圈里, 为了不直接导致市场白热化, 这事就不说太白太细了. 继续感慨 “小钱钱, 真心甜.”

游戏行业的暴利

早几周本科室友 6k 来北京玩, 因为他自己是个狂热的游戏玩家, 同时也在游戏行业做了好几年, 于是就扯这行的暴利. 现在在互联网上现在被骚扰的最多的估计就是游戏广告, 而且游戏广告都很贵, 从这点上来看也就知道游戏有多赚钱, 不然他们不会一直烧下去的.

国内的网游应该已经没有靠点卡赚钱的了, 魔兽世界这种极品不是阿猫阿狗都做的出来且能运营好的, 绝大部分都是靠增值服务, 提供钱换时间的服务, 比如更好的装备, 更快的升级等, 更赤果果的是卖道具, 除了好看啥用都没有的道具, 还贼贵. 考虑到现在做一个真正好玩的游戏确实太费时间太难, 点卡赚钱不靠谱, 破坏游戏平衡性的增值服务又不能搞太多, 那么最后现在大部分游戏的运营模式都进入了这样一个外人看不懂的怪圈:

  • 通过免费, 甚至送钱的方式, 吸引大量玩家并努力保持黏性 (赚点卡的境界)
  • 发展高端付费玩家, 让大量玩家陪玩, 使他们获得尽可能大的满足感 (破坏游戏平衡性的增值服务境界)
  • 引起付费玩家的妒忌, 让他们互相砸钱买无用道具来攀比 (让玩家烧钱给自己的境界)

老实说我自己觉得这种方式太下作, 但是人傻钱多这种事情又不是我能决定的, 官二代富二代烧的钱再怎么来路不正我也没有足够能力去明显改变这个世界, 这里只是说下暴利情况. 千万不要看不起烧钱的玩家, 人家都是可以几秒钟花几万人民币的, 所以, 养好你的免费玩家, 甚至雇点职业玩家陪好人民币玩家, 然后就让他们互相在你的游戏里烧钱就行了. 如果没有那么强烈的正义感, 也不像某些游戏制作人一样有真正的梦想, 有点技术又想快点捞钱, 这个路子确实不错. 但是我还是会持续鄙视做这种游戏, 运营这种游戏, 和在游戏里烧钱的人.

这一节主要是想说, 你是否赞同并支持自己做的事和赚钱是不冲突的两回事, 只要你放的下良心和矜持, 钱也还是比较容易来的. 这一点, 比如 Jack M, 嗯 这事不能说太细.

关于毕业去哪里

因为自己最近换了个地方, 看了看最近呆过的这两家, 更像是同一家的不同阶段. 百度已经相对成熟化, 更多的是靠整体技术和制度在驱动, 而人人相对有更多的个人英雄主义和随意性.

对应届生来说, 如果不是自己能力比较强, 或自己有很好的想法, 还是建议去类似百度这样, 还在上升期的技术性大企业, 学东西相对有保障, 周围有热心的大牛的概率也要高很多, 钱可能会少点, 短期收益不会那么明显, 但是长期来看是在打更扎实的基础. 相对的, 爆发期的小企业会有很多机会, 发挥的自由度会大很多, 如果有不错的底子, 只要是不那么坑爹的团队, 总能干出点很赞的事情. 缺点基本上就是两者的优点互换一下, 大企业的整体框架会相对稳定, 制度比较完善, 每个人更多的会扮演螺丝钉的角色, 而且看事情的面会稍微窄一点, 做的比较好也是某个位置上比较优秀的螺丝钉. 而小一点的地方如果遇上好的老大和团队, 确实能更快更好的成长, 但是这种机会相对可遇不可求, 所以除非确定, 按笨狗胆小心理, 是不会去赌的.

原校内日志迁移完毕

感慨: 本来我是一多么热爱生活的好少年啊, 结果活生生被憋成了愤青, 后来愤不动了就开始走技术大叔的路线, 偶尔装下人生导师

另外, 互联网上资源的生命周期实在是太短了, 迁移过程中想看看以前的一些转载, 结果原始链接点过去都失效了, 只有域名贩子的广告

解答随机抽数系列问题并说明 bug

十月份的时候写了一篇 面试题, 随机抽样问题及扩展, 当时这个 blog 没整好, 发在了好几个地方

前几天跟 Lee.Mars 聊, 又把这堆问题解答了一遍, 并指出其中一个问题的 bug.

原始版, 数据流 n 选 1. 构建一个可容纳一个数的 buffer, 数据流中第 i 个数过来时做一次 [0, 1] 的 random, 如果小于 1/i, 则更新 buffer. (证明过程略, 很简单的)

buf = 0
cnt = 0
for i in sys.stdin:
  cnt += 1
  if random.random() < 1.0/cnt:
    buf = int(i)

print buf

加强版, 数据流 n 选 k. 同上, 构建的 buffer 大小变为 k, 每次 rand 小于 k/i 时, 将 rand*i 对应的 buffer 更新

k = 3 
buf = []
cnt = 0 
for i in sys.stdin:
  cnt += 1
  rd = int(random.random()*cnt)
  if rd < k:
    if cnt <= k:
      buf.append(int(i))
      buf[cnt-1] = buf[rd]
    buf[rd] = int(i)

print buf 

带权版, 带权数据流 n 选 1. 同原始版, 只是对权重为 w[i] 的第 i 个数, rand 时判断是否小于 w[i]/SUM(w)

sum = 0
buf = 0
cnt = 0 
for i in sys.stdin:
  cnt += 1
  sum += int(i)
  if random.random() < float(i)/sum:
    buf = int(i)

print buf 

带权选 k 版. 这个有 bug, 无解, 因为无法保证最后选出来的 k 个数, 其 SUM(w[k1..kk])/sum(w[1..n]) = k/n, 那个概率无法算

分布式版, m 个序列最后选 k. 每个序列先按加强版选 k 个, 然后将 m*k 个数放到一起, 做带权版的 n 选 k. 由于带权选 k 版有 bug, 所以这里会有一定误差. 而实际上一般的分布式框架是可以保证每个序列数据规模分布都比较均匀, 所以最后的 m*k 个数可以当无权版直接选 k, 这样的误差在工业应用是可以接受的

注: 从 n 选 k 那个就可以很容易看出来, 这其实就是那个把一个序列打乱成随机状态的算法简化, n 选 1 只是 n 选 k 的一个特例

招聘算法工程师/C++后台研发工程师

人人网招聘策略工程师, C++ 后台研发工程师. 职位描述如下

算法工程师

工作内容

  • 对人人网相关产品进行数据分析, 提升产品用户体验
  • 处理海量数据, 快速开发新产品原型, 验证策略效果

职位要求

  • 有较强的数据处理和分析能力, 较强的逻辑思维能力, 对技术和产品都有很好的敏感度
  • 利用现有数据, 提升广告投放相关性, 设计新产品的策略并持续提升
  • 喜欢做有挑战的新事情, 并解决现有问题
  • 熟悉 C/C++ 语言编程, 熟悉 Linux/Shell/Python 等应用场景, 对算法和数据结构有较好理解
  • 良好的沟通能力和团队协作精神
  • 有 hadoop 或其他 map/reduce 系统使用经验者优先
  • 有数据挖掘, 机器学习, 自然语言处理经验者优先

C++后台研发工程师

工作内容

  • 维护人人网的系统开发, 提升系统效率, 稳定性和处理能力, 以及新产品的开发

职位要求

  • 优秀的分析问题和解决问题能力, 喜欢解决有挑战性的技术问题
  • 较强的 Linux 上 C/C++ 开发能力, 熟悉 Shell 编程
  • 熟悉网络编程, 多线程编程技术
  • 对数据结构和算法有较好理解
  • 良好的沟通能力和团队合作精神
  • 有相关系统开发和设计经验者优先

个人补充说明

人人是中国最大的实名社交网络, 有更真实更密集的用户数据, 我们希望通过数据挖掘, 机器学习等方法来改善我们的产品, 为万千网民提供更优质的服务.

这两个职位同时对校招和社招开放, 对于能尽快入职的社招同学或能过来实习的校招同学尤其欢迎. 由于人手不够, 会优先考虑将合适这两个职位的同学转到广告相关领域. 算法工程师后续会有较大机会参与到应用研究和改善中去.

有对职位感兴趣的同学, 请将简历直接发给我 (wen.ye@renren-inc.comi@yewen.us), 邮件标题注明 “应聘_职位_姓名

乱弹 EdgeRank

EdgeRank 是今年 Facebook 在 F8 开发者大会上提出的对 fb 新鲜事 (Feeds) 排序的新算法, 用于区别默认的按时间逆序的 timeline. 不像 PageRank 还有很多论文或学术界的资料, 目前没有什么官方资料讨论 EdgeRank, 搜到的资料大部分来自在线广告代理公司或优化团队.

EdgeRank

EdgeRank 用于当某个用户查看他的新鲜事时, 决定这些新鲜事先后顺序的一个排序算法. 算法核心是每个事件对这个用户而言的权重 E, 其计算公式是 E = u*w*d, 其中

  1. u, 事件生产者和观察者之间的亲密度
    • 亲密度主要指的是互动情况, 互动越频繁亲密度越高
    • 互动可以是单向的, 比如 A 经常关注 B, 而 B 不怎么关注 A, 那 u(a,b) 和 u(b, a) 的权重不一样
  2. w, 边权重 (主要是事件的类型)
    • 边权重主要受事件类型影响, edgerankchecker 给的关于点击跟其他事件的关系可以大概说明
      • i. Avg Clicks Per Like: 3.103
      • ii. Avg Clicks Per Comment: 14.678
      • iii. Avg Clicks Per Impression: 0.005
  3. d, 时间衰减因子
    • 比较少见到讨论时间衰减因子怎么做的, 猜测是类 log 变化
    • 如果将 EdgeRank 公式只保留 d, 则 EdgeRank 退化到经典 timeline 模式

GraphRank

EdgeRank 用于描述某事件对某观察者而言的重要性, 考虑了事件生产者和观察者的亲密度, 事件类型以及时间衰减因子. 而对于一些还不是好友关系的事件需要 push 时 (比如一些公共信息), 或是来自好友的分享, 还要考虑分享是否需要被关注, 则引入 GraphRank 的概念.

GraphRank 跟 EdgeRank 的区别主要是在 u*w*d 之外, 再加了一层事件生产者和观察者之间的相关度, 变为 u*w*d*r.

其中相关度 r 是一个和亲密度无关的影响因子, 亲密度更多受最近的互动频度影响, 相关度则是一个时间无关的特征, 描述两者相似度

EdgeRank 的意义

Timeline 模式对大多数人来说其实已经够用, 而 EdgeRank 排序后的 Feeds, 并不能有一个很好的效果评判标准. 看用户在 Feeds 模式下是否有比 Timeline 模式更好的体验怎么看? 用 item 的先后顺序和点击序列做比较? 很难, 而且因为面对的是有感情的人 难保今天我心情好愿意什么都看看, 明天心情不好就只看所谓的感兴趣内容, 那怎么判断某天的效果好坏? 难不成 fb 还能预测我心情?

从大部分广告相关的资料来看, 受 EdgeRank 影响最大的应该是那些企业用户. 以前企业用户可以花比较低的价格建立一个公共主页 (Page), 然后以比常规广告便宜得多的方式获得大量粉丝 (Fans/Follower), 对于这些成为粉丝用户, 企业的新广告就可以以几乎免费的价格推送到这些人的 timeline 中. 显然这样的结果不是 Facebook 乐于见到的, 你们都可以不花钱做广告了, 那我们喝西北风么? 而且, Facebook 也想通过 EdgeRank 让企业知道, 他的多少粉丝是僵尸粉, 都是没意义的.

回到 EdgeRank 的定义, 相比较 timeline 模式的, 区别就在多出来那两个参数 u 和 w, w 没什么好说的, 可以认为就是简单加权, 或者考虑事件对用户的重要度, u 才是 EdgeRank 的核心所在. 如果 a 跟 b 互动少, 那么 u(a,b) 值变低, 则导致 b 发布的东西在 a 那的排名就会很低, 如果把 a 看成一个粉丝, 而 b 是某企业的主页, 则这个主页发布的消息在这个粉丝这可能就完全看不见了.

所以, 为了保持现有粉丝的有效性, 企业必须经常发布一些互动活动来保持现有粉丝的活跃度, 否则千辛万苦弄来的粉丝都没意义了. 而同时为了把那些已经僵尸掉的粉丝挽救回来, 以及扩展新粉丝, 企业还是需要投放大量广告, 这样 Facebook 的广告业务就不会因为公共主页粉丝数变多而衰落, 整个公司也就能一直维持很好的盈利状况了. (最后这段有点阴谋论和职业敏感在里面, 大家看看就好)

参考资料

  1. http://techcrunch.com/2010/04/22/facebook-edgerank/
  2. http://edgerankchecker.com/edgerank/learn
  3. http://edgerankchecker.com/blog/
  4. http://www.socialmediaexaminer.com/6-tips-to-increase-your-facebook-edgerank-and-exposure/
  5. http://qing.weibo.com/2282115205/88065085330003gq.html

Hadoop Streaming 的奇怪问题

之前一直在百度用内部改过的 hadoop 版本, streaming 接口下, 一直将 map command 写成 “sh mapper.sh | sort | sh combiner.sh” 来做人肉 combiner, 相安无事. 到人人后, 发现这个做法有问题, 今天测试了下, 果然很奇怪, 求 hadoop 大拿解答.

当前实验的版本是 hadoop 社区 0.21.0

实验 1. 跟经验不符的情况

mapper.sh

awk '{print $$}'

reducer.sh

wc -l

map command

sh mapper.sh | sort | sh reducer.sh

这时候, 单个 map 并不只输出一行信息, 而是一行输入会导致一行输出

实验 2. 符合预期, 但很别扭的写法

修改 mapper.sh 如下

awk '{print $$}' | sort | wc -l

修改 map command 如下

sh mapper.sh

这时候, 单个 map task 输出就只有一行了

实验 3. 不得已再封一层的方法

基于实验 1 新增一个脚本 xp.sh 如下

sh mapper.sh | sort | sh reducer.sh

并修改 map command 如下

sh xp.sh

这时候的效果和实验 2 结果一致

结论

至少在 Hadoop Streaming 0.21.0 这个版本里, 其执行方式并不是 cat input_data | map_command 这样, 其中 map_command 必须是一个单指令时才符合这个假设