8
29
2014
77

再三错过(及关于工作的各种吐槽)

刚刚看到一则消息,令我很不好受。又拍云,就是我这博客现在贴图和文件下载使用的那个 CDN,也是 CloudFlare 的中国版,依旧在招开发工程师。而两个月前,我在他们那里。他们告诉我当时他们只缺一个人。十数日之后,他们 HR 终于在数倍于承诺的时间之后告诉我,他们不缺人了

福无双至,祸不单行。这种令人很不好受的事情也并不是第一次发生了。大约两年前,我找朋友内推红帽(中国)的工作。结果被拒了,理由是,他们不缺人。大约两三个月之后,那位朋友又告诉我,他们又开始招人了。

更早一些,我毕业那年,搜狐来武汉了。我去面试,结果认为我能力不够。等我确定工作之后,他们却又有人在 Gtalk 上问我要不要去那里。

其实阿里巴巴那次也有类似的情形出现,虽然被拒的主要原因在于我严重休息不好、自由太少导致的状态欠佳。哦对了,没有预料到他们有人自己不懂 TCP 基础就问我网络相关问题也应该是原因之一。当时有人给我推荐工作的时候他们很缺人。但是因为我刚回到老家,很累,还没准备好应聘下一份工作,所以迟了几天。结果那时候他们就不怎么缺人了。

一直想不明白,为什么事情会一直是这个样子,总是错过想要的工作。也许自从走进武汉大学信息学部的那一刻就注定了如此命运吧。也许这种事情再三出现,是因为那次冲动的初恋告白。好像我总是第一次做不好呢。第一次初恋。第一次找工作,没有任何经验,根本不懂得表达自己。第一次选学校,由于信息严重不足导致选择了不适合的学校-专业组合。第一次正式学习编程语言,也是因为资源有限,学了 C++。第一次选择文本编辑器,还是由于信息不足,而选择了私有且不再支持 Linux 的 EditPad Pro。第一次选择命令行 shell,既没有选择大众的 bash,也没有选择功能强大的 zsh,却是挺随意地用上了(当时有不少问题的)fish。第一次自己买电脑,CPU 竟然不支持虚拟化。第一次租房,也是很令人不悦的方寸之地。

当然,人总是会从过去的不满和失意中吸取教训,在反复不断地练习之中臻于熟稔。可是,现在,在这里,这个社会似乎并不认同这一点。我应聘阿里巴巴的时候,他们几乎不问任何具体的技术问题,而是纠结于你之前的工作内容是什么、有没有管理服务器经验(我应聘的是运维开发)、做过的项目能多少并发(你倒是给我找来足够压垮我的项目的用户呀)。也问过我根本没有接触过的东西,比如如何管理上百万的服务器。这其实是很容易学习的事情。他们不承认人的学习能力,总希望别的公司给他们的员工培训,让他们的员工在别处赚取经验。当然,这样规避了风险,使得招进去的人的能力的标准差比较小。没办法,他们招人的人的能力不行(不懂 TCP 就别给我谈网络),所以只能招到能力不是很行的人(连重要的密码都敢往 GitHub 公开项目里扔)。(其实历史已经证明了招个王垠进去也不会出大事的说。)

曾经有人跟我说,我在群里帮忙解答问题的那些人,工资都是我的几倍。很无语。但是也没什么好说的。他们在专业技能上花的时间少,但是在交际、演讲方面花的精力多。招聘通常没办法直接测量应聘者的专业技能,于是只能通过一些表象来推测。就像让你只通过观看来比较两个物体的质量,你只能从体积、色泽、纹理等方面去揣测。然而,这其中没有一项有比较高的证明力度。经验在大多数情况下有效,仅此而已。

