2017-07-25
Steam是如何吸走我们的钱的(三)----从红警2说起

第一篇第二篇文章中,我们分别从差异化定价和虚拟交易两个方面揭露了一下Steam的坑钱大法。今天要讲一下游戏内容了,毕竟人们来Steam主要是想玩游戏的。

任何一款游戏发售之前,开发商都应该是设定好了游戏道具、游戏方式、各种参数等一切正常游戏进行需要的游戏内容。但是随着游戏时间加长,总有一天,游戏内容被玩家慢慢“消费”完,如果能减慢游戏内容的消耗时间,就能延长一款游戏的寿命,使游戏获得更多人认可。

从红警2说起

红色警戒2并没有在Steam上,但我感觉其很有代表性。可能大家首先想到的是,红警2是一款即时战略类游戏,想到玩家需要扮演commander来建造和指挥部署各种兵种、建筑。但其实这款红警2,就涵盖了大多数游戏所具有的两种游戏模式的:剧情模式和回合模式(遭遇战)。

在红警2剧情模式中,敌我的兵力及其分布都是事先设定的,不可以自由建造,又设定了一些游戏剧情和目标(比如摧毁敌军基地,拯救xxx。杀死xxx等),玩家达成目标后就能进入下一关。当玩家通关的那一刻,剧情游戏的游戏内容便被消耗完了。热衷这款游戏的玩家可能会去选择开始二周目,或者选择厂商提供的更高难度再次进行挑战,但最后几乎没有人会一直玩下去。

而在回合制的遭遇战模式中,玩家需要选定自己和敌方的国家,双方都从零开始建造军队,最后将敌方所有单位摧毁的一方取胜。这种模式就更像“电子竞技”了,因为双方起点相同,真人玩家也可以网络对战,相对也就更耐玩一些。但是总共也就几十种兵种,随着更新一代的游戏的退出,老游戏的剩下的可能只有死忠粉了。

DLC

在以前,若一款游戏的取得很大成功,很多游戏厂商会发布游戏资料片(Expansion Pack)。游戏资料片一般并不改变游戏模式或者画面,更多的来扩充原来游戏的剧情,加入一些新的游戏内容。来用较小的投资成本,获得更多的利润。

《尤里的复仇》就是红警2推出的一款资料片,资料片的画面或者音效可以说没有变化。但是增加了很多新的游戏内容,游戏厂商Westwood为红警2加入了全新的剧情,并在遭遇战中加入了一种拥有全新兵种的阵营。

我们无法判断发布资料片是既定战略,还是顺势而为。也许厂商对一个游戏本身充满自信,认为只先放出50%的内容,就可以占领90%的潜在市场,那么剩下的50%分几个资料片放出来,显然是可以延长游戏在市场上的寿命,卖更多的钱的。也可能是因为原来游戏出乎意料的火,开发商想在原来的游戏框架下加点剧情再卖一波。

但无疑,资料片增加了游戏内容,提升了一款游戏带来的利润。Steam也觉得这是一个好的概念,于是想将这种发行形式发扬光大,于是给了资料片取一个新名字:DLC(Downloadable Content)。

Read More
 2017-07-22
美剧《硅谷》中的去中心化“全新互联网”现实中已经存在(翻译)

原文:The technology to make 'Silicon Valley's' decentralized 'new internet' already exists( http://mashable.com/2017/04/24/is-silicon-valley-new-internet-possible-or-not/#6cEY_p263PqN )

作者:RAYMOND WONG 时间:APR 25, 2017


“给你无限的时间和资源,你想用你的压缩算法做出什么都行……什么都行,说出来是什么,3,2,1……说!”美剧《硅谷第四季》中的“变态”亿万富翁Russ Hanneman对主角Richard Hendricks喊道。

“一个全新的互联网”,可爱的程序猿Richard说。

“我们曾用一台掌上电脑的计算能力把一个人放在月球上”,Richard继续说道,“我们现在手机上的计算能力要比那强几十万倍,但这些手机却都只是躺在口袋里什么都不做。所以我想到这个,有数十亿的手机在世界各地拥有相同的计算能力,只是闲在人们的口袋里。“

