博客首页|TW首页| 同事录|业界社区
2011-03-02

术语是一个细分领域的语言,对于行外人而言,它就像英语之于母语的汉语,所以 进入一个领域了解相关的术语是重要的,也能够保证你知道关注什么,用什么来沟通, 因为通常术语就包含了这个领域中最重要的一些概念,思路和研究方法.

社交游戏 是我目前所处的领域,它是一个新生的行业,它有传统游戏所关注的ARPU等, 也有自身所关注的ARPPU等,所以让我不妨看看这个领域有哪些术语值得我们关注和理解.

下面的内容是翻译自 GLOSSARY OF ONLINE GAMES 这篇文章,英语好的不妨直接看原文.

另外所引文的网站也 社交游戏 领域非常值得关注的内容来源,十分推荐.

下面是内容:

同游戏行业一样, 广告行业也充满了容易混淆的术语. 因为游戏发行和游戏营销已经非常紧密地联系在一起,所以 非常容易产生术语的混淆.

下面的内容是我从 如何发布游戏 这本书中摘取出来. 一旦后续有新的被业界接收的术语术语,我也会将它增加到下面 的列表中. 如果下面的列表中没有你期望的术语,请来信告诉我.

A/B testing 也称为对比测试.A/B测试通过对线上网站或者游戏分别进行 再次小改动后的对比测试,来确定哪个改动更加有益.
Ad Server 例如OpenX或者DoubleClick的动态广告报告与目标定位这样的web工具, 能够智能地发布连续的广告活动.
Affiliate marketing Affiliates是通过自己的网站来将用户引导到你的站点来取得收入的 第三方网站(基于CPC或者CPA).它们通常由Affiliates联盟来管理,这样 的联盟例如Commission Junction或者TradeDoubler.如果你将你的玩家 引导到Amazon或者iTunes来出售自己的游戏,那么你可以注册并且自己 本身成为affiliate,通过向这些网站导入流量获得生额外的收入 (通常有5%-10%的额外收入)
App 现在的意思是针对iPhone或者Android这样的智能手机的应用, 以区别于通过移动手机来访问网页.
App Store 针对iPhone的苹果在线应用商店
ARPU 每个用户的收入.从移动行业引进的指标,这个指标表明一个用户 平均花费,通常是针对一个月而不是一年的数据.应该与ARPPU区别. (Averge Revenue Per User)
ARPPU 每个支付用户的平均收入.ARPU和ARPPU之间很容易混淆.在一个免费的 游戏中(指的玩是免费,例如大多数的社交游戏),通过都有数百万的用户 数,但是只有百分之一的用户来支付.大多数游戏公司更多使用ARPPU, 而许多人通过将ARPU和用户数来计算出总收入.为了计算总收入,或者 将ARPPU乘以支付用户数,或者ARPPU乘以总用户数再乘以转化率. (Averge Revenue Per Payment User)
CAC 新用户开发成本,也叫CPA (Customer Acquisition Cost)
CANSPAM 2003年美国的一项法律,用于规范在美国发送商业邮件.
Churn 客户流失率,通常指一月或者一年用户的流失百分比
CPA 每个新用户的开发成本.一种在线的广告模型,在这个模型中,当媒体网 站成功地将一个客户引入到广告投放商的网站并且客户执行了某些特定 的行为,此时广告投放商向广告媒体网站支付每次支付一定的现金. 特定的行为,可能是填写一个表格或者注册为会员,但是最常见的行为是 进行一次支付.例如,EVE Online会向成为订阅者而支付7美元.这个指标 也学用户于游戏开发者或者媒体网站,来作为一个关键的指标以衡量他 们从各种营销来源中获得一个客户的成本. (Cost Per Acquisition)
CPC 每次点击的成本.一种在线的广告模型,在这个模型中,广告投放商会为 每次用户的点击来付费.Google的AdSense程序是基于CPC的. (Cost Per Click)
CPI 每次安装的成本.一种在线的广告模型,当前只是局限在iPhone平台上, 其中开发者或者发布者为每次成功的安装进行付费. (Cost Per Install)
CPM 每千次的成本.所有媒体(包括电视,广播,印制,和网络)上的广告的主要 量度.这个指标衡量的是一个广告每千次浏览的成本.如果单指网络, 则指的是对于单条广告的一千次浏览.(Cost Per Mille)
CPT 每千次的成本,同CPM.(Cost Per Thousand)
DAUs 日活跃用户数.(Daily Active Users)
DLC 可下载内容.通常我认为这个指的是已经被下载的任意内容.实际中,它 指的是针对打包好的物品可以被下载的额外内容(免费或者支付). (****able Content)
eCPM 每千次的有效成本.用于比较针对标准的CPM活动和CPC/CPA活动的方法. 通过聚合CPC/CPA收入的总数,并除以广告被浏览的次数,可以计算出 有效的CPM.(Effective Cost Per Mille)
EIS 企业投资模式,为了鼓励对于早期创业的投资英国政府推出的一项创新 模式. (Enterprise Investment Scheme)
F2P 免费玩.(Free to Play). 同Freemium.
Freemium 一种商业模型,在这个模型中,核心游戏是免费可玩的,通过对虚拟 物品或者高级服务进行收费.
Free To Play 也叫F2P,同Freemium.
GaaPy 游戏作为产品.(game as a product)
GaaSy 游戏作为服务.(game as a service)
Geo-targeting 仅对一个特定的国家的人展示内容(通常是广告)
Impression 在线广告的基本单位.当一个用户看见一个广告,则计作一个impression
IP 知识产权.或者网络协议. (Intellectual Property/Internet Protocol)
Match Three 一种游戏玩法,也就是当用户将三个或者更多个类似对象连在一起从而 让它们消失的玩法.钻石迷阵是一个经典的Match Three游戏.
MAUs 月活跃用户数.(Monthly Active Users)
Metacritic 用于对游戏,电影或者音乐的评价得分进行聚焦并给出一个混合的 “平均分”的网站.权重计算的算法并不公开,但是Metacritic是对于 游戏很好的反应指标.
Meta tag meta tag是位于一个网页<head>部分的标签,它包含这个网页的内容. 通常与有效的SEO相关,但是已经不再像之前那么有效.有一个很好的 “关键字”和”描述”非常重要,但是对于SEO而言高质量的页面设计比 修改meta tags更加重要.
MMO 大型多人在线游戏.(Massively-multiplayer **** game)
PSN PlayStation网络.(Play Station Network)
Publishers 在游戏领域,”在未来数字产品发布中无立足之地的吸血鬼”(摘自David Lau-Kee).在网络广告领域,发布商通常是指网站,例如与广告发布商 讲述他的基于浏览器的游戏的开发者,也通常认为是发布商.
Registered users 在线领域常常提到但没有用处的指标.一个成功的网站需要活跃用户, 而它是由独立用户来衡量的.
Remnant 以较低的收费出售的广告,典型的例如通过网络.之所以称作”remnant”, 是因为从网络购买广告的广告投放商并不能确切地知道他们的广告会 在哪些网站上展示,因此他们支付一个较低的CPM或者CPC费用.
Smartphone 新一代先进移动扶持设备,例如iPhone,Palm Pre或者Android操作系统
SEM 搜索引擎营销.为出现在搜索结果排名支付费用,例如Google,Yahoo 或者MSN. (Search Engine Marketing)
SEO 搜索引擎优化.通过将一些关键的搜索词组包含到自己的网站中来达到 通过搜索引入更多的的流量到自己网站的过程.
Triple A 一种高级的营销主题,目标通常不少于1百万个单位.
Unique user(visitor) 独立用户或者独立访客是网站的一种标准的流量衡量指标.通常指的是 一个用户在过去30天里访问一个网站,无论它访问多少次,都计做一次. 一些网站使用不同的时间区间,例如2周,3个月等.
UGC UGC即用户创造内容,是指一个游戏或者网站中由用户创造的内容. 小巨星中创造的等级,基于第二人生创建的内容,第一人称射击游戏中 用户自己创造的增强程序等,都是UGC. (User Generated Content)
XBLA Xbox Live上的一项游戏下载服务. (Xbox Live Arcade)
XBLIG Xbox独立制作游戏. (Xbox Live Indie Games)

