Author Archives: purplechun

记忆碎片@游戏

和所有我那个年代的小孩一样,我的游戏生涯是从红白机开始的。8位游戏机,插卡,三合一五合一十合一。没有人没玩过的顶蘑菇《超级玛丽》,还有《忍者神龟》,《双截龙》,《沙罗曼蛇》《马戏团》……与此同时,相较红白机,大型投币游戏机似乎更加刺激,一元钱六个币,《三国志吞食天地》《街头霸王》《恐龙快打》,现在一闭眼,还能回想起那时在小县城里狭小、人满为患的游戏厅拍击按钮的场景,可惜我一直玩不好,没天赋,也没多少币让我练。

三年级的时候,学校有了电脑课,走进机房前,每个人都要脚上套着防尘袋。也是那个时候 — 1995年,才第一次面对那个上面像是电视,下面是大方盒子的机器。第一节课中间的时候,老师打开了一个游戏,瞬间大家都围了过去,眼睛直勾勾的看着老师玩,当时觉得那个游戏画面太美了。后来我知道了那个游戏叫做《波斯王子》,800多K,我的DOS游戏生涯也开始了。

最初玩的都是一些简易的dos游戏,《波斯王子》,一个指挥着王子,在地牢里打坏蛋的横版过关游戏,以及只有60k的《超级玛丽》复刻版等等。这些游戏让我学会了不少dos命令去和电脑老师斗智斗勇,原因是老师不让在机房电脑里放游戏,于是我学会了隐藏文件,分卷压缩和代理盘符一些技术。后来又跟着学校里的大牛学会了用GB游戏克星和PC Tools去修改游戏。不得不说,对游戏的狂热,直接促使我走上了计算机这条不归路。

小学和初中是对游戏最痴迷的时光,人生中最重要的几个游戏:《仙剑奇侠传》《大航海时代2》《三国志英杰传》《金庸群侠传》《神雕侠侣》都是三年级后短短的几年接触到的:

仙剑奇侠传 —- 第一次看到“仙剑”是四年级的时候在机房,当时是别人在玩将军冢血池那一段,也是没见过市面,一下子就被画面和玩法吸引住了。但之后不巧再回来想复制的时候已经被删了,当时都不知道这游戏叫什么。时间一晃一年后,又在某台电脑上看到了同样风格的画面,这下先用自己练会的技术和积攒的软盘,分卷压缩了11盘。然后就开始从头体验,仙灵岛初识赵灵儿,林家堡林月如比武招亲,苗疆碰到阿奴。还记得无数次想打出隐藏结局让赵灵儿不死。这个游戏绝对是一生的记忆。

大航海时代2 —- 接触大航海时代记得是在一个中午,校长儿子不知哪里找到的正版软盘,不知道怎么装,于是找我帮忙,装好后我自然而然就自己也装了一份,开启了扬帆远航。6个背景迥然的主人公,通过航海来达成自己的心愿,有为了冒险,有为了爱人当海盗,有为了成为出色的商人。对世界地理历史的兴趣,就是从这个游戏开始的,5M的空间,承载了太多的故事、音乐和知识。还有GB游戏克星的速度加成,不同帆船在蓝色大海上遨游的画面依旧丽丽在目。

三国志英杰传 —- 大航海时代的出品方KOEI光荣公司,真是制作了好多优良的游戏,“三国志英杰传“系列就是其中之一。和大航海迥然不同的场景和玩儿法,将三国历史从刘备的视角一步一步的展开,讨伐董卓,官渡之战,火烧赤壁,无数的经典战役和历史故事被搬到了电脑里,还看电脑报上的攻略,看如何能最大限度的炼成更多的99级将领。结局虽然是虚构的刘备战胜曹操,但里面众多的历史人物刻画的非常好,也燃起了我对三国的兴趣,“三国演义”看了不下5遍。

金庸群侠传 —- 接触金庸群侠传的时候,光盘已经比较流行了。那时候金庸的武侠小说和连续剧还没有怎么看过,就先接触了游戏。这是我差不多接触的第一个很开放世界的游戏了,主角可以通过不同的选择,来塑造自己,无论武功还是人品,可玩性非常高。更不用说里面巨大的地图和无数的人物,沉浸到里面真是无法自拔,乃至现在都还会下载复刻版玩儿一玩儿。