“然后我想,如果我们使用这些手机来构建一个庞大的网络呢?使用我的压缩算法来使一切数据变得很小,高效,到处传播。如果我们能做到这一点,我们可以建立一个完全去中心化的网络,那将是没有防火墙,没有收费,没有政府监管,没有间谍的互联网。信息因此在各种意义下都将是完全自由的。“

Russ不仅喜欢这个看似疯狂的想法,还答应投资。Russ还分解了Richard的数据压缩初创公司Pied Piper,迫使他退出,以便让他弄清楚如何将“新互联网”变成现实。

“我不知道是否可行”,Richard承认,“我还没有仔细去想过。”

这正是观看剧集的粉丝们一直想知道的, Richard的“新互联网”到底是真的可能呢,还是只是电视上编造的?

Read More
 2017-06-29
Steam是如何吸走我们的钱的(二)

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。

集换式卡牌

摘自百度百科

集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的补充包,收集卡牌,然后根据自己的策略,灵活使用不同的卡牌去构组符合规则的套牌,进行游戏。由于各人的套牌都不同,每一局抓到卡牌的次序也有不同,无穷无尽的变化由此而起。无论是准备及进行游戏的过程中,都需要玩家不断开动脑筋去思考。一般的说,这些卡牌都有一定的价值,玩家之间可以交易交换自己的卡牌。

集换式卡牌游戏线上或线下都有,不过最开始是从线下游戏发展来的,大家一定听过甚至玩过游戏王,游戏王就是典型的线下集换式卡牌游戏,在Jc小时候,游戏王可是在我们当地的小学生中风靡一时。游戏王的卡牌种类特别多,要命的是每次买卡包里面的卡都是随机的,所以要凑齐所有的卡,只能多买卡包,或者和别人换卡,厉害的卡总是很少的,而垃圾卡总是一堆堆重复,收集全很难。这也导致虽然集换式卡牌和其他卡牌游戏一样可以打牌对战,最后双方可以争个胜负,但很多人的乐趣更多在于收集卡牌。

Steam的集换式卡牌就完全抓住了部分人爱好收集卡片的心理,卡牌完全没有对战的功能,只有“集”和“换”。Steam中的卡牌是一种虚拟卡牌,也就是每张卡牌只是在你的Steam道具包中占去一个格子,产出的途径是玩游戏,任何玩家在刚买的游戏中玩几个小时就可以产出对应游戏内容的几张卡牌,同时产出的卡牌的数量和种类肯定是少于这款游戏总共可以产出的卡牌种类。于是,如果你想收集某一款游戏对应的整套卡牌,只能去Steam社区市场进行交易得到。当你收集到某一整套卡牌,就可以得到徽章、表情、背景和优惠卷等各种虚拟荣誉和优惠。

这样,我们可以分析出如下几点结论:

  1. Steam集换式卡牌将实体集换式卡牌的买卡包的过程转换为花时间进行游戏,这便可以促使更多人去将时间花在Steam中,同时由于卡牌可以在社区市场中出售换“钱”,增加用户的满意度。
  2. 借助Steam自带的社区市场可以进行卡牌的买卖,模拟了实体集换式卡牌的卡牌交易活动,这样,卡牌也成为下文所述的Steam社区市场的商品种类之一,Steam又可以通过社区市场的交易税,赚一上波。
  3. 集齐某套卡牌后会获得各种虚拟荣誉或者优惠,为收集爱好者提供更大的收集动力。

我们可以看到,Steam集换式卡牌像是游戏外的游戏,即使你打开了Steam后没有打开任何游戏,你也可以点开Steam道具箱,来欣赏下自己所收藏的一张张可爱的、看得见摸不着的、同时却有标价的卡牌。

社区市场

Steam本身就是一个游戏交易的平台,怎么又冒出来一个社区市场,这是个什么玩意儿?其实,社区市场是供Steam用户之间交易的,玩家可以在Steam平台的游戏中获得各种游戏道具,很多道具都是支持在社区市场中进行买卖的。这个平台既为玩家之间游戏外的道具交易提供了便利和安全保证,又让Steam吸钱吸的更爽,大家都是很开心的。

虚拟商品从哪来

Read More
 2017-06-28
Steam是如何吸走我们的钱的(一)

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~

什么是Steam

摘自百度百科:

Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。