最后生成一个术语大全图供大家查看方便(点击查看大图):

2011-02-28

Django 的Admin系统是 Django 几大killer feature之一, 所以对它的一些研究对于熟悉 Django 及其应用都有重要价值(因为Admin系统 是一个完整的 Django 应用示例).

http://towerjoo.blog.techweb.com.cn/files/2011/02/django_logo.png

本次大致的研究过程如下:

  1. 将 Django 的Admin系统拷贝出来,在一个新的 Django 项目中作为独立应用来运行
  2. 对这个独立的应用进行一定的修改
  3. 理解和分析Admin系统的设计和代码书写值得学习和注意的问题
  4. 总结

相关的代码可在 github 查看和检出,也可 下载zip后的代码 。 (techweb会过滤掉一些字符导致无法正确显示和访问,正在协调解决)

将Django的Admin系统作为独立应用来运行

  1. 使用django-admin.py startproject myadmin新建一个新项目
  2. 将django的原文件拷贝到新项目myadmin目录下
  • 找到django的安装目录, 如果不知道,可在python的交互式prompt下输入:
  • import django
  • print django.__file__
  • 那么 Django 的Admin应用就在DJANGO/contrib/admin/
  • 将整个目录拷贝到myadmin目录下
  • 如果需要,则调整相关的文件权限
  1. 修改myadmin项目中的settings.py和urls.py
  2. 同步数据库(syncdb)和运行代码