就这样,从小学到初中,从286到586、奔腾I,从软盘到光盘,我进入了高中,而这期间,也见识了《魔兽争霸2》,跳票无数次的《暗黑破坏神2》,以及拨号上网玩儿的《石器时代》。高中的游戏基本都发生在网吧,而两款游戏产生了最多的噪音: CS《反恐精英》和 SC《星际争霸》。前者我打的一般,但《星际》是我真正花了一个暑假,看了无数韩国职业选手的replays,苦练微操打出来的。如果说前面的游戏都是倾注了爱心,那《星际》就是倾注了心血了。曾经多少个夜场和翘课都是扑在《星际》上啊,苦练人族,即使是后面竞赛和快要高考的时候,还会来几把放放松,在”浩方“上和人切磋。

这些游戏,也成为了上大学前最重要的记忆之一,塑造了我,也直接指引我选了计算机专业。

奇怪的是大学前疯狂喜欢游戏,大学后,渐渐游戏越玩越少,本科期间唯一提起我兴趣的,是《使命召唤》,也是我第一次玩制作如此精良的3D游戏,真实感给我很大的冲击。进入研究生后,令我印象最深的,则是国产游戏《古剑奇谭》,音乐和故事情节真是太好了。

期间伴随着移动设备的迅猛发展,开始接触很多移动端的游戏,《Doodle Jump》《植物大战僵尸》《Room》,颠覆了很多以前游戏的玩儿法。当初买IPad第一代感觉完全是为了用手指玩儿《植物大战僵尸》。同时也接触了一些独立游戏,最喜欢的就是《时空环境/Braid》,画面和独特的玩法,以及背后的哲学都让人难忘。

上班后的一个变化,就是买了属于自己的play station/xbox,从前因为各种因素一直没有机会玩儿主机游戏,经济独立后终于可以拥有自己的电视,沙发,以及一台游戏主机。也是在ps4上,让我几乎体会到了20年前玩儿游戏的感觉,主要就是“顽皮狗工作室”的《Uncharted》,《The Last of Us》系列,做工如此精良,剧情如此让人共情。

喜欢游戏是刻在每一个人天性中的,游戏本身是好的,但要适度的玩以及不要给生活带来负面影响,如果能带来正面影响,那真是太幸福了,所幸的是游戏给我带来很多正面影响。

写这篇文章的时候,“元宇宙”概念已经炒了很久了。期待”头号玩家“里的场景早日实现,也希望游戏持续的给我们带来正面的影响。

2021 走南闯北 China East Tour

2021完成了一件心念已久的事情:自驾环游中国。因为是电车的缘故,不敢深入西部,就定了在东部环游,南北贯穿。

8.27出发,期间在山西家里待了1个月,回深圳处理事情2周,其它时间基本在路上,基本分三个阶段,走了49个城市:

  • 16个城市 惠州⇒ 韶关⇒ 郴州⇒衡阳⇒ 株洲⇒长沙(赤壁)⇒武汉⇒荆州⇒ 宜昌⇒ 神农架⇒ 十堰⇒ 西安⇒运城⇒ 临汾 ⇒太原⇒ 朔州
  • 14个城市 忻州⇒ 鄂尔多斯⇒包头⇒呼和浩特⇒乌兰察布⇒崇礼⇒北京⇒张家口⇒锦州⇒沈阳⇒长白山⇒延边⇒长春⇒承德
  • 19个城市 晋城⇒开封⇒曲阜⇒济南⇒淄博⇒ 临沂⇒连云港⇒盐城⇒扬州(高邮)⇒无锡⇒ 苏州⇒台州⇒ 温州⇒ 福州⇒厦门⇒ 泉州⇒ 漳州(东山岛)⇒ 汕头⇒ 汕尾

走过了很多路,看到了很多不同的城市、风貌,感慨我们的地大物博,一个人也思考了很多。出发前看似很艰难的一件事情,一天一天一段路一段路的走过,却也没有很难。

美国(纽约)驾照换北京驾照攻略

前两天(2014.09.01)刚在北京换了驾照,趁还记得写出来提供给有同样需求的人。

先说说我的情况,纽约驾照,北京集体户口的身份证。之前准备好复印件,表格;前一天照好照片,当天早上去附近医院很快做好体检。

具体的攻略网上有,我直接贴后面了,就说说我在看攻略的时候有疑问的几个点:

Continue reading

记忆碎片@影

经常回到豆瓣最主要的原因,是去记录自己看过的电影。再有几十部,那个数字就要满一千了。我与电影的缘分,自然是从那个数字起跳开始。