其实可以简单理解为类似iPhone的app store的平台,只不过app store是卖手机应用的,而steam是卖电脑游戏的。但是Steam的吸钱手段真是了得,本次先谈一下我对游戏定价的一些理解~~后续还可能会介绍下Steam的社区市场、集换式卡牌、DLC/Workshop等吸钱大法。。。

游戏定价

steam作为一个游戏销售的平台,采取了和苹果app store类似的模式,从游戏商的收入直接抽成。

有意思的是,和app store一样,steam游戏商店也根据国家和地区分了很多区。同样的一款游戏,在不同的区购买价格是不同的。在 steamdb.info 这个网站可以查看当前某款游戏再各个国家的价格,我们可以找几款游戏观察一下:比如同样是CS:GO这个游戏,当前欧洲区要10.65美元,美国要10.04美元,香港区要8.5美元,而中国区只要4.7美元;再看H1Z1: Just Survive这个游戏,欧洲区同样最高11.35美元,中国区5美元,印度区最低只要4.37美元;Don't Starve这个游戏,欧洲区最高的4.25美元和最便宜的中国区的0.88美元形成了鲜明对比。

个人认为,基于以下几点事实,这种现象就是可以理解的:

  1. 不同的地区的税收情况是不同的。

  2. 不同的地区的人们的版权意识或消费水平是不同的。

  3. 由于电脑游戏卖的是使用权或者说是拷贝,多卖出一份所带来的生产成本几乎为零。

Read More
 2017-05-07
FAST 16论文sRoute:treating the Storage Stack Like a Network学习记录

论文原文PDF: sRoute: treating the Storage Stack Like a Network

出处:USENIX FAST 16

1. 概述

数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest OS)文件系统页高速缓存、Guest OS文件系统、Guest OS IO调度层、Guest OS块缓存、Guest OS块设备驱动、虚拟机管理器、宿主机操作系统(Host OS)网络驱动、缓存服务器、远程存储服务器缓存、远程存储服务器文件系统、远程存储服务器物理磁盘等多达十几层的存储阶段(Stage)。

而一般IO经过这些stage最终到达终点的路径是预先制定好的,这条路缺乏灵活性(hard-coded),即使仅想改变其中的某个stage,实际更改的时候也可能会涉及到这个stage之上和之下的多个stage。

本文仿照软件定义网络(SDN)的思想,提出了一种软件定义存储的架构sRoute,从原始的数据中心存储中心抽象出数据平面和控制平面,控制平面上的中心化controller随时可以对数据平面上的存储交换机sSwitchs安装“转发规则”,来实时控制IO路径。这样,就实现了包括改变终点改变中间路径将点对点路径散布为一点对多点在内的三种基本IO路径更改方法。

pic1

2. 整体设计

2.1. 数据平面和sSwitch

数据平面包括原有IO栈的各个stage和本文新加入的特殊stage sSwitch。sSwitch可以插入到IO路径的中任意的stage中,其根据当前的IO转发规则对IO进行转发。具体的,sSwitch会检测每个IO请求的header,根据header中包含的IO源点和目的点信息来和当前sSwtich所存的IO转发规则进行匹配,然后根据对应规则进行转发。

例1 把所有从VM~1~中到服务器S~1~文件X的读请求都路由到S~2~文件Y,那么VM~1~和S~2~之间的任意一个sSwitch的转发规则可以这样表示:

Read More
 2017-04-16
MySQL InnoDB透明页压缩的简单分析

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。

1. 开启方法

官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了它的使用方法,我也对这页官方文档进行过翻译,详见:InnoDB Page Compression MySQL文档翻译:InnoDB透明页压缩

对于透明页压缩的使用方法,和压缩表格式相同的是,都是通过CREATE TABLE或者ALTER TABLE语法对于一个表使用的。不同点是压缩表格式使用ROW_FORMAT=COMPRESSED这个字段,而透明页压缩使用COMPRESSION="zlib"COMPRESSION="lz4"或者COMPRESSION="None"这种字段。分别用两种压缩形式创建一个表的例子:

## 创建一个表,启用压缩表格式,块的大小为8K
CREATE TABLE t1(c1 INT) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
# 创建一个表,启用透明页压缩,压缩算法为LZ4
CREATE TABLE t1(c1 INT) COMPRESSION="zlib”(“lz4”…);