我还听我曾经的 boss 评价一个自称对多个方向均有兴趣的应聘者,认为一个人不可能对如此多的方向均有兴趣。言外之意是认为简历有吹嘘之嫌。可是我比那人的兴趣点还要丰富得多啊:Python、C、Linux 系统管理、网页开发、自动化运维、Lua、函数式编程,还有更远一些的,数学、物理、化学、天文、地理、语言学、经济、历史、生物、文学,这些也都是我所喜欢的。另一些人(很正确地)注意到,「喜欢」、「有兴趣」与「擅长」是两码事。于是,「喜欢XYZ」没用。你已经会了什么就继续干什么吧。和第一份工作的公司一样,开始决定结局

我注意到现在很多人喜欢「撞大运编程」。根本不理解程序在干什么。它不工作了,那么就这样试试,再那样试试。有错误消息?太晦涩难懂了,当作不存在好了。很好奇为什么我能很快看出问题来?答案很简单:因为我在尝试理解已有的信息表达了什么。在这里这个对象本应该有的方法却不存在。咦这个对象根本不是预期的对象。哦,这个对象是在初始化那里通过注入的方法弄进来的。咦你声明要注入的对象列表里怎么比初始化的参数列表少了这个出问题的对象?OK,问题解决。

这个事例也很好地说明了我为什么要用 Vim,我为什么不喜欢重复的代码,以及在必要的时候我为什么喜欢复制粘贴已有的相似代码片断而不是重新打一遍。使用 Vim 当然是因为搜索和复制以及对复制之后的代码的处理很方便。除了弱到爆的文件编辑功能(你一直在切换键鼠、一直在找需要的文件所在的那个标签、一直在输入已经输入过的单词和代码行,你没意识到么),另一个 IDE 令我吃惊的是,它们竟然鲜有支持多栏布局的!就是同时显示多个文件,通常是竖直并列,这样方便对照查看。不然用那么大的显示器多浪费啊。

我突然有点想什么时候给 CloudFlare 投简历了。虽然我从没有出过国。本来我想去又拍云就是受到了 CloudFlare 那博客的影响,而他们又一直在博客末尾说在招人。不管怎样,那会是一条非常不确定的旅程。我还没准备好。还是努力让生活慢慢变好吧。现在已经比之前好了很多了呢。虽然与我携手走过生命中剩下的旅程的那个人还没有出现,不过带我来到一个不适合我的环境、并一直阻碍着我追寻自己的人已经远去了。

又,我本来不习惯在这边写自己对非技术的想法的。但似乎只有写在这边才会有人看。那么妥协好了。坚持太累,放弃一些给自己放飞。


2014年9月5日更新:阿里巴巴又在招 Pythoner 了,而且这次是非常符合我目前技术方向的职位…………

Category: 未分类 | Tags:
6
3
2014
7

照镜子为什么是左右颠倒,而不是上下颠倒?

这是个虽然简单但是很有意思的问题,以前我竟然未曾想过。后来看到「宇宙的心弦」上对这个问题的回答写得太模糊(什么叫「镜子里头脚的位置没变」?「位置没变」的定义是什么?),所以这里写一个尽可能精确描述的回答。首先,我们讨论最容易引起问题的那种情景,即人站立时正面照镜子。

首先定义几个概念。

左右。以你为原点,你的左手方向为左,右手方向为右。(你知道哪只手是左手吧?)

上下。站在地球表面,在空中静止释放一物体,由于重力,它会运动起来。其运动方向为下,反之为上。

前后。这个有点奇特。你面前站了一个人,背心对着你的时候,这是那人的面。面对着你的时候,你看到那人的面。我们的问题隐含了作为观察者的你,去看外界的像,而不是考察你自己,对吧?

让我们再定义一下坐标系。

右为 x 轴正方向,上为 y 轴正方向,由你(观察者)的后背指向你的胸前为 z 轴正方向。

作为观察者,这里有一个很明白的变换:你所认为「正」的像,其坐标要绕 y 轴旋转 180°,才能与你观察时使用的坐标系一致。让我解释得更清楚一些——

