個人檔案Thought Walker相片部落格清單更多 工具 說明

部落格


    4月22日

    Ubuntu 7.04 配置Django + Apache开发环境

    先说一下本文档基于的安装环境:

    Ubuntu 7.04 Feisty Fawn
    Apache2 2.2.3
    Python 2.5
    Django 0.96

    这里假设我们已经拥有了一个全新的Ubuntu 7.04 的 Server 版安装环境,下面分步讲解安装配置各模块过程:

    1. 安装Apache2和mod-python
      利用Ubuntu的apt-get安装二进制包非常方便,不过如果不是使用root用户的话,请使用sudo命令:

      sudo apt-get install apache2

      同时,安装mod-python模块:

      sudo apt-get install libapache2-mod-python

      启动apache2

      sudo /etc/init.d/apache2 start

      如果发现有这样的报错:
      Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
      原因多半是因为没有配置ServerName:

      sudo vi /etc/apache2/apache2.conf

      打开apache2.conf文件,在末尾加入ServerName localhost,保存退出

      sudo /etc/init.d/apache2 restart

      重新引导启动apache2就可以了。具体可以参见此文章
    2. 安装Django

      最新版本的Ubuntu已经自带了Django的二进制包,不过,这里讲解如何从源码编译安装。
      Ubuntu已经缺省安装好了Python 2.5.1的rc0,所以这里无需再安装Python,不过,ez-setup.py并不是最新的,需要更新:

      cd /usr/src
      wget -c http://peak.telecommunity.com/dist/ez_setup.py
      sudo python ez_setup.py

      下载Django 0.96

      wget -c http://media.djangoproject.com/releases/0.96/Django-0.96.tar.gz
      tar zxvf Django-0.96.tar.gz
      cd Django-0.96
      sudo python setup.py install

      执行之后没有错误,表示Django已经安装完成。
      在Shell命令行中输入

      python (回车)

      >>>import django (回车)

      如果没有报错则表示django安装成功。
    3. 配置基础Django环境

      安装成功以后的Django实际文件存在于/usr/lib/python2.5/site-packages/django,我们将使用Django的django-admin.py(在django/bin目录中)来创建我们的Django项目,Django安装成功后,会自动在/usr/bin中建立一个django-admin.py的一个符号链接,所以无需指定路径就可以使用这个脚本文件了。

      创建项目djangotest,缺省apache2的文档根目录是/var/www:

      cd /var/www
      sudo python django-admin.py startproject djangotest

      这样会在/var/www下建立一个djangotest的目录,里面包含下面的几个文件:

      __inti__.py
      manage.py
      settings.py
      uls.py

      对于初始设置来说,并不需要更改这些文件,至于这些文件的具体用途,可以查阅相关的Django文档。
      这时已经可以启动Django自带的Web Server来测试是否创建成功了:

      sudo python manage.py runserver

      出现类似的提示表示启动成功:

      Validating models...
      0 errors found.

      Starting server on port 8000 with settings module 'newtest.settings'.
      Go to http://127.0.0.1:8000/ for Django.
      Quit the server with CONTROL-C (Unix) or CTRL-BREAK (Windows).

      但是此Server只接受来自与本地的访问,所有外来的访问请求都不响应,所以只适合于本地开发用途,如果使用虚拟机或者有专门的机器来安装Django环境,则不能使用了,对于生产环境则更不适用,所以需要配置apache2以便和Django良好合作。

    4. 配置Apache2以便与Django一同工作

      配置/etc/apache2/site-available/default

      sudo vi /etc/apach2/site-available/default

      在<VirtualHost>中增加一个<Directory>段(Apache2的配置详见apache.org),内容如下:

      <Directory /var/www>
      SetHandler python-program
      PythonPath "['/var/www'] + sys.path"
      PythonHandler django.core.handlers.modpython
      SetEnv DJANGO_SETTINGS_MODULE djangotest.settings
      PythonDebug On
      </Directory>

      这里有几点需要注意:
      1)PythonPath一定要声明在前,因为它的作用是要将我们的项目目录加入到sys.path中;
      2)PythonPath里面 [] 中的目录一定要是我们项目的上一级目录(搞不懂为什么是这样);
      3)SetEnv中那个settings的名字就是我们的项目名+.settings。

      上述配置完后,

      sudo /etc/init.d/apache2 restart

      重新启动apache2,无异常成功。

      在客户机上的浏览器中输入 http://服务器IP/djangotest,出现:

      It worked!
      Congratulations on your first Django-powered page.

      这样的提示页面,则表示Django安装成功!
    4月15日

    前日去试婚纱

    下周二就要去拍婚纱照了,约好13号去影楼挑选3套礼服。

    一到影楼,妻子就和接待我们的礼服员去挑选衣服了,我便静静地坐在沙发上面等。看得出来,妻子很高兴,新嫁娘般的心情吧。:)

    我站在镜子前,看着她一件件地试穿,心中默念,这或许就是幸福的一部分吧。

    3月30日

    孤独是永恒的

    大家都好像在传播着一种感觉——孤独。

    我生于1980年,26年来,我和许多年纪相仿的人们一起独自长大,孤独和我们如影随行。

    特殊的年代,特殊的一代人,我们孤独因为我们必须为国家日后的强大作出牺牲,于是我们成了第一代没有兄弟姐妹的祖国接班人。抑或换个角度:我们是家族中幸运的一个,毕竟我们能够这样孤独的长大。

    一代又一代的孩子继续着我们孤独的命运,而这种孤独的思潮也开始在社会中蔓延、流行。

    我们与自己玩耍、与自己办家家、与自己为友、与自己为敌。

    同学是我们童年记忆中不可或缺的亲情元素,然而,就如我的题目,孤独是永恒的,每当我们毕业,大家各奔前程,孤独便侵蚀而来,每一次升学,每一次更换学校,孤独都微笑着欢迎我们的回归,直到我们终于离开了求学生涯对于我们的庇护,进入社会。

    孤独终于得到了我们。

    继续成长,我们选择和另一个人结束这段孤独,可是幸运的人毕竟是少数,很多人在尝试之后仍然发现,孤独固然可怕,与不合适的人一起度过孤独更可怕,于是他们选择重新回到一个人的世界,独自地抵御着。

    幸运的人呢?他们生育儿女,却仍然在传递着孤独,直到儿女长大,独自飞翔,伴侣衰老,终于湮灭,人生又重回孤独。他们真的幸运吗?

    3月14日

    小妹妹的文章最近还写得不错哦

    嗯,感受越来越有深度了。

    2月16日

    许愿

    今天腊月二十九,许几个心愿,希望来年能够实现。

    1. 蜜月旅行订好了去江南古镇游玩,希望能够成行,并且旅途愉快。
    2. 6月底拿到新房,希望能够装修顺利。
    3. 年底时能够拥有一台数码单反相机,暂定Nikon D50。
    4. 希望父母、我和老婆都能身体健康,事事顺利。

    居然许了4个愿望,太贪心了吧,如果神不满意了,那就省掉第3个愿望吧,呵呵。

    Technorati tags: ,
    1月31日

    BLOG换地址了!dengyi.info

    现在的域名到期了,而且也不太好,所以,重新换了一个域名,大家以后要记得经常来关注一下。

    http://dengyi.info.

    1月28日

    中国人的姓:不亚于“四大发明”的发明(上)(转载)

    中国人的姓氏有这样两个特点:一是源远流长,从上古的伏羲氏时代开始中国人就有了姓氏,至今已经五千多年了;二是中国人的姓氏是按照父系传承的,即只是在男子中一代代地相传,比较稳定。事实上,这一点恰恰与遗传学中的Y染色体的传递方式相一致,Y染色体就是只沿着男性这条脉络下传的,除了极为罕见的异常,一代代的只要是男性,就会一直传下去。

    现在人们都知道,人有23对——46条染色体,其中X和Y染色体是控制性别的。在男人的精子中,一半含有X,一半含有Y;女人的卵子含有的都是X,没有Y。当精子中的X遇到卵子中的X,组成新的染色体对XX时,就生女孩;当精子中的Y与卵子中的X相遇,组成XY时,一个男孩就诞生了。当这个男孩再生男孩时,一定是这个Y又一次地被选中,与一个卵子中的X结合了。除极个别情况外,如果一个家族一直有男孩诞生的话,那么这个家族的染色体Y就一直传下来了,而且是同一条祖先染色体的复制品。

    我们的祖先太聪明了,他们在五千多年前就用“姓”给自己的家族做了命名。当然,我们祖先这么做的时候,想到的不仅仅是标识自己,区别他人,很重要的是为了避免近亲繁殖。但是他们没想到的是,此举一下子给他们家族的染色体Y打上了标记。从某种意义上说,我们的“姓氏”,就是染色体Y的“姓”,因为生生死死,承载着姓的一代代的人都消失了,但染色体Y却与“姓”结合在一起,流传至今。姓的传递,就是Y染色体的传递。这真是人世与自然神奇的同构,是天人合一的典范。我甚至认为姓氏是我们中国人的一项伟大的发明,是一项不亚于四大发明的发明。

     欧洲人有姓的历史不过一千多年,日本人在明治维新以后才有姓,才几百年。为什么中国人最早发明了“姓”,而且“姓”在中国能够延续下来?我猜想原因有二:一是汉语文字的简洁。单音节,一字一音,用来做姓,方便好用。西方人的语言文字用来做姓,就不如汉语方便,我们都曾有过记不住外国人复杂冗长姓名的感受;二是早在公元前221年,秦始皇就统一了中国,废除了分封制,推行郡县制,郡县制需要户籍制度配合,所有的人要登名造册,这是中国人的姓能够流传、普及、巩固以及人人有姓的重要原因吧。

    中国人在传统上特别看重生男孩,古人云:不孝有三,无后为大。原来我以为这种现象只有文化、经济和社会方面的意义,现在看来,并非如此,这其中有着更深的生物学上的意义。

    男孩是染色体Y的承载者,而人体其他的45条染色体在人类一代一代的繁殖过程中被反复地打乱重组,加之配偶的染色体不断地补充进来,从某种意义上讲,其实就是基因被逐渐地“稀释”。比如,你的儿女对你的基因,只继承了1/2,你的孙子、孙女只继承了你儿女基因的1/2,随着时间的推移,祖先的基因越来越少,最终近乎于无。但是除了少数的突变外,Y染色体躲过了被“稀释”的命运,它将随着这个家族的男性成员一直延续下去。

    也许这正是中国人喜欢男孩的深层原因。因为只有男孩继承了真正的祖先的一点遗产——Y染色体。这才是一个家族一直没变的东西,是一个家族真正的血统。

    转自

    单之蔷的BLOG

    1月18日

    (转载)有女如斯

    有女如斯,不高不矮,不胖不瘦;不漂亮,也不难看;会说话,会吃饭;会哭,会笑;会发脾气,也会逗人开心。


    有女如斯,自称是非同一般的“书女”,一本《青年文摘》就够看一个月了,不过也啃完了<镜花园>,<红楼梦>,<基督山伯爵>……印象最深的还是儿时的童话,有位作家曾经说过:“每个读过他(安徒生)的童话的人都应该感谢他,在他还没有把痛苦和沧桑埋入脑海的时候,就已经把纯洁的爱的种子埋入心里,无论以后面临什么样的谎言和背叛的时候,都不会产生邪恶的结果。”而且所有童话的结尾都是王子和公主过上了幸福的生活,与其说喜欢童话,不如说喜欢童话那个简单、雷同、但又让人心暖暖的结尾。最值得骄傲的是自称是郑渊洁最高寿的读者了,在上大学之前,订了他所有的〈童话大王〉,并将它们放在书架最显眼的地方,而那些雨果、巴尔扎克、鲁迅、艾青……要是找上半天,还是会找到的。


    有女如斯,虽然不曾受男孩子的青睐,却永远是蚊子的最爱。眼看着身上的小红点随着气温的升高成双曲线而与日剧增,并且它们会象达成了一致协议一样,会在不同的时候发做,长此以往,苦不堪言。俗话说“痒则思变”在思索了“是生存还是死亡”之后,想到“是热死,还是咬死”,以后校园中变出现了一怪女,无论何等的烈日高温,都以一条牛仔裤武装,在配备一瓶驱蚊花露水,穿梭于校园中。


    有女如斯,虽然每日宣扬减肥,但如若一晚不吃东西则展转难眠.也曾试过苹果餐,不过那是饭后才吃的,也曾一天滴水未进,只是第二天多吃了双分.每当衣服、裤子频频发出警报,总是对镜长叹几声,然后那起饭盒冲向食堂,好好美餐一顿,以抚慰受到重创的心灵。


    有女如斯,写的一手烂字也罢,还错字连篇,可是从不思悔改,美其名曰“通假字”,某日兴致突发,打扫寝室,收拾箱柜,以为会大受嘉奖,果然获美誉“闲妻凉母”。


    有女如斯,她是妈妈的小棉袄,是朋友的开心果……和周围千千万万的女生一样,平淡而又充满了希望。

    1月14日

    请允许我称您“POCO”

    POCO: Plain old CLR object。请允许我这样称呼它,先占一个位置,若干随笔之后,我希望我能够整理出一篇有价值的文章。

    1月12日

    思考的共鸣

    作为一个专业从事软件开发的程序员,经常面对的就是系统开发时各种各样的系统分析和对象模型的构建问题。我承认,至少到目前为止,我还没有在企业级的软件开发领域真正入门。

    没有入门的原因就在于:当我面对那些企业级软件必然会涉及的分析、设计问题时,时常感觉到束手无策。幸而我有一个比较好的习惯:勤于思考。

    最近,我的思考终于有了让我感到兴奋的成果,我在开发中所遇到的几个主要的系统设计问题,都一一在《企业应用架构模式》这本书里面得到了有益的提示。

    呵呵,说起来惭愧,按说自己遇到困惑的问题在别人那里轻描淡写就提出来并给出了各种情况下的考虑建议,实在算不得什么“成果”。我真正兴奋的是我在遇到这些问题的时候所进行的思考与Fowler大师所提出的忠告十分契合,说明我目前找对了思考的方向,或者说我正在遇到企业级开发会遇到的各种大众化问题。我觉得我开始入门了。

    这种兴奋感让我立马对之前已经买下,但是始终没有时间(或许是借口)去读的几本书产生了兴趣,《分析模式》《领域驱动开发》等等。能够站在大师的经验之上来思考问题,相信能够让我进步得更加快些。

    12月25日

    使用类型化DataSet需要注意DataTableName

    使用类型化的DataSet时,DataAdapter.Fill()方法里面的TableName必须和生成类型化DataSet所使用的xsd文件中定义的一样。否则得不到数据。

    例如:

    在xsd文件中:

    <?xml version="1.0" standalone="yes"?>
    <xs:schema id="UserDepartRoleDataSet" xmlns="" xmlns:codegen="urn:schemas-microsoft-com:xml-msprop" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="UserDepartRoleDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
    <xs:complexType>
    <xs:choice maxOccurs="unbounded">
    <xs:element name="UserDepartRole">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="USERID" type="xs:string" minOccurs="0" />
    <xs:element name="ROLEID" type="xs:string" minOccurs="0" />
    <xs:element name="DEPARTID" type="xs:string" codegen:nullValue="" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>

    在调用时

    UserDepartRoleDataSet ds = new UserDepartRoleDataSet();

    adapter.Fill(ds, "UserDepartRole");

    必须注意这一点。

    11月28日

    《落花流水》重拾过往岁月

    人一大是否就喜欢念旧,喜欢怀念过往的岁月?

    前天偶然听到了陈奕迅的《落花流水》,曲调轻快,触动着我心中柔软的那些回忆,一种感觉,一种来自遥远天际的轻柔呼唤,一下子让我感动。

    这首歌激起了我多日不曾显现的念旧的情绪,虽是一首新歌,却拥有着属于那些光辉岁月的醇香,我是否需要停下来好好想想了?

    11月1日

    失眠夜

    很久没有失眠了,记得上次还是在学校的时候了。

    这次失眠居然是因为工作上的事情,唉,我竟然这样投入。

    流程复杂,环节繁多,每个细节都需要考虑周全,不知道这次的经历到底以后能够为我带来什么收获,我是一个做事的人,只希望能够把事情做好。

    9月29日

    佳句摘抄

    1. 人类所有的智慧可以归结为两个----等待和希望.
    2. 有时,我们虽然理直气壮,双腿却不免颤抖;另有些时候,我们虽然完全错了,但却内心欢畅。
    3. 要记住:科学需要一个人付出他毕生的精力.
    4. 书与友,贵精不贵多.
    5. 机会是个没有意义的词;任何事物都不会无缘无故地存在.
    6. 不必告诉我你多么勤奋,只要告诉我你做了多少事.
    7. 不要害怕你的生活将要结束,应该担心你的生活永远不会真正开始.
    8. 无知的全部疆域尚未测绘成图:目前我们只是在其周边探索.
    9. 我不反对励志,问题是励什么样的志。一个人可以为自己树立很多目标,但第一个目标应该是优秀,成功只是其次的目标,应该把成功看成是优秀的副产品。首先要让自己成为一个优秀的人,成了优秀的人,你可能成功,也可能在社会的意义上不太成功,但是不管怎么样,你的人生是有意义的。如果你是一个平庸的人,你最多只能得到渺小的成功,因为你始终只是在混日子,最多只是混得好一些罢了。平庸者只有职业,优秀者才有事业,一切伟大的成功者必定是优秀者。所以,你们一定要以优秀为目标,不要去在乎那些小成功,有大成功在等着你们。

    9月19日

    Rojo再次改版

    从周日开始,Rojo就无法访问了,看它给出的提示界面知道了它正在维护,说是太平洋中部时间的午夜就可以访问了,谁知等到周一的晚上才登上。

    打开后的页面让我眼前一亮,Rojo再次改版,又一次重新优化了Ajax的访问速度,人机交互的体验也进行了改进,不过,我唯一不满的是它把“Mark all feeds read”这个功能取消了,只能一页一页的“Mark Read”,个人觉得不怎么方便。

    9月17日

    八月桂花香

    早上起来,一阵忽然而至的桂花香味告诉我,秋天真的来了。

    由于闰七月的原因,今年的夏天特别的冗长,也特别的难耐,重庆经历了有气象记载以来的最大旱情,成都这个气候宜人的地方也热得让我想起了家乡的夏天。

    虽然迟了点,但秋天毕竟还是来了,那么,人们常说的秋天的收获呢?

    9月16日

    “佳句”串烧

    叶子的离开,是因为风的追求,还是树的不挽留。

    我想,寂寞和孤单确实不一样,孤单只代表身边没有人。
    寂寞,是一种内心感受无法与人沟通的心理状态。而真正的寂寞,是连自己也忘了喜欢一个人的感觉。

    香烟爱上火柴,就注定被伤害。

    不要轻易说爱,许下的承诺就是欠下的债。

    老鼠对猫说:我爱你。
    猫说:你走开。
    老鼠流了一滴眼泪走开了,谁也没看见,老鼠走后,猫也流了一滴泪。其实有一种爱,叫做放弃。

    一只风筝一辈子只会为一根线冒险。

    问世间情为何物?
    佛曰:废物。

    灰姑娘的爱情再美12点之后,必定消失。

    妈妈说小男孩应该记住:越漂亮的小姑娘,越会忽悠感情。

    今年流行,两个人的错,一个人来承受。

    9月8日

    我们、孩子们

    因为腰病的原因,我现在每天需要去康复科做牵引理疗。躺在冷冷的理疗床上面的时候,想着自己已经不再健康的身体,着实让我对自己失去了一些信心。

    这样的想法知道我看到了她,今天下午,当我又一次躺在那长长的理疗床上闭目养神的时候,一阵清脆欢快的童音忽然唤醒了我,“爷爷下午好”,听得出来,孩子嘴很甜。很快,没有了声音,我猜想她可能是来做理疗的患者的孩子吧,家长走了,自然也就离开了。

    时间到了,我休息了一会,下了床,走出理疗间,眼睛很自然地往对面的复健室瞄了一眼,一个漂亮的孩子,正坐在作复健的床上,她正好也看到了我,“叔叔”,是她?这时我才发现她是一个女孩子,不过4岁,旁边的医生正帮她脱掉鞋子。这么小,她怎么会……

    康复科的朋友告诉我那个可爱女孩子因为车祸导致脑部受伤,左边身体近乎偏瘫,右腿也骨折了,5月份刚刚来这里的时候,连哭都不会,浑身麻木,天……

    4个月的复健让她部分地恢复了健康,但是总有些残缺是终身的,很多时候我们都会为超越孩子们年纪的遭遇而伤心,同时也感动于他们超越年纪的承受力,或许是童真般的无知,让他们能够不知者无畏般地抵御种种的痛苦。

    很想自己以后也会有这样可爱的孩子,同时也愿付出我所有来让她健康地成长,最后还要对自己说,看,她多坚强,你,小意思吧。

    9月6日

    变化

    If you are a Developer, you should always reset yourself, reset what you learn and do thing before, fundamentally.

    这是今年微软Boston Tech Ed 2006上面的一句话。

    改变吗?开心点,改变的原因在于问题的根源有了更好的解决办法。

    8月30日

    期待9月

    最近仍然是一如既往无可救药地忙。不过,9月应该是个终点,从那时开始我应该可以做点我早就想做的事情了。

    医生让我这个月休息,游泳的事情只有从下个月开始了。

    《依然范特西》再过一周就要上市,很期待。我在JOYO上面定了预购版,连续2年预购失败让我很是心烦,不过也让我第一次知道了原来交了预购款也不一定拿得到。希望这次可以。

    《夜宴》也在下个月11号。

    还有很多事情,9月真是一个值得期待的月份。希望那个时候我会有个好心情来享受这个9月。