网络寻租

Programmer, Gamer, Hacker

生活需要时不时的burst一下

| Comments

很多游戏里面,都有这样的一种设置:当某个随时间积累的值到达一定程度的时候,就可以使用一次很强大的攻击技能。格斗游戏里面叫怒气,设计游戏里面是能量槽。游戏里面的角色,平时攻击可能不怎么样,可是一到这样的时候,攻击力瞬间提高,往往是达到清场或者是致命一击的效果。

其实,游戏里面的很多东西都是来源于生活。我们每个人在平常的生活里面,是否有积累这样的能量,时不时地爆发一下呢?

计划生育不好

| Comments

从经济学的角度,如果把人从资源的角度来看: 1反对对市场的干预(除非为了维护市场本身) 2从时间上来看,人的价值是不断提高的,限制对人的投资,会损失很多。

从历史的角度,当年人都是靠国家来养,国家养不了,就限制数量。

从消耗资源来看,人的成本,只有粮食是刚性的,其他都可以靠减少平均耗用量来解决。 现在的科技水平,粮食生产完全不成问题。(穷国饿死人基本上是因为政治)

但是论到解决这个问题,有了既得利益群体,牵扯到政治,那就很难很难了。 估计最后会因为实际成交价格(生育数量)低于限制的价格(每户1人),造成计划生育名存实亡。 最后无生育可计划,政府会裁减该机关。(新补充: 或者转型成为促进生育机关, 继续骗钱)

軟件工程師的信仰

| Comments

善惡概念產生的條件,是有欲望。 什么是善?高效的滿足欲望的方法。 什么是惡,低效的滿足欲望的方法。 什么是道德?道德是種方法論,指導人采用更好的方式解決問題——自己的欲望。 社會的道德:以社會為立場產生的道德,指導人為了國家,民族犧牲。 個人的道德:以個人理性思維為立場產生的道德:指導人為了特定的目標而犧牲。 生物的道德:以生物體為立場產生的道德:指導生物活下去。實例是本能。

軟件工程師的工作,就是利用自己的專業知識,來滿足用戶的需求,解決實際的問題。 軟件工程師的欲望,是產生出更廉價,更穩定,更高效的軟件系統。

你我是否有做惡? 是否由于工期的壓力,寫出劣質和難以理解的系統? 是否由于個人職業的壓力,故意寫出只有自己能夠看懂的代碼? 是否由于個人對新技術的欲望,降低了系統的穩定性? 是否由于個人好惡,選擇了不合適的編程語言,開發環境和軟件庫?

什么是天堂?天堂就是善的集合。 天堂里的代碼,整潔,簡單,像詩一樣優美, 程序員們三兩成群,討論一個個有趣的問題,當有所收獲時,奮筆疾書,一個改變世界 的應用就此產生。

什么是地獄?地獄就是惡的集合。 地獄里的代碼,臟亂,復雜,像街巷中的垃圾, 程序員們被限制在成排的辦公桌前,看著沒有人會要的需求,寫著沒有人會讀的代碼, 編譯著沒有人會用的程序。

如何学习API

| Comments

在网络上面看了很多文档,都是要用到的时候,随便看一遍,然后拷贝一下代码的。

在实际的使用过程中,发现这样的方式很没有效率,经常写着写着,就发现不知道API怎么调用了——这样的过程在开发过程中,非常经常地出现。

我以前认为,在开发前通读一遍,甚至实际把所有的API写一遍,是很困难的,因为很无聊,也很难记忆,也很耗时间。

但是“认为”这样考虑事情,完全不是科学的分析方法。如果我要分析什么方法学习API最快,首先需要找几个难度,长度差不多的API,然后统计学习时间,以及统计实际开发过程中损耗的时间,最后要review代码,看看代码的质量如何。

做一个初略的统计:

只是看API:对于python 处理 ini 格式文件的API,我阅读通读时花了16分钟,现在已经记忆不深了。

