分类目录归档:技术

Pectin 简单说明

Pectin 是我一个小小的项目,目的是给Tornado 添加一些实用而必要的特性,这些简单的东西我猜已经被人完成过几十上百遍了,不过独立出来成为一个轮子就能方便一些。鉴于有人发邮件来问了,我就稍微的说明一下这个小东西。搭配上项目中本来的说明例子

是什么?

Pectin (果胶)的意思是“胶合层”,而且是很薄的一层胶合层。功能上基本上是通过给Tornado 的类重写方法来实现的。

具体来说,只需要利用Python 的多重继承,应用一些Mixin 就可以实现,也就是说Pectin 其实算是类似“插件”或者“补丁”的一类东西。 继续阅读

Python 所容易忽视的

当你觉得自己Python 入门了,至少不会因为基础的问题而苦恼的时候,有些问题实际上很多人没有注意到。

另外注意,各种内置method (E.g: __getitem__),以及生成器迭代器的使用都是基础。

这是一篇简洁的拾缺补漏的文章,给出一些常见问题——的文章的链接。

另外,有问题可以去看Stackoverflow

诡秘深奥的现代魔法 1.2 上

1.2 过程与它们产生的计算

菜鸟的读书笔记,如果有常识性错误和非常识性错误请毫不留情的开口指正!

1.2.1 线性的递归和迭代

能耐心看这个语焉不详的文章的读者都知道递归和迭代是两种循环的方式。但是SICP 中说道,一个递归的过程中也有递归和迭代的区别,这就是文中所说的:递归计算过程,和迭代计算过程,我们通常说的递归和迭代只是从语法上而言的,书里说的是计算过程,一个递归计算过程需要维护一个栈来储存信息,所以所需的空间是线性增长的(空间复杂度O(n)),但是迭代计算过程对空间的要求是常数级的(O(1)),是维护着一系列“状态”,当调用自身的时候,其会释放空间,所以会保持函数的递归深度为1。
所以如果要用递归过程的话,如果可能最好用迭代计算过程,当然,编译器或者解释器要支持尾递归优化(当一个过程是迭代计算过程,那么就可以说是尾递归的),能够在递归中不断释放栈,比如说我喜欢的Python 就不支持,仁慈的终生独裁者先生还讲了一堆说程序员最好不要用递归balabala,不过这种实用主义的哲学正是Python 的魅力所在。

迭代计算过程就是那种其状态可以用固定数目的状态变量描述的计算过程,而与此同时,有存在一套固定的规则,描述了计算过程在一个状态到下一个状态转换时,这些变量的更新方式;还有一个(可能有的)结束检测,它描述了这一计算过程应该终止的条件。

注:书中说常见语言的递归过程,即使是尾递归也往往需要线性储存空间,但是现在C 是支持尾递归优化的。并且即使编译器没有尾递归优化也可以用手动 goto 语句来实现。 继续阅读

诡秘深奥的现代魔法 1.1

改名叫《诡秘深奥的现代魔法》,“诡秘深奥”是书中第一章形容程序设计语言的词语。

注意!翻译过程中有一些错误,可以看之前先根据勘误表改正,注意勘误表中有一条关于微分方程的勘误(dy/dt 被勘误表改成 dy/dy)可能是错的(原文的方程可能是对的),修改的时候注意。(update: 我发邮件过去确认了我的猜测是对的,之后可能会被更正。)

这一小结说的内容比较基本,讲述了程序设计和Lisp 里面的一些基本原理。

正则序和应用序

我是这样理解正则序和应用序的,正则序是先展开后求值,应用序是先求值再展开。正则序更常用的术语是惰性求值,我比较熟悉的Python 中的生成器就是惰性求值的例子,其他语言也有类似的,似乎都是受Lisp 的启发。(参见第一条评论,是我搞错了) 继续阅读

诡秘深奥的现代魔法 – SICP 读书笔记 0

明天高考成绩出来以后,这个读书笔记如果没坑,说明我还好。我现在心情压抑的转移注意力。

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs ,简称SICP,豆瓣链接维基词条)这种好书,很早我就买了,几年了我常常带在身边想要翻看,结果只看了一点点,但是因为常常带在身边,有的时候用作鼠标垫什么的,前几页就磨损的很厉害,我总是很自豪地说我把SICP 翻烂了。

实际上Scheme (SchemeLisp 的一个方言,也是SICP 的教学语言)也就写了个hello world。这本书曾是麻省理工的编程入门课程的教材,但是难度一点都不符合“入门”,但我也不清楚是否真的能行,如果没学过编程的人对自己有信心的话可以借来看看。

现在,在高考成绩发表前的忐忑中,我打算一边看,一边连载读书笔记和习题解答。当然,也有些有趣的摘抄。 继续阅读

不应如此编程

最近因为学习的关系很少碰代码。