另外要注意:开启透明页压缩需要文件系统和操作系统支持 Sparse File 和 Hole Punching 特性,并且需要开启InnoDB的file-per-table选项。更详细的使用方法见上边的那篇翻译。

2. 原理简述

2.1. 先说说以前压缩表格式

Read More
 2017-04-06
OVERCOMMITTING WITH KVM 翻译:KVM虚拟机对硬件资源的超量分配

译者的废话

这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。

硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是VPS超售的万恶之源。。。比如一个4核8G内存的服务器,碰上黑心商家,不知道会被分出多少个1核1G内存的小崽子呢。。。不过这里Red Hat只是给出技术上的建议,没有提及VPS超售问题。嗯,做技术,不可耻。。。


原文:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/chap-Overcommitting_with_KVM.html#sect-Overcommitting_with_KVM-Introduction

简介

KVM hypervisor支持CPU和内存的超量分配。超量分配就是划分的虚拟CPU(vCPUs)或者内存比系统的实际物理资源多。通过CPU的超量分配,使用中的虚拟服务器或桌面就可以在更少的服务器上跑了,节省了不少系统资源,同时会减少电源、冷却等硬件方面的投资。

由于大多数进程始终不能访问其分配的内存的100%,因此KVM虚拟机可以利用此行为来分配给客户机虚拟机的多于实际可用的内存空间。

内存的超量分配

注意!

Read More
 2017-04-06
Table Compression for OLTP Workloads MySQL文档翻译:OLTP工作负载中应用表压缩

原文:

[MySQL 5.7 Manual 15.9.1.6 Compression for OLTP Workloads]

https://dev.mysql.com/doc/refman/5.7/en/innodb-performance-compression-oltp.html

传统上,InnoDB压缩功能主要用于只读或大部分读取的工作负载,例如在数据仓库配置中。快速但相对较小和昂贵的SSD存储设备的兴起使得压缩对于OLTP工作负载也越发具有吸引力的:高流量的交互式网站可以通过使用压缩表同时使用具有执行频繁INSERT,UPDATE和DELETE操作的应用程序来减少其存储需求和每秒I/O操作数(IOPS)。

MySQL 5.6中引入的配置选项可让您调节压缩对特定MySQL实例的工作参数,其对于写入密集型操作的性能和可扩展性是很重要的:

  • innodb_compression_level: 允许你向上或向下调整压缩程度,更高的值可以让你节省更多空间存储更多数据,同时在压缩时牺牲更多CPU周期,比较低的值可以让你在存储空间不重要时或者在数据不太适合被压缩时减小CPU开销。

  • innodb_compression_failure_threshold_pct: 指定了一个进行页压缩失败的百分比阈值,当它被超过时,MySQL开始在每个新的压缩页中增加一些额外的空闲的保留空间(padding),动态的调整这个空余空间的大小,padding的上限是由innodb_compression_pad_pct_max指定的,它是页面大小的一个百分比。

  • innodb_compression_pad_pct_max:允许你调整每个页面中用于直接保存更改和插入数据的空闲保留空间(padding)的最大值(这样就无需每次更改和插入都再次压缩整个页面)。 值越高,就可以记录更多的更改(???),而无需重新压缩页面。MySQL运行时,只有当需要昂贵分割操作的"压缩失败”达到上一个参数所指定的百分比时,才会为每个压缩表中的页面增加一个大小可变的空余空间(padding)。

  • innodb_log_compressed_pages:默认情况下,此选项被启用,以防止在恢复期间使用不同版本的zlib压缩算法时可能会发生损坏。 如果你确定zlib版本不会更改,请禁用innodb_log_compressed_pages以减少为修改压缩数据而生成的重做日志。

由于开启压缩时,内存中可能同时保留存在数据的压缩版本和未压缩版本,所以在OLTP工作负载下进行压缩时,innodb_buffer_pool_size配置选项的值可能会需要增加。

Read More
 2017-04-06
How Compression Works for InnoDB Tables MySQL文档翻译:InnoDB表压缩工作原理

原文:

[MySQL 5.7 Manual 15.9.1.5 How Compression Works for InnoDB Tables]

https://dev.mysql.com/doc/refman/5.7/en/innodb-compression-internals.html

本节介绍关于InnoDB表的压缩的一些内部实现细节。 这里介绍的信息可能有助于性能调优,但对压缩功能的基本使用并不必要。