拿鼠标指针选中你,按一下Ctrl-D(如果你不是 Inkscape 用户,那就按一下Ctrl-C再按一下Ctrl-V)。现在有了你的一个像。但是你看不到它,因为它和你重合了。让我们把这个像向 z 轴正方向平衡一段距离,比如 2m,你再看看?哟,它怎么背对着你呀?不行,再原地转身 180°,这样才能看到正面不是?

忽略掉平移,让我们把这个变换记作 \(T_1\),有

$$ T_1 = \begin{bmatrix} \cos{\pi} & 0 & \sin{\pi} \\ 0 & 1 & 0 \\ -\sin{\pi} & 0 & \cos{\pi} \end{bmatrix} = \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{bmatrix} $$

我们再来考察一下镜子做了什么。

想像镜子前有一个坐标系的三根轴,就是我们刚刚定义的那个。其中 z 轴正方向指向镜面。于是乎,镜子里的 x 轴与外边的 x 轴是平行且方向一致的。y 轴也是这样。但是 z 轴的位置没有改变,方向却反了过来,箭头对箭头了。所以,这种放置法,使得像与物体的 z 轴反了,\(z\) 变成了 \(-z\)。还是忽略掉平移,让我们把这个变换记作 \(T_2\)

$$ T_2 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \\ \end{bmatrix} $$

所以,最终作为观察者的你,看到的镜中的自己经历的变换是:

$$ T_1 T_2 = \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \\ \end{bmatrix} = \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} $$

即最终的像的坐标中的 \(x\) 变成了 \(-x\),即左右颠倒。

让我们再考虑另一种情况试试。如果把镜子放在头顶上,看过去会是什么感觉呢?

这时候,y 轴一头扎进了镜子,于是,我们的第三个变换 \(T_3\) 为:

$$ T_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} $$

乘一下,结果是:

$$ T_1 T_3 = \begin{bmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -1 \\ \end{bmatrix} $$

咦?这不是上下、左右、前后都颠倒了吗?找面位于天花板的镜子试试看。上下的确颠倒了不是么?再伸出左手试试,左右也和在面前的镜子里一样,也是颠倒的。可,前后感觉并没有颠倒啊?这是因为观察者和被观察对象位于同一垂直线上,感觉不一样了。仔细想想,天花板镜子里的像的前后确实与面前的镜子晨那个的前后是对着的,不是么?而我们定义后者没有颠倒,那么前者当然相对于后者是颠倒过了嘛。

个人拙见 =w=

Category: 未分类 | Tags: 物理
3
13
2014
1

我的浏览器A到Z

Re: 的确挺好玩的~

那个 frecency 懒得去研究是干什么用的,大概是频度之类的?frecency 即是火狐地址栏著名的 frecency 算法的值。

A
标题:工作台 - Chito
URL:http://lilydjwg.is-programmer.com/admin
访问次数:1828
frecency:3564600
最后访问日期:2014-03-13 21:26:42

B
标题:搜索结果 (页 1) / Arch Linux 中文论坛
URL:https://bbs.archlinuxcn.org/search.php?action=show_new
访问次数:1550
frecency:3100000
最后访问日期:2014-03-13 21:47:33

C
标题:Twitter / Interactions
URL:https://twitter.com/i/connect
访问次数:673
frecency:1063004
最后访问日期:2014-03-13 20:30:28

D
标题:豆瓣
URL:http://www.douban.com/
访问次数:290
frecency:212507
最后访问日期:2014-02-26 21:34:39

E
标题:所有消息 - SegmentFault
URL:http://segmentfault.com/user/events
访问次数:298
frecency:539380
最后访问日期:2014-03-13 21:44:30

F
标题:Index of /ftp/python
URL:http://python.org/ftp/python/
访问次数:7
frecency:2614
最后访问日期:2014-02-19 23:45:13

G
标题:Gmail
URL:https://mail.google.com/mail/
访问次数:396
frecency:449053
最后访问日期:2014-02-28 20:26:26

H
标题:工作台 - Chito
URL:http://lilydjwg.is-programmer.com/admin
访问次数:1828
frecency:3564600
最后访问日期:2014-03-13 21:26:42

I
标题:依云's Blog
URL:http://lilydjwg.is-programmer.com/
访问次数:100
frecency:126258
最后访问日期:2014-03-09 23:28:52

J
标题:jQAPI - Alternative jQuery Documentation Browser
URL:file:///home/lilydjwg/%E6%96%87%E6%A1%A3/%E7%BD%91%E9%A1%B5/Javascript/jqapi_2013-01-21/index.html
访问次数:5
frecency:1446
最后访问日期:2013-12-18 02:25:01

K
标题:The Linux Kernel Archives
URL:http://kernel.org/
访问次数:41
frecency:33347
最后访问日期:2014-03-02 21:47:12

L
标题:Lua 5.2 Reference Manual - contents
URL:file:///usr/share/doc/lua/contents.html#index
访问次数:24
frecency:14682
最后访问日期:2014-03-05 21:47:52

M
标题:Google 地图
URL:https://maps.google.com/
访问次数:83
frecency:52035
最后访问日期:2014-03-12 19:30:50

N
标题:None
URL:http://lilydjwg.is-programmer.com/admin/posts/new
访问次数:24
frecency:33600
最后访问日期:2014-03-13 22:08:35

O
标题:查看版面 - Vim和Emacs • Ubuntu中文论坛
URL:http://forum.ubuntu.org.cn/viewforum.php?f=68
访问次数:236
frecency:166138
最后访问日期:2014-03-02 22:26:47

P
标题:Python Module Index — Python v3.3.0 documentation
URL:file:///home/lilydjwg/%E6%96%87%E6%A1%A3/%E7%BC%96%E7%A8%8B/Python/python/py-modindex.html
访问次数:124
frecency:169744
最后访问日期:2014-03-10 23:10:46

Q
标题:Qt 4.8:
URL:jar:file:///home/.ecryptfs/lilydjwg/public/%E6%96%87%E6%A1%A3/%E7%BC%96%E7%A8%8B/qt4-doc/qt4-doc.zip!/index.html
访问次数:9
frecency:5198
最后访问日期:2014-03-06 22:05:35

R
标题:InoReader • 轻便快捷的 RSS 阅读器
URL:https://www.inoreader.com/
访问次数:155
frecency:177119
最后访问日期:2014-03-12 22:41:51

S
标题:SegmentFault
URL:http://segmentfault.com/
访问次数:1486
frecency:411473
最后访问日期:2014-03-13 20:47:13

T
标题:Google 翻译
URL:http://translate.google.cn/?hl=zh-CN
访问次数:138
frecency:145314
最后访问日期:2014-03-11 23:50:21

U
标题:Pinboard: public bookmarks for vayn
URL:http://pinboard.in/u:vayn
访问次数:13
frecency:5589
最后访问日期:2014-02-16 18:42:04

V
标题:查看版面 - Vim和Emacs • Ubuntu中文论坛
URL:http://forum.ubuntu.org.cn/viewforum.php?f=68
访问次数:236
frecency:166138
最后访问日期:2014-03-02 22:26:47

W
标题:新浪微博-随时随地分享身边的新鲜事儿
URL:http://weibo.com/
访问次数:78
frecency:117933
最后访问日期:2014-02-27 22:51:10

X
标题:None
URL:http://localhost/xcache/
访问次数:6
frecency:6688
最后访问日期:2014-03-02 22:50:15

Y
标题:soimort/you-get
URL:https://github.com/soimort/you-get
访问次数:24
frecency:19374
最后访问日期:2014-03-07 21:13:24

Z
标题:消息 - 知乎
URL:http://www.zhihu.com/notifications
访问次数:528
frecency:823165
最后访问日期:2014-03-09 16:53:10


附:从 URL 生成这些数据的代码。当然,还有后期处理,是用 Vim 简单地做了几次正则替换。

#!/usr/bin/env python3

import os
import sys
import sqlite3
from time import strftime, localtime

places = os.path.expanduser('~/.mozilla/firefox/profile/places.sqlite')

def main():
  db = sqlite3.connect(places)
  sql = '''select title, visit_count, frecency, last_visit_date
           from moz_places where url = ? limit 1'''
  c = db.cursor()

  for url in sys.stdin:
    url = url.strip()
    c.execute(sql, (url,))
    title, visit_count, frecency, last_visit_date = c.fetchall()[0]
    print('''\
标题:%s
URL:%s
访问次数:%d
frecency:%d
最后访问日期:%s
''' % (title, url, visit_count, frecency,
       strftime('%Y-%m-%d %H:%M:%S', localtime(last_visit_date//1000000))))

if __name__ == '__main__':
  main()

又附:上边的代码忘记写是哪个字母了 -_-||| 已经补上,用了个 Vim 宏来完成。话说好久没用 Vim 宏了呢~

Category: 未分类 | Tags: 程序员 火狐 浏览器
2
21
2014
10

编程语言的特色

Tcl:一切皆字符串。
Python:一切皆对象,真的!整数、函数、类、方法、模块、代码、函数调用栈等等都是对象!
Lisp:好一碗美味的括号汤!
Lua:在与不在之间——nil。
Zsh 脚本:Perl 根本不算什么!
Haskell:=纯粹+庸懒+晦涩
Erlang:你不是一个人在战斗,不是一个人!
 

Category: 未分类 | Tags: 随思
11
25
2013
9

被冻结的时间

那天中午,照例在网上闲逛时,却得知,那条时间线将永远停留在那时候,永远不会再流动了。不会再有新的消息,也不再会作出回应。

也并不是所有这样的事件都会如此高调地宣告它的发生。

有时,只是突然想起,有个人,很久很久都没有出现过了。

然后发现,询问的消息如石沉大海,有去无回。

甚至都没有办法去搜寻,因为我所知道的信息是那么不完整。

网络世界中,人与人,就像由虚拟的线联系起来。

那些带来温暖和慰藉的线,经常都是那样的纤细。

或者在某个不被注意的瞬间消逝,或者在最后的告别之后断掉。

Mark Pilgram 主动 410 时我只是唏嘘。

当有朋友对我说永别时,我惊讶、不敢置信,亦无限惋惜。

而那些悄然丢失的联系,只能埋藏起来,等待下一次被发掘。虽然明知那几乎不可能。

那些被冻结的时间,那些不会有回应的消息,那些永远的失去。

Category: 未分类 | Tags:
4
13
2013
2

[转] 程序员妻子自述:那些程序员教给我的

来源:伯乐在线

声明:没有找到原文授权说明。文章所有权人如果有异议请联系我。


我曾经跟朋友开玩笑说,这个时代,有两种人的妻子应该要受人尊敬,第一种是军嫂,这是毫无争议的,第二种就是像我这样的,程序员的老婆。当然,这个 玩笑半分自嘲半分真。我的本科是穿着大白褂在各种挂着植物、动物、有机化学、无机化学的门牌的实验室里度过的,在显微镜下给三段生的夹竹桃画过横切片图, 在大头针和解剖剪子的辅助下找过蚯蚓的三条神经,闻过带有臭鸡蛋味的硫化氢气体……

是的,你们都猜对了,我确实是相貌平平,不修边幅,素面朝天的理科女。见了人就开始习惯性地科普:蝴跟蝶,蜻跟蜓,其实是不一样的,还有,白菜跟萝卜其实都是属于十字花科啦,香港的市花根本就不是紫荆,那是马蹄甲,还有,还有,那个康乃馨的学名其实更好听的,叫石竹花……

没有人欣赏我。

因 为没有人在意我在说什么。是啊,我说的那些东西根本就没什么用处,别人还不如去微博上关注科学松鼠会。他们说,女生就应该好好打扮自己嫁个好老公,谁关心 什么纲目科属种。他们说,女生就应该多读点张小娴和亦舒。他们说,女生就应该多学点礼仪和瑜伽。他们说,你要是什么都不会,就学点厨艺啊。他们说,理科的 女生就是木讷,又没有情调,不如去选修一个文科的双学位吧?

——为什么呢?

——为什么?!你不想嫁个好老公吗?!

——哦。

其 实,虽然我没有读过张小娴和亦舒,但是我读过三毛,读过张爱玲,读过严歌苓,读过杨绛,读过席慕容,读过冰心,读过安妮宝贝,读过七堇年,读过王安忆,读 过《飘》,读过《安娜·卡列尼娜》读过《苏菲的世界》……不是只有清新文学和治愈系才能诠释一个女性啊,难道严肃文学就不能解读一个女性了么?

虽然没有学过礼仪,可是我大一就开始报名学习街舞。难道只有学过礼仪的女生才值得被疼惜被怜爱,而一个戴着鸭舌帽跳街舞的女生就应该遭到集体鄙视么?

……

是的,你们都比我聪明,知道我会遇到一个正眼看我的男生。

他告诉我,你很特别啊,很好啊,不需要改变啊……

我顿时就觉得他的周围笼罩了耶稣一般的光辉。

他是个程序员。

当然我不否认我从小到大确实有被一些审美有问题的男生夸奖过长得好,或许是他们深知白富美不会给予垂怜,像我这样的不入流的长相应该可以徒添他们的自信。但是,从来没有一个人跟我说过那么一句话:

你很特别。

可惜晴天霹雳是个贬义词,不然我真的很想用来形容我当时听到这句话的心情。

然后呢,然后我就义无返顾地成了一位程序员的老婆。我继续给他科普各种知识,他从来都是饶有兴致地看着我,就算我口沫横飞手舞足蹈他都不会嫌我聒噪。我甚至在他的鼓励下一天一天觉得自己确实长得不错。

直到有一天,我看到了那个小黑窗,看到了各种在小黑窗上面跳跃的白色字符。

——这是什么意思啊?

——这个表示创建一个目录,这个表示进入这个目录,这个表示查看这个目录的列表内容……

——哦……我给你洗个苹果吧……

后来,我们一个房间两台电脑,我们都不知道彼此在做什么。

后来,我说要不你教教我学编程吧。

后来,他告诉我一个网站,里面是《笨办法学python》,告诉我他常常看cnbeta,看爱范儿,看瘾科技,看糗事百科,告诉我他用 google reader,gmail,告诉我什么是单核什么是双核,告诉我什么是bug,告诉我固件指的不是一个固态的硬件而是软件,他送给我手机, 然后帮我刷机,送给我ipod touch然后帮我越狱,给我的电脑里面装上ubuntu……

他不让我在手机上面贴膜,并花时间跟我解释为什么不需要这么做。也是摔了几次之后他才答应我给手机买个保护壳。

他常常给我普及隐私的重要性,告诉我要及时备份我的各种文件。

后来,我陪他看《生活大爆炸》看《行尸走肉》看《生化危机》……

后来,我陪他逛华强北,逛博物馆,陪他加班……

后来,我考上了研究生,我们结了婚,分隔两地。

我开始学习PHP,学习HTML,学习Java,学习Dreamweaver,学习PS……

然后我开始给身边的女生普及各种计算机知识,陪她们去买电脑,挑手机,告诉她们不要给手机贴膜……

后来,我认识了很多很多很多程序员。从我的老师到同学,从我的朋友到朋友的朋友,从我读的书里面。

我从他们身上学到了很多。

我知道了 Steve Jobs,知道了为什么 less is more,知道了为什么用户体验那么重要,知道了 stay hunger stay foolish.

我知道了 Steve Krug,知道了为什么面包屑会叫做面包屑,也知道了为什么网页要做得 Don’t make me think。

我还知道了 Norman,知道了诺曼门,知道了如果东西使用不便不是我的错,而是设计的问题。

……

我懂得了程序员的幽默。

看到了不一样的世界。

我真正开始从心底里肯定自己,也是因为他。

这是一个好男人带给我的。

所谓的独立,便是不向别人过多索求,也不过多抱怨。

很遗憾的是,我没能带给他什么不一样的东西。

于是就想起了张卫健那首很老的歌:

“我什么都没有,就是有一点吵,如果你感到寂寞,我带给你热闹……”

Category: 未分类 | Tags: 程序员
11
26
2011
7

给博客加入 Google +1 按钮

本来我是懒得去做这种东西的,可鉴于以下几个原因,还是弄了一个。

  • Mike 也 +1 了
  • 代码很简单
  • 方便分享到 Google Plus
  • 反正从国内访问本博客也不容易,就不在乎这个 +1 按钮很可能出不来了

代码如下,真的很简单:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">{lang: 'zh-CN'}</script>
<g:plusone></g:plusone>

我把它加到了每篇文章的末尾,因为我不认为没看完文章的读者会需要用到它。看不到按钮的读者请自行解决对 Google HTTPS 的访问问题。

Category: 未分类 | Tags: Google
9
29
2011
4

Flash 游戏 Music Catch 2 hack 攻略

Music Catch 是 Reflexive 出品的一款音乐游戏,其PC版本收费,但有两个免费的Flash版本。版本一是一个非常有限的预览版,只内置了一首音乐;版本二不仅内置了更多音乐,并拥有更多选项,它还支持从URL获取外部音乐:

不过,这些选项要逐个解锁——即完成它们。好不容易全部解锁后,终于可以播放自己的歌曲了。搭建个HTTP服务器,却发现需要公网能访问才行,而且速度死慢死慢的——因为它是从自家的网站的一个代理获取歌曲文件的。这也是Flash跨域请求的限制。简单抓包下就可以知道该怎么对付了。

首先修改 hosts 文件,把那个代理劫持到自己机器上:

127.0.0.1       wgextras.gamecentersolution.com

然后是crossdomain.xml文件,把它放自己的根目录下。

<cross-domain-policy>
    <site-control permitted-cross-domain-policies="master-only"/>
    <allow-access-from domain="*"/>    
</cross-domain-policy>

最后是那个代理脚本了,路径是/proxy.php。我简单地用PHP写了个:

<?php
# 为 Music Catch 2 而写
# 使其可以直接从本地读取音乐文件
error_reporting(0);
if($_POST['MusicCatch']){
  $mp3 = file_get_contents($_GET["url"]);
  header("Content-Length: ".strlen($mp3));
  header("Last-Modified: ".gmdate("F d Y H:i:s")." GMT");
  header("Connection: close");
  header("Accept-Ranges: bytes");
  header("Content-Disposition: attachment; filename=\"song.mp3\"");
  header("Content-Type: audio/mpeg");
  echo $mp3;
}else{
  header("HTTP/1.1 400 Bad Request");
?>
<title>400 Bad Request</title>
<h1>400 Bad Request</h1>
<hr/>
<p>This page is intended for Music Catch 2.</p>
<?php
}
?>

就是这样。现在再从URL加载音乐时,只需要一两秒的时间了。

最后,Music Catch 2 SWF 文件下载

Category: 未分类 | Tags: flash 网络
5
9
2011
40

可笑的计算机网络应用设计实验作业

计算机网络应用设计实验是我们计算机网络课程的后继实验课程。今天是其上机的最后一天,于是得到最后要回去自己做的作业。看到其要求后我大跌眼镜——

要求完成FTP客户端、SMTP客户端、POP3客户端三个系统程序,以及一个应用程序

客户端操作系统为Windows XP。

FTP程序要求具有图形化界面、上传、下载功能,鼓励实现断点续传功能,SMTP/POP3程序具有邮件编写、发送、接收、阅读、删除等基本功能。FTP、SMTP、POP3程序使用socket方式编程,从创建socket、建立TCP连接开始,实现FTP、SMTP、POP3协议的功能,不得调用第三方控件(可使用操作系统自身的API函数)。编程工具可以使用C#或VC++。

应用程序要求实现一个网上书店的基本功能,要求具有前端(用户)和后端(管理)功能,基于Web运行方式。前端具有浏览书目、购物车等功能,后端具有管理书目、基本统计功能。编程工具可以是MS .NET(C#)或者J2EE 二选一,数据库可以是SQL Server、DB2、Oracle、Mysql、PostgreSQL之一。

我们的计算机网络课程是讲从物理层到应用层、从路由协议到TCP协议等等的,这个“计算机网络应用设计实验”总共有七次,要么使用思科的 Packet Tracer 模拟,要么在机柜的机器上弄,配置路由啊VLAN啊之类的,很是正常。可最后这个实验设计是怎么回事?就算是计算机网络应用程序设计课程也没有这么严格而变态的要求啊。这不仅仅是应用层的编程,而且还是Windows图形界面编程、数据库编程、C#或Java Web编程!这样的课程作业,实在应该在至少大二就布置下来,因为它可以作为另外至少四门课的大作业!!

对了,还有一点很令我郁闷——报告要求交Word 2003版格式的文件。根据我未读完的《Word排版艺术》里的信息,以及Word不断弹出的关于Normal.dot文件的对话框,我很确定Word会将文档的某些信息保存在本地的其它文件中,从而导致文档不具有可移植性,别人看到的排版可能根本不对。不过我估计那些用Word的老师没几个人听说过《Word排版艺术》。微软的罪孽在于,它把本来复杂的东西弄得看似简单,实则更加复杂。

武汉大学计算机学院,你太令我失望了!!!

参见:一名大学毕业生的反思已失效链接二

2011年10月10日再加个链接:珞珈山水BBS -- 作为一名毕业生,谈谈哪些行业或者企业不宜进入[原创]

Category: 未分类 | Tags: 教育
10
14
2010
2

QQ群邮件:美好生活路上的又一障碍

如果能够不用QQ,生活会变得美好。可现实是,我不仅不得不使用QQ,而且还得使用腾讯烂得要命的群邮件服务。

QQ邮箱又挂掉了

WebQQ不知从什么时候开始不再提示新(群)邮件了。由于我们课件什么的都只知道往群邮件里发,我只好每隔几天去查收一次,不然所谓的“超大附件”会过期的。

说起“超大附件”我觉得好笑。现在都什么年代了,我网易邮箱现在6G的存储空间,附件大小可达50M,其它邮箱附件也至少可以20M。我还以为“超大附件”有几百M呢,原来才超过5M就是“超大”了。为什么腾讯不设置成1.44M的限制呢?

看到群邮箱里有不少课件,一个个手动下吧。很快就下好了,结果双击一个PPT,却是用OpenOffice Write打开的,还是空白页面。。。。我还没弄明白出什么事了,到虚拟机的XP里用MS Office打开,结果是“无法打开xxx所代表的文件类型”(微软的用词一向很怪异,我就不追究了)。再试试那些rar文件,也出错。这才注意到文件的大小不对。

OK,算我网络不行,那重新下吧。结果回邮箱里就遇到上面截图里的情况了。。。

这不是我第一次遇到,也不是第二次。我相信也不会是最后一次

唉,难道这就是劣币驱逐良币

PS: wget rocks!

Category: 未分类 | Tags: QQ 腾讯

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com