最近看了一下自己写的代码,是一个链表,看到一行(链接),代码的意思是增加数据结构的计数器,我看到这一行的时候却疑神疑鬼了,因为这被包含在初始化一个节点的函数中,但还有其他的一些函数,比如说在特定位置插入,我写的时候或许会忘了一件事:“计数器已经加过了” 而再加一遍。

仔细检查了一下这里应该没出现问题,其他操作都没有动计数器,依赖计数器的函数工作也很正常,然而让我感觉不好的并不是可能出错,而是我看到这行语句以后不确定别的地方没有干不应该干的事情。如果我有底气,看到这行代码心里也就能保证这行代码只出现在这一个函数里面。 继续阅读

生命游戏的较少步骤方式

这种文章在各位大大看来一定是班门弄斧了,而且说的东西其实也是特别简单的,只是记录一下,如果有更好的希望说一下。

程序员了解了生命游戏的规则以后大多会直觉的想到这样一种方式,建立一个二维数组,每一个数组里面存放这True或者False,当然也不一定是数组,二进制文件什么的,反正是矩阵。

直觉的方式,深蓝色是处理中的,浅蓝色是处理过的

反正我一开始也是这样想的,不过很容易就想到为什么要用一个矩阵来一遍一遍的轮呢,可以光靠细胞之间的位置来确定,也就是说光记录细胞的坐标就好了。

单单记录细胞

下面详细说一下,感觉很多地方还有可以简化的地方,靠计算细胞间的距离(坐标差的绝对值)很容易确定一个坐标的生死。 继续阅读

一些Vim 插件

常用的那些我就不说了。插件最好用 Vundle 管理,方便的仿佛就像改革开放一样。

Raimondi/delimitMate 括号补全,很多补全脚本都有问题,这个不错

Lokaltog/vim-powerline 漂亮的状态栏

FencView.vim 自动识别编码,是中国人就装!(XD)

还有这个,是修改过的Python 缩进插件。

推荐这个文章,这个Blog 有很多不错的插件。

近期胡思乱想

通过操作判断用户对文章是否感兴趣

想到可以用一段代码,判断用户是否认真读了文章

首先是在文章停留的时间,但或许用户是去干了别的事情了,所以需要记录的是滚轮不断滑动的时间

再基于文章的长度,用户屏幕的大小得出用户阅读的速度,阅读的越慢得分越高

跳过<浏览<阅读<精读

如果是在一屏能显示出来的短文章,可以用 文章字数/用户阅读速度的平均值 如果停留时间过于长就舍弃结果

继续阅读

1

我家的小狗狗生宝宝了。

小狗狗

2

因为学习上的原因,上一篇文章提到的坑很不幸的陷入了停滞的状态,之前有人很热情的问我情况,还表示要打杂,真心感觉对不起。不过我还是会做下去的(展望暑假)。

3

读了下《大话数据结构》,感觉编程的世界真奇妙,链表,树,图……

昨天在尝试Flask这个Python web框架,第一印象就是简约而优雅。

在家里组了双屏:

2012-03-09-21.12.19

4

二次元方面,我这两年始终没有一股天天追新番的劲头,也没有很强烈的补旧番的冲动,落下了很多动画,惭愧。

或许我不是OTAKU了。

5

必须要好好学习了,我的目标是考一个三本。但是对自己的自制力真是绝望了。

抱歉我又开了一个坑《1t1t系列之:真实》

大概是我在起点混了一年左右的时候,那时候我十一二岁,看到了这个作品,感觉非常棒。

去年又回顾了,还是那么的棒。于是今年打算做个AVG游戏。昨天刚刚给作者提出来就答应了,只不过版权给了别人,说只能以同人的方式。当然是同人的方式去做啦。

引擎

现有的NS,KRKR实在是不符合我的习惯,所以我打算再造一个轮子。现在有两个选择,PyGame或者用HTML5。

PyGame开发方便,舒适。HTML5的话要边开发边学很多东西,但做出来了的话绝对很Cool!感觉很有挑战性。

引擎绝对会开源的,我在犹豫要不要整个游戏都开源呢?

其他需要的东西

除了引擎,还需要画师,脚本等等等等,脚本虽然有了原作,但是还是需要改编一下,毕竟原作只是小说。

画师……立绘啊什么的先用涂鸦代替吧,不急不急。

背景就拍照,音乐………总会有解决的办法的。

Help!

如果你是有一技之长的大大,不要犹豫,赶快敲起键盘加入吧!

装完了系统感觉不对……

这是一个很OTL的事情。

给笔记本装Archlinux系统,现在这时代肯定是64位啦。

结果装上以后感觉不对,一看怎么是32位的,估计是以前的镜像,我把USB插回去重新写入镜像,文件名确认无误是x86_64,写入很慢啊。