如果要写代码的话,大致能够记得怎么写,要用到哪些API(需要把文档开着),以及需要的注意事项。

而随便看看文档就继续写代码的耗时——不需要去测量,因为这样的代码含有质量缺陷,不可接受。

计划没有按照预定来怎么办

| Comments

昨天没有写博,今天来反省,补充一篇。计划没有按照预定来,怎么办?

昨天一天都在打游戏,或者看小说,在这种情况下,无法记住每天博客的任务。

那么今天又记住了,怎么办呢?

这个问题,本质来说,是一个实施过程,发现新问题需要处理的状况。

首先,分析一下,计划没有完成,是否是实际发生的状况,在计划时没有考虑?

是的,计划时没有考虑如果忘记了如何处理。不过现在可以修改计划:忘记了写,需要补充,缺多少补多少。

思考这样的处理方法是否有问题?如果忘记了很久,怎么办?

那就平均任务,每天2篇,直到补充完成。

任何计划和实施都会出现问题,我们叫它风险(risk),遇到风险时,必须立刻处理它。

如果风险影响到计划排程,就需要做计划里程碑变更,(写博客是一个长期任务,没有里程碑。)

如果风险发生的原因在于计划的不完善,需要修改计划以符合实际情况的发生。(在这个例子里,是约定缺多少补多少)

如果风险无法解决,计划只有放弃,实施一个无法完成的计划是不明智的。(如果哪天我被抓,写博当然就只能停止了。)

以上。

如何学好英语

| Comments

— 发布时间:

英语其实很容易学。

需要做的是:

弄懂语法。 背诵,以及理解标准文章(根据水平的程度,应用英语的领域,选择不同的文章来背。)。 没有以上。 和以前学习文言文的方法一样。

以前我初中时,在英语老师那里补课,练习了很久的语法,初中以后都没有认真学习过英语,

现在水平大致在能够看懂文章(速度很慢,不能看文学作品),能够写email(语法一堆问题)。

看来我需要再继续学了。

生存的幻觉

| Comments

我们可以感觉到痛苦,快乐,

我们可以控制肉体采取反应。

开始时,我们不知道肉体,但是却有感觉。

之后,我们通过感觉学习到了肉体的存在,

却又困在了肉体中。甚至认为肉体就是我们本身。

我们控制,感受,了解以及不了解。

最后,肉体被抛弃,剩下的只是我们自己。

---若干年后,我们才学会如何离开肉体生存。

程序化语言

| Comments

据我所知,平常人语言的准确性不高,每个人的理解程度也不同, 这造成了无数完全没有意义的讨论。 我有一个想法:能否形成一种语言的子集, 严格规范语法,用词和句子之间联系,显式地提供每个结论的推理过程,出处。 不过,这样不就成为论文了?

举个实例:

我觉得设计模式不应该被滥用。 首先,我要定义自己的命题。 什么是设计模式?什么情况下可以称为是滥用?具体的实例是什么? 然后,我在提供实际的例子,显示在滥用的情况下,会造成什么样的后果。 其中,我必须要给出推理的过程。

之后,其他人的回复,如果是赞同的,给出其他的推理过程,来证明该命题的正确性。

而反对的人,必须要从推理过程,推理所用到的命题错误,事实不存在等来反驳命题,并需要引向原文,以方便读者阅读。

任何不符合该语法定义的回复,都可认为是废物。

各位觉得这样的模式如何?是否很有意义?

如何设计

| Comments

我是一个很初级的程序员,由于工作性质(企业软件一个模块的维护和开发), 与客户(企业内部使用该系统的员工)谈需求,设计,开发,导入,维护都是我一个人完成。 需要说的是,需求都是很简单的,做的事情也没有太多的技术含量,无非是设计一个流程。

现在我想要自己真的做一个桌面应用,问题就来了。我不会设计。

举个实例,我想要自己做一个GTD软件自己来用,名称为simpleGTD, 想好了流程(就是GTD的流程了),然后画了几个小图就开工了。

