Python Dictionary

相信dict对于大部分人来说都很熟悉,所以本文不会介绍其相关用法。试想如果让你实现Python中的dict,你会准备怎么做?就此打住,思考两分钟。

你理应设计一个结构来存储dict,实现插入删除以及修改等必要操作,同时你该考虑如何实现遍历字典,判断某个键值是否存在等功能;接着,你会想如何比较两个字典的关系,尝试合并字典或者从其他数据结构转换成字典结构;进一步地,如果你能注意到性能问题,发现dict的很多操作都应该是O(1)复杂度,你会想到hash table… 如果你能一直往下想并找到解决思路,那你比作者的能力强多了,可以不用看了>,<

Read More

又一次回到北邮人

相信大家都有这样的体验,对政治敏感的好奇心并不是我们越过GFW的动力,有时仅仅是出于对未知知识的渴求。说的直白一点,我们要访问google。另一方面,在学校里北邮人用惯了,倒不是说为了省钱不冲个爱奇艺或者优酷会员,而是这些视频网站上的推荐实在不敢苟同,相比而言BYR更加臭味相投一些。出于上面两个目的,有了今天的文章。

以下内容基于你有一个双栈的VPS,如果没有或不想每个月花二三十租一个的话,建议不用往下看了。

翻墙就不多讲了,为什么我们访问不了北邮人呢?因为这是一个建在IPv6上的网站,而国内校外基本上没有IPv6网络的环境,所以需要一个同时支持IPv4和IPv6的机器作为中间人来转发信息,我们叫它双栈主机。理论上校园网内的机器都具备这样的潜质,但是很多学校给学生分配的地址都是内网地址,学生也没有办法自己做校园网外网的端口映射,所以从校外无法访问到这些机器(这样的结论其实是不严谨的,校外能通过IPv6访问到,只是没有IPv6环境)。现在很多学校都采取流量计费的模式,因为只统计IPv4的流量,所以学生们会通过IPv6网络通过双栈主机来访问其他网络,从而绕开校园网计费,这部分不在今天的讨论范畴之内。

Read More

点滴成海

偶然翻起以前的一篇博客,大概意思是感慨这么多博主不再更新文章,不知道去了哪里,生活在他们身上又发生了什么?当时很好奇,但现在反观自己,不也是一样么?

Read More

《中国改革路线图》有感

读书时系里一位年轻的老师组织了一个读书微信群,当时觉得自己还是喜欢看书的,便积极响应号召。一直到去年的11月,才趁着双十一的势头买了几本群里推荐的书,这样的积极性是不值得称道的;更有甚者,断断续续看了两个多月才啃完,写个札记算个交代。

自从研究生之后就再也没有开过像样的党组织生活,一方面觉得研究生同学的“姿势水平”不高懒得说话,另一方面也是因为党支部书记不作为,敷衍了事。本科时候支部书记是大导,个人很佩服他,因为他是少数几个我心里有觉悟而且真实的党员,他“在位”的几次组织生活是真的在讨论问题,交流思想,自此以后再也没有过了。那时候我们会谈腐败、政治体制、民主与自由…不避讳而且津津有味,如果中国最杰出的一批读书人都对政治避而不谈,那中国怎么办的既视感。

Read More

机器与人脑

有天晚上失眠,脑子想着一些乱七八糟的东西,大多是妄想和谬论,写下来也不怕人笑话。

我们说起记忆,大概是指那些记在脑子里的东西,但这是一种很抽象的概念。记忆一般分成两种模式,有时一件事情突然冲进你的意识里,也许你正在看书,突然就想起昨天朋友跟你讲过的笑话;而第二种是你主动想回忆起来,仿佛在搜寻脑子的某个角落,甚至这件事情被拆成了很多部分,有时候你能找到全部,有时你只能想起事情的经过却忘了事情的主角。这似乎在预示:记忆并不像我们所想的那样被保存着。我想起在电脑里保存资料的一些场景,我们把一些资料压缩,按照我们直观的想法给文件命名,当我们试图更深地了解内容时,我们便开始解压这些文件…

Read More

2016年终总结

站在第一天回味过去的一年,像过来人一样对经历指指点点,对未来也规划一遍。憋不出生活的感想,记个流水账当做消遣。