压缩算法

某些操作系统在文件系统级别实现压缩。文件通常被分为固定大小的块,这些块被压缩后大小不固定,很容易导致碎片化。当块内的内容被修改时,在被写入磁盘之前,整个块都要被重新压缩。这些特性使得这种压缩技术不适合在update密集型当数据库系统中使用。

MySQL利用了广为人知的zlib库(基于LZ77压缩算法)来实现压缩功能。这种压缩算法在CPU利用率和减小数据大小方面都是成熟,稳健和高效的。该算法是“无损”的,从而可以始终从压缩形式重构原始的未压缩数据。 LZ77压缩通过查找要压缩的数据中重复的数据序列来实现压缩的目的。数据的具体形式决定了它的压缩程度,典型的用户数据通常会压缩50%或更多。

与一个应用程序执行的压缩或某些其他数据库管理系统的压缩功能不同,InnoDB压缩既适用于用户数据又适用于索引数据。在许多情况下,索引可以构成总数据库大小的40-50%以上,所以这带来的差异是显著的。当压缩对于某个数据集工作良好时,InnoDB数据文件(file-per-table的表空间或一般的表空间.idb文件)的大小是未压缩大小的25%到50%或更小。根据工作负载,压缩后的较小的数据库反过来很可能导致I/O数的减少,并以适度增加CPU占用率为成本增大了吞吐量。你可以通过修改innodb_compression_level配置选项来调整压缩级别和CPU开销之间的平衡。

InnoDB数据存储和压缩

InnoDB表中的所有用户数据都存储在包含B树索引(聚簇索引, clustered index)的页面中。 在其他一些数据库系统中,这种类型的索引称为“索引组织表”。 索引节点中的每一行都包含(用户指定的或系统生成的)主键和表的所有其他列的值。

InnoDB表中的辅助索引(secondary indexes)也是B树,包含键值对:索引键和指向聚簇索引中的某个行的指针。 指针实际上是表的主键的值,在需要除索引键和主键之外的列时,则需要查找到该值用来访问聚簇索引,进而访问到需要的列。 辅助索引记录必须始终可以放在单个B树页面。

Read More
 2015-12-10
Galileo开发板+opencv+微信公众平台实现简单的物联网家庭监控(2)

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ),以下功能做了改进:实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。通过connman实现了wifi网络的自动连接和随时修改功能。通过post到服务...

Read More
 2015-12-10
Intel Galileo开发版PCI-e无线网卡wifi配置