这时我们的第一个目标得以实现,因为根据Python语言package的导入规则(或者叫module search规则), 相对引入(relative import)会覆盖系统的django module,所以myadmin项目中运行的是myadmin下的 admin项目,而不是系统安装的。

为了检验,我们不妨可做一个简单的修改来证明,我们使用的是myadmin下的admin,我们在myadmin/django/contrib/admin/sites.py 的248行加入一句: import logging; logging.debug(”My Edit here”)

使用浏览器请求http://127.0.0.1:8000/admin/, 则你可在输出的log中看到上面的log.

对Admin系统进行一定的修改

我们打算做以下几点修改:

  1. 在一个具体的table的显示页面,增加导出csv的功能(也就是将当前查看表的数据导出为csv)
  2. 在一个具体的table的显示页面,增加快捷的聚合操作的支持(如sum,average等)

修改1

通过阅读代码,大致的修改步骤如下:

  1. 找到显示页面对应的template(change_list.html),也可使用方便的debug_toolbar来查看
  2. 添加导出为csv的链接
  3. 增加相应的url映射(options.py第254行)
  4. 增加相应的处理(options.py第773行)

相应的csv逻辑还是比较简单的,当然我只实现了将此表中所有记录导出的功能,部分数据导出的功能并未实现。

在实现的过程中,找到相应的url映射和及处理逻辑是比较重要,和相对较难的,大致的过程如下:

  1. 入口是: admin.sites.urls,发现其是一个property
  2. 继而找到get_urls方法,得到相应的url映射,发现对于特定model的url映射是对应各个model的urls属性
  3. 继而找到options.py文件,同样发现其是一个property
  4. 继而找到get_urls方法,及其相应的url映射,这里便是我们要添加我们的url映射的地方
  5. 然后加入相应的url映射的处理逻辑即可

从上面的代码我们会发现django的逻辑很清楚,而且层次分割和明确。

修改2

基本的步骤同修改1,只是在功能和界面上有所调整。

在修改2的完成中,我们使用了

  1. forms
  2. database aggregation

最终的结果可见下图:

http://towerjoo.blog.techweb.com.cn/files/2011/02/django_admin_result1.png

分析与总结

请查看下篇文章

2011-02-21