有时会想自己看过最早的电影是哪部,当真记不清了。小学到了南洋学校后,学校的电视台会在周末放映一些租来的VCD碟片,每当周末不回家住校,都和同学一起在教室看校电视台放的影片。好像是五年级的时候,一天父母单位组织出去看《泰坦尼克号》,回来后他们都说很好看,后来学校的电视台也放映了,里面的大场景和宏大的音乐记忆颇深。我最喜欢的的电影之一《大话西游》就是在高小的时候看的,那时候还是父亲拿回来的录像带。后来看到很多文章说《大话西游》刚放映的时候反响并不太好,但我真的是小学第一次看就无比喜欢。

Continue reading

宇宙魔力

想象着躺在一片铺满蒲公英的原野的夜,闭眼的一霎那魂飞快的冲出地球。

流体的形态悬浮在太空中–极自然优美的悬浮姿势。

火红的太阳在远处剧烈的燃烧着,仿佛能听到巨大的爆裂声。周围无限的寂静。

蓝色的星球旋转着向我冲来,一瞬间就冲到了我的面前,又一瞬间已在几百公里外。上面满是生命。

目光驶向远方,无数绚丽的星系悬挂在宇宙中,超行星绚烂的诞生,白矮星孤零零,红巨星逝去的王者风范,黑洞的贪婪,恒星的耀眼……

无比辽阔的让人窒息的宇宙,漂浮在那里,霎那间感觉到被虫洞吸进去,又被吐出到一个完全陌生的星系,在那一刻,呆住了,呈现在眼前的,是7颗大小不一的巨大行星,他们一个个的从我面前驶过,每经过一次,都是一个音符,do,ri,mi……也许这是宇宙中最和谐的旋律,天籁。

开阔的

use Hive Partition to Read/Write with subfolders

We all know that Hive read/write data in folder level, the limit here is that by default it will only read/write the files from/to the folder specified. But sometimes, our input data are organized by using subfolders, then Hive cannot read them if you only specify the root folder; or you want to output to separate folders instead of putting all the output data in the same folder.

For example, we have sales data dumped to hdfs(or s3), and their path structure is like sales/city=BEIJING/day=20140401/data.tsv , as you can see, the data is partitioned by city and day, although we can copy all the data.tsv to the same folder, we need to do the copy and change the filename to avoid conflict, it will be a pain if the files are a lot and huge. On the other hand, even if we do copy all the data.tsv to the same folder, when output, we want to separate the output to different folders by city and day, how to do that?

Can hive be smart enough to read all the subfolder’s data and output to separate folders? The answer is Yes.

Continue reading

记忆碎片@书

最早的读书记忆,应该是上学前,从姥爷家的箱子里翻出的舅舅看过的小人书。巴掌大得图画,开始了我的翻阅故事。

印象中还记得的小人书有《八仙过海》,香港电视剧的截图版;《神力王》,近代列强侵略中国,仁人志士是如何在擂台上扬眉吐气;当然少不了《丁丁历险记》,表情无辜机智勇敢的洋葱头带领小白雪历险的故事。

Continue reading

How to use Hadoop MultipleOutputs

Just like MultipleInputs, Hadoop also supports MultipleOutputs, thanks to the equality, we can output different data/format in the same MapReduce job.

It’s very easy to use this useful feature, as before, I will mainly use Java code to demonstrate the usage, hope the code can explain itself 🙂

Note: I wrote and ran the following code using Hadoop 1.0.3, but it should be working in 0.20.205 as well

Continue reading

快速批量修改豆瓣电影评分 using Javascript

截止 2016.05.06 依然有效

最近遇到一个问题,想要给早期自己在豆瓣上收藏的看过的电影评分,但问题是一个一个修改的话巨慢,于是写了一个小plugin脚本,只要在firebug的console里运行了就好(Chrome里应该也可以).

前提:登陆自己的豆瓣账户,进入自己的电影列表(需要是列表模式)。

movie_list_before

代码:(下面的code默认用到了 jQuery, 豆瓣支持此库)

Continue reading

use Secondary Sort to keep different inputs in order in Hadoop

SecondarySort is a technique that you can control the order of inputs that comes to Reducers.

For example, we wants to Join two different datasets, One dataset contains the attribute that the other dataset need to use. For simplicity, we call the first dataset ATTRIBUTE set, the other dataset DATA set. Since the ATTRIBUTE set is also very large, it’s not practical to put it in the Distributed Cache.

Now we want to join these two tables, for each record in the DATA set, we get its ATTRIBUTE. If we don’t use SecondarySort, after the map step,  the DATA and ATTRIBUTE will come in arbitrary order, so if we want to append the ATTRIBUTE to each DATA, we need to store all the DATA in memory, and later when we meet the ATTRIBUTE, we then assign the ATTRIBUTE to DATA.

Continue reading