移动开发的那些事(上)

移动开发的那些事(上)

作者:Lucida

原文链接:http://lucida.me/blog/on-mobile-developing-1/

关于

“移动开发的那些事”是一系列文章,我在开发移动应用时经历的见闻轶事,每篇文章由3个移动开发相关的小故事组成,上中下一共三篇,所以一共是9个故事。

这系列文章不是技术文章——但我打赌你会从中看到一个很不一样的移动开发——或者说是一个具有中国特色的移动开发——并且能学到不少东西——不信的话就继续阅读。 :-D

  1. 入坑
  2. 刷榜
  3. 人造用户

入坑

我在读研时很幸运:不同于其他研究生导师,我的导师张莉老师给了我充足的时间让我做各种自己感兴趣的事情。因此我既阅读了大量计算机书籍(程序员必读书单这篇文章中的大部分书籍都是我在读研时阅读的),也阅读了不少经典计算机论文。

当然还做了很多移动应用,这才是这篇文章的重点。

其实本来我的读研生活应该是就这样读书读论文然后找工作(当时我真的连找实习的念头都没有),直到我参加了一次豆瓣读者书友会。

在研一下学期的一次Jeffrey Richter读者书友会中,我误打误撞(原定的翻译因病缺场,因此我就自告奋勇上台了)的为Jeffrey Richter进行了现场口译,由于我翻译的还不错,所以引起了书友会的另一位嘉宾方敏(当时是微软的Principle Testing Manager)的注意,在他的鼓励下,我得到了微软的实习机会。

微软的实习环境很宽松,于是我一边做实习任务,一边在微软阅读各种计算机书籍和经典论文论文,并顺便翻译了一本JavaScript小书(JavaScript修炼之道)。

之后,由于研究生开题和实习时间冲突,我离开了微软。然而花了两周时间准备好开题之后我又闲了下来,但由于已经有了实习经历使得我根本闲不下来——巧合之下,受朋友的邀请,我加入了一个小创业公司OctInn制作iOS应用,尽管在这家公司我只待了不到一个月,但创业公司的文化让我大开眼界——从零开始制作产品,进行市场推(Shuā)广(Bǎng),根据用户反馈快速迭代,从而打造用户需(Tāo)要(Qían)的产品。

从而正式跳入了移动应用开发这个大坑。

刷榜

刷榜算是移动开发界公开的秘密——因为做一款应用容易,但如果想把应用推到排行榜前列(尤其是Apple的AppStore)就没那么容易了。每个应用市场都有自己的排行榜算法,但无外乎是下载量+评论量+打分,其中评论和打分的权重相当高(所以你会看到很多应用都在无时无刻的乞求你打个好评)。

下载量很难在短期积累起来(没有那么多的itunes账号),但评论和打分就要容易很多(2011年时1000个好评就足以把一款新应用推到AppStore排行榜前十名)。这也就催生了各式各样的刷榜服务——印象里当时淘宝搜刷榜可以搜到上百个结果,一条评论的价格从两毛到一块,千条以上的评论可以再打个八折,此外还有包周包月服务(例如保证你的应用在这周内一直是前10名),一应俱全,无比贴心。

辛勤的刷榜工

所以故事是这样的:我朋友的一个朋友在做iPhone应用,为了推广应用,他在刷榜上就花了上万元,但效果还是不理想。

苦逼了数日后,他突然开了窍——既然刷榜这么贵,我帮别人刷榜岂不更赚!?于是他注册了几个邮件服务器,搞了几十台旧电脑,写脚本注册了一万多个itunes账号,然后架网站开网店提供刷榜服务。

结果第一周他就把之前做应用(包括刷榜)的成本收了回来。

两个月后换了一辆崭新的宝马7系。

土豪撒钱

我无法证实这个故事的真实性,但我倾向于相信它:一方面因为当时的刷榜确实是铺天盖地,另一方面因为我自己也做与过类似刷榜的活,这就是下一个故事。

人造用户

严格来说我做的并不算是刷榜,而是一个严肃的算法问题 -_-#

  • 刷榜的第一步是需要制造大量的用户;
  • 注册用户的第一步是提供用户名;
  • 所以说刷榜的第一步是制造出大量的用户名;
  • 而这正是我要解决的问题。

估计你的第一反应是,生成一个用户名还不简单,一个前缀加一串随机数不就行了嘛!没错,事实上不少国内互联网公司在早期“积攒”用户量时就会用这种方式,生成一堆诸如“手机用户1879102471829”或“老鼠爱大米52178903729”之类的诡异用户。

但并非所有公司都这么没追求——比如一些有追求有信仰的公司认为“手机用户1879102471829”这样的用户名太low逼——尼玛这也假的太明显了吧!

于是我就接到了一个这样的神奇私活,要求生成五百万个中文用户名,五百万个英文用户名,用户名不重复,且不能假的太明显。

贱表情

英文用户名很容易生成,因为英文就26个字母,元音就是AEIOU辅音就是剩下的BCDFHGHJKLMNPQRSTVWXYZ,再加上一些诸如ui,ae,en,ia之类的组合元音和Kn,Ch,Rh,Cz之类的组合辅音,我很快就有手工打好了一个元音表和一个辅音表,接下来把元音和辅音交替相连,就可以生成诸如“Rhonada”,“Knaemia”,和“Yoshida”之类的“逼真”英文名。

举个例子

  1. 随机选一个辅音——得到“Z”;
  2. 随机选一个元音——得到“oe”;
  3. 随机选一个辅音——得到“d”;
  4. 随机选一个元音——得到“ah”;
  5. 程序终止——返回“Zoedah”。

中文用户名的生成就没有那么容易了——因为汉字实在太多,但好在网上有各式各样的姓名库,于是我扒了几个姓名库合并了下然后枚举组合很快就凑齐了五百万个中文用户名。

这下任务就完成了!我发了部分用户名给客户,客户表示很满意英文用户名,但他同时表示中文用户名真的有点太假——因为很多中国人起名时并不会使用自己的真名,而是起一些流行语/数字/明星之类的名字(比如“卷福爱花生”或是“李敏镐521”之类的用户名)。

打脸

仔细想想,客户说的话很在理——于是我又重新调整了程序——这次的生成代码要复杂很多,它会首先选择一个分类(动物/动漫人物/明星/地名/动词)下的一个词,根据选中的分类,它会再从随机从下一个相关分类中选一个词,然后一定概率停止,一定概率继续选择。

再举个例子

  1. 随机选一个分类——得到地名;
  2. 在地名分类下随机选一个词——得到“加州”;
  3. 随机选一个和地名相关的分类——得到菜名;
  4. 在菜名分类下随机选一个词——得到“红烧肉”;
  5. 程序终止——得到“加州红烧肉”。

贱表情

客户这次终于满意了,在付清了余款后,我就把剩余的“千万用户”发给他,他表示很满意很Happy。

然后没过多久我就在网易新闻看到某国内知名互联网企业宣称自己用户量突破千万。

贱表情

好吧也许是巧合。

你知道的事太多了

未完待续


作者:Lucida

原文链接:http://lucida.me/blog/on-mobile-developing-1/

posted @ 2015-03-07 08:15 _Luc_ 阅读(...) 评论(...) 编辑 收藏