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 必须是一个单指令时才符合这个假设

讨论下密保, 找回密码和申诉

想起来写这么一篇完全是因为最近在酷壳 (CoolShell) 上看到这么一篇 http://coolshell.cn/articles/5987.html 并在后面跟人口水战了一把, 有一些想法提出来.

首先, 密保. 密保应该是在密码外, 多出来的一层或多层安全措施, 可以是另外一套校验码 (比如以前 WoW 的充值卡背面的阵列数字), 也可以是短信或类似的动态口令, 还能是硬件 (比如 U 盾). 其目的都是为了使得帐户更安全, 当密码过于简单被人破解, 或被不该知道的人知道密码后并不能进入帐户. 这个东西很赞, 很多时候也很烦, 所以一般不是特别要紧的东西, 相信大多数人都会尽量放弃密保. 今天我去尝试了下 Gmail 的两步登陆, 发现把整个工作量增加了很多, 而且如果手机丢了, 登陆帐户将非常麻烦, 没补过手机卡, 不知道这个纠结的时间会持续多久, 所以最后还是取消掉了. 之前 QQ 的异地登陆密保卡也因为宽带动态 IP 经常被识别成邻省而烦不胜烦, 最终取消. WoW 的密保卡也是经常忘了在哪, 电脑里保存的电子版要切出来看一下再切进去输一次, 巨烦无比, 最终也放弃. 倒是银行的一直不敢动, 还有以前公司的 Token, 一是这俩用起来比较简单, 二是实在关系要紧事, 不敢怠慢.

然后是找回密码. 顾名思义这个功能应该是密码忘记, 或被他人恶意篡改后需要找回来的时候需要. 一般密码找回无非是用备用邮箱重置密码, 或用绑定过的手机接收一个校验码来重置密码. 但是, 如果比较悲剧的是备用邮箱压根没绑定, 或一起被盗, 手机也丢了的情况下, 只能各种叫天不应叫地不灵, 这时候就需要走到下一个功能的流程里去. 顺便说下, Facebook 有一个非常好玩的找回密码功能, 他把你经常联系的好友照片展示给你, 让你选这是谁, 或者给你个名字让你选哪张照片是他, 连续若干次, 如果对了就让你重置密码.

申诉, 个人感觉这又是企鹅家非常有特点的一个服务 (或者说过度设计的一个坑爹功能). 其他服务的帐号, 丢了总有办法找回来, 邮箱也好手机也好, 重置下就行. 如果没绑邮箱又没绑手机, 这时候找不回来只能说明这个东西并不重要, 只能算了, 或者通过一些诡异的私人渠道去联系帐号所在服务的所有人去进行重置, 但是这种方式的可行性实在太差 (我只在 BBS 上帮人干过这事 -___-), 而 QQ 号就是这么个神奇的东西, 他对很多人很重要, 但是很多人又没有绑邮箱/手机的意识, 特别是早些年, 有手机的人都不多, 怎么绑? 而且好多人唯一的一个邮箱就是 QQ 邮箱… 这时候, 只能上土办法, 人工申诉. 当然, 腾讯做的稍微自动化了一点, 提供一些以前的密码, 或注册时的一些个人信息, 以及一些好友信息, 就可以进入申诉流程处理. (我不了解后面的具体流程, 我猜是机器做大部分数据判断, 如果明显符合可能不用触发人工审核, 比较含糊的将数据准确性交由人工最终审核)

原帖中争论的几个焦点和我的看法是

1. 腾讯是否有权收集用户信息?
狗: 我个人觉得腾讯压根犯不着在这个地方收集身份证号等信息, 要想弄, QQ 整个游戏产品线都非常容易收集, 而手机号这些, 本来如果要办密保就该提供吧, 只是如果没有这些信息, 实在想不出申诉怎么申

2. 腾讯为啥把找回密码这么简单一事就弄成这么复杂的申诉流程? 直接找回不就完了?
狗: 要知道腾讯活了多少年了, 之前的多少用户的信息是不全的, 压根没法按常规方式找回密码. 比如原帖楼主, 一个多年不用的号突然要用, 密码被盗或自己忘了, 当时没绑手机, 邮箱不知道是否就是自己现在在用的, 那只能进入申诉流程. 我自己最早的 QQ 号是 01 年开始用的, 而我 05 年才拥有自己的手机, 而且随着上学, 实习, 工作, 这些年已经换了好几个号, 不是每次切换都会记得把这些号都转一次的, 有时候也没法转 (我去香港呆过半年, 手机号换香港的, 则大陆的号可以取消绑定, 而香港号无法绑定上密保, 你让我怎么办? 绑老爸的?), 而邮箱, 因为 Gmail 太好用, 我以前留的那个 Yahoo 邮箱早被删号了, 而如果 QQ 密码不丢, 估计我也会忘记有这么回事. 而更多的群众用户的情况是, 压根不用邮箱, QQ + 百度就是他们的网络入口, 手机号非常勤快的说换就换, 都不在乎后面会有什么关系. 所以, 除去少部分精英, 大部分人并没有常规找回密码的意识和能力

3. 不能引导教育用户跟精英一样可以享受密码保护功能么?
狗: 这个… 如果大家愿意去调查下, 这个还真的很难… 当然, 做还是要努力去做的, 拉动一部分是一部分. 而在提示安全信息上, 老实说腾讯做的还比较好了, 提示加入密码保护, 威逼利诱绑定手机等信息, 聊天里随便说点和钱有关的就会弹信息提示注意资金安全, 应该有些用, 但是还是架不住更多的人是小白这个事实. 最重要的, 这些小白你没法抛弃, 3Q 大战已经很好的揭示了强制等手段是无效的, 还可能起到反作用