不知道你是否已经厌烦了点击开始菜单,找到合适的应用,点击应用这个繁琐的流程, 是否想着一个命令或者一个操作就打开自己想要的应用,本文就是说明在主流的操作系统(Win,Mac,Linux)下 最常用的快速启动应用.或许你每天都在用它们,或许你是第一次听说,无论如何不妨可以 来尝试下,那种快速直达的快感.

文中不讨论过多的复杂应用,只是想实现一个简单的目标,即快速地打开自己想要打开的应用.让我们开始 这次提高自己生产力之旅吧.

Mac

首先说到的是苹果的Mac,是因为Mac下的 Quicksilver 可谓是这几个类似应用下最成熟和最让人欣喜的应用.


有了它后,你的流程则是,调出 Quicksilver ,输入目标应用名字中所含的字符, Quicksilver 会自动匹配, 当找到自己的目标应用后,点击回车即可.

这个过程便完全使用键盘完成了,至于键盘之于鼠标的高效性,不妨可参考Xuyou的系列文章 完全用命令行工作-1: 拔掉你的鼠标.

来自 发布者 的描述:

For those of you not familiar with Quicksilver, it’s an application that lets you reach any program, folder or file in a few keystrokes. You don’t have to go searching through your files, you don’t have to worry about how your folders are arranged. For many, Quicksilver was a godsend in the pre-Spotlight Mac era. Although it’s lost some of its importance with the new powerful search and Finder features in Leopard it still remains very much an excellent Mac application.

Win

我们再来看Win, Win下我试了不少的类似软件,最后还是比较喜欢的是 Colibri, 它没有 Quicksilver 那么强大, 但是在快速启动应用上得心应手.


来自 Colibri 官网的描述:

Type Ahead — Information at the Tips of Your Wings

Linux

让我们再回到程序员比较喜欢(我个人相比Mac我更喜欢Linux)的Linux, 与 Quicksilver 功能比较接近的 Gnome Do ,完全能够快速地完成目标.


来自 Gnome Do 官网的描述:

Simple, sleek, swift, smart. Do. GNOME Do allows you to quickly search for many items present on your desktop or the web, and perform useful actions on those items. GNOME Do is inspired by Quicksilver & GNOME Launch Box.

题后话: 因为主要的工作环境是Linux, 其次是Win,Mac则用得很少,当然对于操作系统我并没有什么偏见,因为目标才是最重要的, 哪个平台最适合干什么,我便会去用哪个平台,仅此而已. 在Linux下,我设置的快捷键是Alt+D,当然Win下的 Colibri 也用了相同的命令,话说 甩掉鼠标,生产力着实提高不少. 如果您是程序员,不妨今天就开始使用吧.

2011-02-13

两类版本控制工具简单说明

这三种版本控制工具,我都有用过,目前项目中使用最多的是 Mercurial, 而一些自己的项目也分布在 GithubGit )或者 Bitb****etMercurial )上。

比较而言, Git 和 Mercurial 是一类版本控制工具,即分布式的版本控制工具, 而 Subversion 是集中式的版本控制工具,如果用一句话来概括二类的不同,则 为: 使用分布式版本控制工具检出的版本,包含完整的版本、历史等与代码 相关的信息,而集中式的版本控制工具检出的版本,通常只包含最新的一个版本 的代码 , 所以分布式版本控制工具能够极大地减少网络通信(如与服务器), 大大地提高效率。一个简单的例子例如要查看一个文件的log,用 Subversion 时就得和集中 的服务器通信来获得,获取的延时取决于网络通信等因素,而 Git 或者 Mercurial 则 只是一个本地的操作。

下面简单对比了下二类版本控制工具的优势:

分布式版本控制工具 集中式版本控制工具
优点
  1. 减少网络通信
  2. 去中心化,提高可靠性
  3. 更利于分布式协作
  4. 生产率(productivity)相对较高
  1. 单次检出的成本低
  2. 较适合二进制文件(相比)
  3. 掌握的人更多
  4. 命令流程简单
  5. 相关配套软件成熟(如IDE集成)