然后自然,开发遇到了一系列问题。

先说一下我的设计吧。

使用语言为python,界面使用PyQt,数据持久化采用sqlite。

思想也很简单,脑袋里面想到的东西都是事件,需要输入到程序里面。

然后程序按照优先级排一个序,我自己就按照优先级来做事。

可以把一个事件删除,计划到某个时刻(到时会自动调到最优先的程度),还有就是拆分成小事件(父子关系).

我开发方式就是增量式开发,就是写一点看一点,开始就遇到了问题。

原先设计时,打算用到QTreeWidget,用来显示复杂的组织关系,结果,按照文档写了一个类,用来显示sqlite资料,

结果怎么调试都无法正确显示。于是只好修改设计,取消显示组织关系---知道了开发前要验证技术风险

然后开始写数据结构,然后就是一大堆的SQL。。。。当然,一大堆的工作,一大堆的bug,

完工变得遥遥无期。继续修改设计,不再使用sqlite,只用python自带的那个pickle。

之后的工作就好过了许多,不过,还是有大量的时间花在了一边运行一边debug上面。

我虽然没有统计,但是至少知道,大量的时间浪费在了调试上面。

最后终于完工了,结果不很满意,但是至少能用。专案放在google code上面。如下:

http://code.google.com/p/smallgtd/

image

无论从什么角度上看,都不能说是一个成品,更别说和商业作品相比了,文档什么的更别说。

为什么我不完善?我不知道别人怎么样,我自己的感觉就是,程序编出来后,我再也不想看代码了,有种恶心的感觉。

编完后,我感觉到自己疲惫了,再也不想写程序了,或者说感到自己很无力和无能,无法写出东西出来。

我看了不少书,程序语言和电脑知识上面,感觉自己虽然不是很精通,但是至少该懂的都懂。但是在程序设计和计划管理上面,感到自己万分无力,日常工作中,就算能够应用一些技巧,但是在整体开发上面,我感觉没有办法提高。我应该怎么样才能成为一个能够设计好程序的程序员?我不知道。

用sphinx写文档

| Comments

现在的自动文档生成系统很多了,今天我介绍一个:sphinx。sphinx是python官方文档所使用的一套很简单的文档自动生成系统。

官方网站: http://sphinx.pocoo.org/index.html

安装方式

ubuntu下面:

sudo apt-get install python-sphinx

windows下面:因为我没有装过,不知道sphinx依赖什么,估计很多,很难装。

使用方法

打开命令行,找到你想要建立文档的位置,运行:

sphinx-quickstart

这是sphinx一个自带的快速配置工具,一路点回车,除了要你输入project名称的时候。(我就是这样的。。)

然后就会在当前目录下面建立一些文档:

  • build:自动生成的html,pdf之类都会放到这里。
  • makefile:上面设置的时候,对于unix系统,会默认生成makefile,以后要做什么事情,只要make一下就好了。(不要告诉我你不知道什么是make。)
  • source:当然是文档源文件目录了呀。

source文件夹初始时里面会放这个东西:

  • conf.py:sphinx-quickstart里面的设置都会放到这里。随便修改吧。
  • index.rst:文档的最顶端。

写文档:

修改index.rst, 改为:

::
  ~ 

上面增加了一个test的东西。sphinx是把文档当作一个树来看待的,你要加新的东西,需要在原先旧的地方添加你要加的东西的名称,在这个例子是test。现在可以在source目录下新建一个文件:test.rst

内容为:

test
==== 

这个是一个测试。

* This is a bulleted list.
* It has two items, the second
  item uses two lines.

回到目录最上层,运行make html,然后就会自动生成html的文档。

再开启 build/html/index.html ,这就是显示的结果,是不是很简单?

image

更多的文档在 http://sphinx.pocoo.org/contents.html , 以后我会介绍sphinx文档具体怎么写。