4. 那申诉流程能靠谱点么?
狗: 我记得我曾经申诉过一回, 感觉还算合理, 要求提供以前用过的几次密码, 注册时间地点, 一些好友信息 (QQ 号, 备注名什么的) 等, 相信这些资料不可能 100% 对上, 那就只能触发人工审核看有多少的匹配度, 或者机器也可以设个阈值直接判. 除了这些, 真想不出有啥靠谱的方法. 比如 Facebook 那个非常赞的功能, 放 QQ 上就未必适用, 一个是实名真实网络的延伸, 一个更多的是虚拟关系, 我 QQ 上很多人我未必就记得他们的很多细节, 经常联系的人, 可能也会忽视他们的一些变化 (比如头像等)

5. 别人可以恶意申诉, 然后自己又要申诉回来
狗: 这个没遇到过, 不好评价, 不过考虑到本来申诉的适用场景, 如果有人通过社会工程学获得一些个人信息, 然后去恶意申诉抢帐号, 那似乎也是无解? 不然如果自己帐号真丢了去申诉时, 怎么判断哪个真那个假?

总结
这个事情在腾讯那 (在人人上很可能也一样) 就是无解的, 而目前这个解决方案已经是比较好的妥协各方利益了. 我 BS 小白和喷子, 但更 BS 那些只活在理想国里干着喷子事的所谓 “精英”, 就跟最近微信启动页上引用的 M.J. 的那句话: “如果你说我是错的, 那最好证明你是对的”. 有能力去调研下实际情况, 然后给出有效解决方案, 比建立在自己假设上提出一堆看似牛逼实则无用的方案要踏实的多.

P.S. 当然, 我也没有提出更优的解决方案, 所以, 我同意被划到小白和喷子的行列, 不过, 那些 “精英” 请不要站在道德制高点, 显得好像你就高人一等, 同时还是一样的乱喷.

原教育网 blog 基本迁移完毕

http://whusnoopy.blog.edu.cn 上的所有文章迁移了过来, 由于其导出功能和 RSS 都有莫名其妙的问题, 所以是人肉弄的, 而且没有导评论过来了. 累死了.

教育网 blog 是第一个开写的地方, 也是认真写了好多年的地方. 导数据的时候, 也一篇一篇看过去, 曾经也过的那么的有声有色, 有开心有难过, 有温馨有痛苦. 里面最多的几个话题, 一是 ACM 相关, 二是大学的记录 (包括后面找实习等), 三是有关感情的思考和故事, 还有一些 BBS 上零碎的转载 (包括世界杯等). 有一些自己都忘记了的事情, 再捡起来, 五味杂陈.

接下来会把百度空间的文章导过来, 这也是个导出功能和 RSS 有问题的地方, 恨, 还好文章没有教育网博客那么多了

百度, 再见

正如昨天的一系列状态, 照片等描述的, 我从百度离职了. 离职这个消息似乎震撼了不少朋友, 关注最多的问题是 “为什么要走” 和 “去哪里”.

引用下昨天的告别邮件, 应该可以解释一些东西 (个人信息部分马赛克了)

Hi all,

因为个人原因, 叶文将离开百度, 今天是我在百度工作的最后一天

还记得 07 年夏天第一次来百度实习, 当时那个空有一腔热血却什么都不懂的毛头小伙, 来到业界跟着大家学习如何的用技术改变世界, 去让生活更美好. 当时发现, 原来不仅仅是学校可以这么轻松平等和自由, 在百度的沟通交流可以更简单, 那么多简单加在一起就变成一份又一份的可依赖. 百度,是梦开始的地方
回去读研并在外晃荡了一大圈后, 还是百度接纳我, 让我能跟这么牛的你们一起做如此有创造力和挑战性的工作. 开启凤巢, 用数据去驱动机器学习, 让系统自我学习自我进化, 去提升网民体验, 提升广告主效率, 提升我们的变现能力, 去改变世界, 改善生活. 百度, 是梦一步一步实现的地方

非常抱歉接下来没法和大家一起前行, 我想要自私的去实现一些自己的小梦想, 对那些未竟的共同梦想, 只能说一句对不起

非常怀念我们在一起奋斗的日日夜夜, 一起干活, 一起思考, 一起追问题, 还有一起吐槽和打闹, 跟每个人共事都是那么的开心, 顺畅和自在, 能认识你们, 真好
非常感谢每个人对我的指导和帮助, 容忍我的错误, 带我高速成长. 非常感谢大家一直以来的关心和照顾

接下来我还会在北京, 手机号 159****5701 预计用到下一个春节, 其他联系方式:
手机: 186****9231
邮件/Gtalk: whu**@gmail.com
QQ/Hi: i@y**.us
MSN: whu**@msn.com

再次谢谢大家, 请保持联系, 祝大家生活工作一切顺利
再会!

叶文
2011-11-08

具体的解释:

  1. 我没有去创业, 而是到了人人网, 希望能在这边做一些和推荐相关的工作
  2. 离职的原因可以有很多, 但是对应起来更多的是留下的理由. 扯那些没用的理由太虚伪, 最直白简单且无可辩驳的理由是: 这边离 MM 更近一点, 看看最近我显摆晚上能回去吃饭, 中午偶尔也回去弄吃的就能明白这是一种怎样的幸福
  3. 竞业? 首先做的东西已经不一样了, 而且是没有什么竞争关系的业务, 哪怕技术基础是相通的, 还是没有关系的, 否则百度出去的任何一个人都不要想继续找工作了, 因为任何一个方向都是百度现在或未来的发展方向. 然后我还是小兵一个, 没签, 也犯不着被竞业