缺点
  1. 首次检出代码时代价高
  2. 不适合二进制文件
  3. 掌握的人较少
  4. 命令流程相对复杂
  5. 相关配套软件不成熟
  1. 大量的网络通信
  2. 可靠性较低(信赖于中心结点)
  3. 不太利于分布式开发

三种常用版本控制工具的命令对比

据说,IT行业跳槽率是很高的一个行业,特别是开发人员,面对一个新的公司、新的同事、新的开发环境、 新的版本控制工具等的机率是很高的,而一个有较高素养的开发人员,应该对于主流的版本控制工具有一定 的了解,特别是对于常用的一些基本操作有能够较熟练的掌握。下面,我就简单总结下不同的操作目标下 三种不同工具的具体操作方式和命令。

Subversion Mercurial Git
检出新的代码库 svn co repos_path wc hg clone repos_path wc git clone repos_path wc
更新已有的代码库 svn up hg pull -u git pull
查看本地的修改 svn st hg st git status
提交本地的修改
  1. svn add files
  2. svn ci -m “comments”
  1. hg add files
  2. hg ci -m “comments”
  3. hg push
1.git add files 2.git commit -m “comments” -a 3.git push
查看log svn log file hg log file git log file
恢复某个文件到某个版本 svn merge -c -REV file hg revert -rREV file git checkout REV file
恢复整个代码库到某个版本 svn up -rREV hg up -rREV git checkout REV
比较文件 svn diff -rREV:REV file hg diff -rREV:REV file git -rREV:REV file

当然上面只是最最基本的使用说明,不过大致已经涵盖了开发人员90%以上的日常操作,诸如branch,tag等应用, 你大体上可以通过”svn/hg/git help”来获得信息。

当然倘若你能够熟练地掌握其中之一,那也自成为你的瑞士军刀。

http://icatclaw.com/wp-content/uploads/2011/02/瑞士军刀图标下载145.png

关于二进制文件的版本控制

当然通常你会说没有这个必要来将二进制文件纳入到版本控制之中,我们大可选择ftp等覆盖方式来完成。 在实际的开发中,我们也有类似的方法,例如flash生成的二进制文件的swf和音乐文件mp3等,前者我们 还是使用 Mercurial 而后者我通常就使用 scp 等命令来完成了覆盖。

这时候,分布式版本控制工具的劣势就显现出来了,因为二进制文件每次更新基本上是一个完全新文件的更新, 而非增量,举个例子,假设一个分布式版本控制工具( Git /Mercurial)的代码库中只有一个10M的swf文件, 那么经过100个版本更新后,大小大致为10*100M=1G(大约,同样假设每次更新后的新文件大小也为10M)。如此一来, 当我们在服务器上部署时,首次的网络通信成本就非常巨大!记得在我们实际的一次项目经历中,一次更新了2个小时才 完成了更新。当然后续的更新相对成本较低。

同样的例子,如果改为使用 Subversion ,中心结点(服务器)上的代码库的大小大致也是1G左右,但是当我们部署时, 只需要大致10M左右的网络通信即可(取版本号为100的一次更新),所以成本则显得很低,后续的更新成本也相对较低。

当然,分布式版本控制工具下的代码库在线上时,如果需要恢复到某个特定版本,则无需网络通信即可完成,而集中式的 版本控制工具则成本相对较高。

总之,如果二进制文件的大小较小、版本更新频率较低,则选择二者差别不大,对于二进制文件较大、版本更新频率较多的 代码库,则选择集中式版本控制工具更为高效。

常用的代码hosting服务

这三类代码控制工具都有很好的第三方的hosting解决方案,下面只列举最常用的几个:

  1. Bitb****et (针对 Mercurial , 支持免费private repos)
  2. Google Code (针对 Subversion 和 Mercurial , 不支持免费private repos)
  3. Github (针对 Git , 不支持免费private repos)

现在应该说发展比较好的是 Github, 大家不妨可注册一个玩玩。

相关的链接

  1. git magic
  2. svn book
  3. mercurial guide
  4. git tag on SO (相关的对比和分析)