由于网上很多配置wifi的方式在我的伽利略开发板上都行不通,最后终于找到这个可以用的“冷门”办法:系统配置开发板: Intel Galileo gen2无线网卡:PCI-e intel wifi link 5100开发板系统: EGLIBC based Linux(download)所用工具硬件:usb无线网卡或者pci-e接口的无线网卡。(注意如果你用的是和我一样的pci-e网卡,注意顺便...

Read More
 2015-11-27
Galileo开发板+微信公众平台实现简单的物联网家庭监控

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。参考:《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/201...

Read More
 2015-11-04
鼓捣Galileo开发板的一些吐槽

这几天折腾伽利略开发板,写下一些吐槽,以便以后再看到这篇博客,仍然能记起这些值得吐槽的地方。。。也希望看到这篇博客的人能够因此少些吐槽( ╯□╰ )。。网上其实是有不少资源的,但是相对其他更热门的板子,显然找资料并不是和喝白开水一样简单,由于我表达能力较差,所以准备采用简述+大量站外链接的形式,给出一个希望不会让人误入歧途的引导。。。介绍Intel Galileo(点击查看中文官网),是一个...

Read More
 2014-04-09
只用OS X系统实现A8嵌入式试验箱(linux)的交叉编译

连接以电脑为终端,采用基于PL2302芯片的串口转USB线链接电脑和试验箱,MAC OS X系统需要安装芯片的驱动(文件名md_PL2303_MacOSX10_6_dmg_v1_4_0.zip)通过文件内说明文档进行相关设置,然后可以连接成功。Mac终端下用screen命令实现试验箱终端功能.screen /dev/tty.usbserial 115200>注意拔下USB时要用A(ct...

Read More
 2016-11-12
两台服务器间SSH或SCP实现无密码登录或文件传输

最近由于需要实现从一个客户端电脑定时远程上传图片到阿里云服务器的功能,需要实现SCP的免密码传输。所以查资料并做了一个记录,希望对大家有帮助。步骤1.Client上某用户执行ssh-keygen命令,生成建立安全信任关系的证书ssh-keygen -b 1024 -t rsa这里如果~/.ssh/id_rsa.pub 已经存在,说明以前已经生成过,可以直接跳过这步。2.将公钥证书id_rsa...

Read More
 2017-07-25
Steam是如何吸走我们的钱的(三)----从红警2说起

第一篇和第二篇文章中,我们分别从差异化定价和虚拟交易两个方面揭露了一下Steam的坑钱大法。今天要讲一下游戏内容了,毕竟人们来Steam主要是想玩游戏的。任何一款游戏发售之前,开发商都应该是设定好了游戏道具、游戏方式、各种参数等一切正常游戏进行需要的游戏内容。但是随着游戏时间加长,总有一天,游戏内容被玩家慢慢“消费”完,如果能减慢游戏内容的消耗时间,就能延长一款游戏的寿命,使游戏获得更多人认...

Read More
 2017-06-29
Steam是如何吸走我们的钱的(二)

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。集换式卡牌摘自百度百科集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的...

Read More
 2017-06-28
Steam是如何吸走我们的钱的(一)

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~什么是Steam摘自百度百科:Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一...

Read More
 2016-12-14
推荐一些简洁好用的Chrome插件

最近在实验室学习,chrome竟然称为了我使用的主要工具,不论是看博客或是看一些文档、论坛都离不开浏览器。chrome浏览器非常好用,通过登录google账号,可以同步设置、书签甚至插件。这里推荐几个我用的Chrome插件,能提高工作效率,大家根据名字都能搜到。Octotree可以在显示github网页左侧显示类似工程目录的侧边栏。OneTab可以一键将暂时没看完的标签收集起来,有时间(内存...

Read More
 2015-10-24
运用jekyll+Nginx+docker搭建博客的总结

博客由来今年暑假的时候就听说github上可以免费搭建静态博客。当时虽然看了看,但还是因为服务器、网页等知识欠缺太多,几次想动手都没有坚持下去。最近看了看Nginx的有关知识,算是对http服务器的搭建有了个大概了解。后来看到了docker,就买了《第一本docker书》这本书看了看,发现上边有些例子写的挺不错,其中就有jekyll+Apache搭建静态博客的例子,照着做一遍后,我决定用Ng...

Read More
 2015-10-08
折腾Docker的一些吐槽点

第一次构建Docker镜像,想照着书弄个jekyll的镜像玩玩,结果两天了,到现在还没成功。记录下国内环境实践和书本上的不同。。。首先官方的apt-get源太慢了要换成国内的速度还可以接受一点:(原文链接)做法:Dockerfile 中 RUN apt-get update 前添加一句:RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubun...

Read More
 2015-11-09
LeetCode第14题:Longest Common Prefix总结

题目Write a function to find the longest common prefix string amongst an array of strings.大意: 写一个函数,找到一组字符串的公共最长前缀。思路我的:定义一个不断更新的变量,存储当前的最长前缀,循环时加以一定的优化,比如如果下一个字符串比当前的前缀还长,那么可以截断前缀后在进行比较。参考的:这道题在disc...

Read More
 2015-11-01
LeetCode第8题:String to Integer (atoi)总结

题目:Implement atoi to convert a string to an integer.大意:就是手动实现C语言里常用的atoi函数。。。思路和吐槽:我最讨厌这种了,完全的信息不对称。。要讨论的情况只有不断提交才知道出题人什么意思,我怎么知道你要求的是什么,况且这是算法题又不是工程题。。。。幸亏这道题比较简单,多试几次也不太费时。代码Pythonclass Solution(...

Read More
 2017-03-30
在awk中如何使用或赋值shell的变量

写shell脚本处理文本的时候,经常用到awk来配合shell命令。但是awk的大括号中和shell貌似是两个世界。本文只介绍最容易理解的方法(作者水平有限,复杂的以后可能补充),来实现awk对shell变量的使用和更改。如果我们将awk看成变成语言中的函数,或者一个封装,那么要使用或者修改外部的变量,其实就是输入参数和输出返回值的问题。对于使用shell变量,其实就是shell变量怎么作为...

Read More
 2016-11-16
Shell脚本中进行多行注释的方法

我发现。。shell脚本貌似不像C或者Python一样自带注释语法,不过拐弯抹角还是有一些方法的。。囧方法1:利用逻辑语句利用了逻辑语句的执行顺序,缺点是注释中不能出现括号,否则会报错!###逻辑或前如果为真,后边的语句块自动不执行#1:||{ 注释内容...}#2((1))||{ 注释内容...}#3true||{ 注释内容...}###逻辑与前如果为假,后边的语句块自动不执行#4((0)...

Read More
 2016-04-02
Jc的sed简单入门/sed命令总结

这是我学习sed的一个总结,只限于自己和比我水平低(就是没接触过)的同学看。。。除了参考资料,讲解也包括很大成分的个人理解,如果发现错误,希望大家可以提醒我及时更正,谢谢~!sed概述sed是一个流编辑器,更准确的说是一个行编辑器,就是sed处理文本处理命令用于逐行处理文本中的文字。这是sed命令的格式: sed [options] [commands] [input-file]就是说sed...

Read More
 2016-03-29
Jc的常用Git命令记录

常用git,做个记录,方便查询,利人利己,如有错误,欢迎指正~创建仓库git init 创建仓库git clone xxx.git(远程库的地址) 克隆一个远程仓库git remote add origin xxx.git(远程库的地址) 指定一个远程仓库地址,命名为origin提交更改git rm file_name 删除文件git add file_name 添加文件到仓库暂存区(in...

Read More
 2017-04-06
OVERCOMMITTING WITH KVM 翻译:KVM虚拟机对硬件资源的超量分配

译者的废话这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N和-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是VPS超售...

Read More
 2016-12-30
Qemu KVM 虚拟机通过虚拟网桥实现桥接和NAT的实验

系统概况:host 和 guest 都是用的 Ubuntu Server 16.04系统。我的 host 机上有三块网卡2块有线网卡(接口 enp1s0 和 enp3s0)和1个无线网卡(接口 wls2s0)。我的 host 机通过无线网卡连在一个路由器上,并因此能够连接到互联网,所在的网段是192.168.3.0\24,ip 固定为192.168.3.5。其他两块有线网卡没有连接。实验0:...

Read More
 2016-11-02
qemu/qemu-kvm/qemu-system-x86_64/qemu-x86_64命令的区别?

刚想玩玩kvm,结果分不清这几个命令。。搜了一下,记录下来,希望对大家有帮助。摘抄1在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 --enable-kvm参数使能即可。(http://blog.csdn.n...

Read More
 2017-04-16
MySQL InnoDB透明页压缩的简单分析

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。1. 开启方法官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了...

Read More
 2017-03-16
Optimizing InnoDB Disk I/O MySQL文档翻译:优化InnoDB磁盘I/O

原文:8.5.8 Optimizing InnoDB Disk I/O这页感觉比较重要,翻译一下。。如果你遵循了数据库设计和SQL操作调优的最佳实践,但是数据库仍然由于磁盘I/O负载过重而运行慢,请考虑这些磁盘I/O优化方法。如果Unix top工具或Windows任务管理器显示你的工作负载的CPU使用率百分比小于70%,那么你的数据库系统瓶颈在于磁盘。增加缓冲池(buffer pool)的...

Read More
 2017-03-16
Optimizing Disk I/O MySQL文档翻译:优化磁盘I/O

原文: MySQL 5.7 Reference Manual — 9.12.2 Optimizing Disk I/O本节将介绍当你决定更多更快的存储硬件设备投入到数据库服务器时,应该如何配置它们。 软件配置上优化InnoDB以提高I / O性能的信息,请参见第9.5.8节“优化InnoDB磁盘I/O”。磁盘寻道是一个巨大的性能瓶颈,当数据量剧增到使得缓存命中率减小时,这个问题会更为明显。对...

Read More
 2017-05-07
FAST 16论文sRoute:treating the Storage Stack Like a Network学习记录

论文原文PDF: sRoute: treating the Storage Stack Like a Network出处:USENIX FAST 161. 概述数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest ...

Read More