移动开发的那些事(上)

作者:Lucida

  • 微博:@peng_gong
  • 豆瓣:@figure9

原文链接: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

  • 微博:@peng_gong
  • 豆瓣:@figure9

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

转载于:https://www.cnblogs.com/figure9/p/on-mobile-developing-1.html

移动开发的那些事(上)相关推荐

  1. 【优秀奖】Java开发那点事征文

    Java开发那点事征文   Jinmin Yuan   年少轻狂时,对技术的追求是头等大事,职业规划的书当时好像没有,即使有当时也肯定会视而不见.所有的路全靠自己去摸索,现在回头看看,真希望时间能够倒 ...

  2. 华为手机怎么刷android系统,怎样刷入安卓原生系统 在手机系统更新这件事上,小米华为和OPPOvivo谁更有良心...

    原标题:在手机系统更新这件事上,小米华为和OPPOvivo谁更有良心? 用国产手机的朋友可能都有一种感受,对于系统升级这块,有的厂商很积极,但有的厂商却非常的不积极.比如小米,华为,一加等在系统升级方 ...

  3. android 怎么封装方法,开发那点事(九)安卓开发,封装常用方法,工作用

    开发背景 思路来源于开发那点事(八)在js的基础上封装的一些功能,这次写了一个安卓项目,并封装了网络请求,加载对话框,等常用的一些方法 公用方法 1 Common,LogUtil等工具类抽取 2 Ap ...

  4. 程序员在主动要求涨工资这事上,千万不要学我!从我的第一份工资800开始说起

    在主动要求涨工资这方面,不要学我,为什么? 因为在我工作的十几年里,我从来都没有主动要求过涨工资.这不是优点,这并不对! 先说说我的经历,工作这么久,待过很多公司,我在涨工资方面一直很被动. 经历一 ...

  5. 保护小学生这件事上,腾讯拿出全球最严防沉迷措施

    欢迎关注"创事记"的微信订阅号:sinachuangshiji 来源:深响(ID:deep-echo) 文/马小军 在未成年人游戏保护这件事上,腾讯是一个执拗的.走在前面的人. 你 ...

  6. 在卖咖啡这件事上,究竟怎样才是“新零售”

    在新零售之风吹遍各行各业的今天,凡是卖东西的,如果不跟这个新名词搭上点儿关系仿佛就已经落后于时代.落后于时代的后果是什么? 东西卖不出去呗. 新零售的形式有很多种,其涉及到线上线下.物流快递.门店科技 ...

  7. 把有限的精力放在最有意义的事上

    人的生命有限,精力更有限,如何把有限的精力放在有意义的事上,才是最重要的. 1.工作上,不做'飞机搞',就是工作时间不做那些和工作无关的事.想着做好工作,提高工作质量和产出. 2.学习上,网路上知识林 ...

  8. 【arduino】arudino开发ESP32 SPIFFS文件上传方法

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 之前发过ESP8266的SPIFFS文件及上传方法: [arduino]arudino ...

  9. MPU6050开发 -- 在 C52 单片机上测试

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78616706 用了三篇文章,从 MPU6050的初识,相关基本概念,到 I2 ...

  10. 使用java spring开发ckeditor的文件上传功能(转)

    说明:原帖提供的代码无法直接运行.本人在原帖基础上做了一些修改,修复了一些bug. 关于CKEditor的使用,网络上有无数的文章,这里不再赘述.而关于java支持的文件上传功能,网络上同样有千千万万 ...

最新文章

  1. kamctl start
  2. Unity3D for iOS初级教程:Part 2/3
  3. 岭回归和lasso回归_正则化(2):与岭回归相似的 Lasso 回归
  4. 房价越高的地方资产越高?北京户均资产890万?
  5. boost::hana::sort用法的测试程序
  6. fatal error:can't open and lock privilege tables:table 'mysql.host' doesn't exist
  7. 波特率_不同波特率CAN总线系统如何进行数据收发
  8. html中flash的使用,[转载]flash中可以使用的HTML标签[有用]
  9. html 物流状态,使用css实现物流进度的样式的实例代码
  10. ibm刀片服务器系统瘫痪,ibm刀片服务器系统安装资料
  11. 投影机拼接融合技术--UE4拼接
  12. python:图片显示
  13. 深入理解Attention及变种(二)
  14. CICD篇-Travis-CI环境搭建
  15. 如何用html来编写ppt,impress.js——用HTML“写”幻灯片
  16. JNPF快速开发框架的八大功能介绍
  17. 基于netty的浏览器客户端打印控件实现
  18. fastadmin创蓝短信插件第二版
  19. Mysql系列 - 第八篇 :详解排序和分页(order by limit),及存在的坑
  20. java小恐龙游戏_【分享】 chrome恐龙小游戏 java

热门文章

  1. 图片洗牌切换动画特效
  2. SQL tp3.2 批量更新 saveAll
  3. 优化程序性能(CSAPP)
  4. 【三支火把】--- 关于UEFIPCD的总结介绍
  5. 算法总结之 将单链表的每K个节点之间逆序
  6. Linux-文件目录命令
  7. UDP穿越NAT原理(p2p)
  8. Oracle 性能诊断艺术 第四章 笔记
  9. Python基础灬函数补充(作用域,迭代器,生成器)
  10. Vue.js起手式+Vue小作品实战