去年上半年是学生时代最后一段时间,而下半年是第一次真正意义上步入社会,说大了也是人生的一个分水岭。本来想着趁着学生的轻奢生活好好逛一逛北京这个城市,去一次郊区的小学校、逛一遍北京的景点、看一次凌晨的日出和伴着日出的天安门升旗,琢磨着过去的六年半怎么就这么慵懒,仿佛被关在园子里数着初夏秋冬,一下子就等到了离别。说到学校,平日里吃饭嬉笑着说自己这个楼没去过,这个馆也不知道是做什么的,想着就在学校里面不着急,别像个观光客似得,然后最终也没进去过,连观光客也不如了。

Read More

冬至

Winter is Coming. 今天是冬至,下班回家顺道在超市买了一袋汤圆,权且当做过节。HR们下午有爱地给全公司发了一封可以提前下班的邮件,但是这与我们无关,大家嬉闹地自嘲过后,明天依旧是版本日。

不知不觉陷入了惰性,总自以为加班就意味着忙,稍有空闲不是想睡觉就是想玩游戏,把睡觉前那些想看的书,想做的事都抛却脑后,我想这才是工作最可怕的地方。我怀疑是自己还没找到正确的工作姿势,还是这份工作并不适合我,有时候也会想这几个月经历了什么?又成长了多少。

Read More

UnboundLocalError in Python

入职前一周都在听讲座,感受公司文化。这周开始吃硬菜,老师提到了Python的一个问题,下面简称为UnboundLocalError。老师的解释是在函数代码块里因为写操作使得扰乱了引用变量的正常顺序,导致抛出该异常,这个解释听起来有点拗口,我们直接看代码说话:

1
2
3
4
5
x = 10
def foo():
x += 1
print x
foo()

在我们的正常思路下,foo函数里面用到了x变量,因此它会在函数体内寻找该变量的声明,如果没有找到会往包含该函数体的上层空间中寻找该变量声明,以此类推直到global空间为止,按道理来说x在global里已经声明过不应该出错才是。问题的缘由,我们翻译一下老师的解释,因为x += 1这个写操作,使得原本一层一层往上找x这个变量声明的顺序被打乱了,所以就错了。因为上课时间的原因老师没有讲很细,对下面两个问题我有点不懂:

Read More

说游戏

很多问题是机械而重复的,早在工业革命之前,钟表里的齿轮就已经在夜以继日的运转着。只要我们能及时给它上发条,它竟然可以一丝不差地一直跑着,很不可思议。但是注意哦,它并没有代替人的工作,人从来没有像钟表一样数着秒来计时,人只会在特定的某些时刻想要知道具体的时间而已。我想钟表是伟大的,它时时刻刻地工作,只为了让人那几眼的时间显得有价值。

蒸汽机被广泛应用之后,人和牲畜开始解放。驴会拉磨,马会驮人,我们甚至培育出了骡去运输重物,每一个具体的工作面前都有一个擅长的牲畜(人)。然而这些工作流程随着工业文明被提炼,人类发现只要有蒸汽机并配备一套机械设备,上述的工作都可以被替代。有趣的是这些机械设备是死的,是可以夜以继日工作的,是可以量产的,人的位置又一次从生产链中被提升了,人开始广泛的去设计规则(机械设备),而不是在实践规则或者奴役在这些规则下去进行体力输出。

有了计算机的世界确实变得大不一样了,但是本质上和工业文明时候并没有区别:设计死的规则。计算机的雏形是用打孔的纸片来进行演算的,之后的半导体和纳米技术只不过是在做“量变”的事情,把计算机变得更快更小了。如果站在人类生活的立足点上看,这些技术确实引起了时代的“质变”,但是如果换一个角度来看,事情并没有那么乐观,计算机依然是工具,无论它有多智能。设计规则的是人,计算机是奴役在这些规则下的体力输出,和以前的人一样。

Read More

null & undefined

今天遇到了个很傻的Bug,写JS的时候做了分支判断,没搞清楚null和undefined的差别,闹了半天笑话。权且以此做个题目。

奶奶的老房子整了下天花板,比起以前亮堂了很多,今天照例去陪她看了会电视,其实只是坐着聊天。南方最近在经历寒潮,这点温度对于刚从北京回来的我来说倒算不上什么,只是家里没有暖气,长时间曝在这温度下有点受不了了。奶奶房间里也弄了加热器,这东西很多年前不知道谁送给她的,一直舍不得用,以前家里没空调看我会冷才拆了让我尝鲜。现在看这东西倒是有点难过。从小和奶奶长大,也是睡在这个房间里,后来弄了新房子便有了自己的房间,奶奶说她不想爬楼还是住在这里。人是要长大的,也是要走远的,只是扶着你走路的人呢?

Read More