写入好了,重新插上去启动liveUSB,这回我留了个心眼,输命令看了一下,怎么还是i686,难道提供的镜像有误?

我看了看电脑上的archlinux镜像,文件大小赫然是2Gb,和我的U盘一样大,这下豁然开朗了。

这件事要从很久很久以前说起,那天U盘上是32位的镜像,我想要弄64位的系统,于是下了镜像准备写入,结果输dd命令的时候搞反了if和of,于是32位的镜像被写入到64位镜像里面了。

这件事很无聊啊,反正这个blog就是很无聊的。

判断傻密码的函数

如果是傻密码就会返回True。

傻密码是照着这篇文章里面排名前几的密码来的

Hanger

什么是Hanger

与其说框架,还不如说是骨架的东西,基于Python Tonado框架,也可以算胶水框架吧。

为什么会出来这个东西?

怎么说呢,自然而然的……自然而然的就出现了。任何人做久了网站差不多都会自然而然搞出来一个吧。

有什么用?

这东西估计只有我一个人用着顺手,本来就是为了自己写的嘛,别人的话有更成熟更棒的Django之类的框架可以用。

为什么不用Django?

太大,修改起来太麻烦,每一次看Django的用户字段我就觉得菊花一紧,还不如自己用胶水粘出一个轮子来。

为什么发这一篇文章

纪念意义吧,感觉第一次做出一个可以实用的东西。

将Vim 默认剪贴板设为系统剪贴板

在vim 里访问系统剪贴板,你先要按“””,然后按“+”最后按“p”或者“y”,烦得要死,今天打算解决这件事,一开始思路是用map,结果用的不熟练出现了诡异的状况,只好求助Google 大神了,大神给我指明了一条命令:

写在~/.vimrc 或者win下面的~_vimrc就行。

Update: 刚刚在Linux下面试了试,不行,查到了这个Wiki Accessing the system clipboar

如果不行试试看

PS:最近放暑假,不对是寒假 了,整天沉迷在代码和天际省。

EarthOL imagine v2

Logo 草稿

发布上一篇以后,我找到了游戏策划@Parrymia大大!然后他很一针见血的指出了很多潜在的不合理的地方:

简单的说,就是这个系统向用户收取劳力,但没有固定的报酬。RPG式的成长要素,如果仅仅是炫耀价值和一些特权的话,恐怕很难让人为些腾出时间

其实麻烦的地方还是工作的和约以及仲裁机制,信用相对来说简单一些。

orz,真的好麻烦,看来以虚拟交易为基础的任务系统是行不通了,但是如果用普通现金交易的话,虽然做起来容易些,但不是我想要的样子,仅仅会变成国外类似网站的Copy。

毕竟这只是一个按照我兴趣弄出来的东西,又不是要商业化。但是如果按我设想的那样,你帮人家解决事情,奖励却是虚拟的东西,那绝对是没人用的,那就玩脱了。 继续阅读

地球OL的设想

今天我上课的时候肚子疼向上厕所,在厕所里我想到之前日本有人在Twitter上发了没纸巾的Tweet然后得到别人帮助的故事,突发奇想如果有一个互相帮助的App多好,如果你在厕所里没有纸,那么就不慌不忙的掏出手机,发布一条任务:“厕所,无纸,求救!”。然后你周围装了这个App的人就会弹出一条通知:“附近有紧急任务‘厕所,无纸,求救!’。”

我觉得这个想法很不错,就发了一条tweet,发的时候半开玩笑的说

完成以后可以获得经验值。还可以有史诗任务,比如说【我被人围住了快点找人帮我收拾他们】,完成以后可以有称号:黑色拯救者

这时候我的想象展开了,有任务,有经验值,那么自然就有升级,有组队,甚至可以有工会,有职业……网游的系统完全可以搬到这个LBS应用上面。

我越想越觉得可行,越想越兴奋,于是即将到来的寒假不出意外就有事情干了,成功与否说不看重是不可能的,但是我对自己实在没有信心,努力过了就好。

现在这是我的初步设想:

地球OL

果然已经有了前辈了,类似的有TaskRabbitGigalocalzaarly,国内也有个微任务,但是RPG模式应该是第一次尝试,在我的设想中这个应用更注重娱乐,不一定要有物质报酬,比如说什么什么展会,或者环城骑行自行车之类的活动也能当作任务来发布。

Blog迁移完成

小朋友们大家好,现在这个Blog已经挂到Linode的服务器里面了。

杯具的是丢掉了从2011-6 到2011-11的所有图片 1/11更新:今天这些图片奇妙的出现在我的主目录下面了,难道是神秘的神仙姐姐帮我找回来了?不管怎么样图片已经上传了。

有时间试试补上,这期间我也没发过多少图片。

网站用的是Nginx在前端反向代理,Apache在后端处理php的形式,过几天我试着让静态文件也通过Nginx处理。