今天部署了一个dpress的演示站点。
http://vik.haoluobo.com/dpress/
http://vik.haoluobo.com/dpress/admin 用户名:vicalloy 密码:vicalloy
感觉django的部署还是太麻烦…
今天部署了一个dpress的演示站点。
http://vik.haoluobo.com/dpress/
http://vik.haoluobo.com/dpress/admin 用户名:vicalloy 密码:vicalloy
感觉django的部署还是太麻烦…
用Django做Blog实在是太过简单,所以在网上可以轻易的找到大量用django实现的Blog,DPress就是其中一个。
本想用这个项目做Django最佳实践的教程,不过发现自己实在是不擅长这个。此外该项目花费的时间比预期的要多出不少,以至到后期挺没耐心,功能方面也因此大幅缩水。
目前DPress的基础功能已经完成,文档方面我会在晚些时候补上。
有兴趣的朋友可以将代码下回来看看。如果要使用Django自己服务器启动起来非常容易。
DPress本着以最少的代价完成最多工作的原则,能不造轮子的地方就不造轮子。
对Blog应用来说,一般都会有较高的个性化要求。换肤基本上成了必备功能。很遗憾,这方面是django的软肋。换肤需要创建新的模板,并需要修改配置文件,指定使用新模板。好的方面是,DPress的模板在我优化过后,还是比较简单,改起来还算方便的。
虽然在开始DPress之前就计划的很好,本以为很容易就可以搞定,但事与愿违开发过程中遇中还是遇到了一些麻烦。
Pinax中的Blog组件使用threadedcomments来增加评论支持。在评论内容填写不完整时,会转到它自定义的页面。我认为这是一个挺不友好的设置,尝试修正无果。切换到django.contrib.comments后问题则更糟,不但评论出错会跳到自定义页面,即使评论成功了不会转到评论页面,而是给出一个评论成功的提示。最后没办法,还是自己将添加评论的代码给写了一遍。
此外在模板方面也折腾掉了大量的时间。模板的本身也是程序中重要的一环,但不少的可重用app都没有带任何模板,而且也缺乏模板方面的范例。在我看来,这也是django的第三方app普遍不太好用的重要原因之一。
下面上张图吧,模板的样式,是偷的朋友BLOG的(他也是偷别人的)。
以前也翻译过一些东西,不过都是非常短的文字。今天在网上看到一篇关于unladen swallow(Google的python实现)的文章,于是尝试对其进行翻译。
翻译东西确实不是一件容易的事。外文文章要读懂很容易,你只想要关注其中的重点即可,对于一些不重要的地方即使你没读懂也没关系。在翻译的时候你很容易的就会陷入了原作者的语言习惯,但外文和中文的语言习惯还是有很大的差别。其中语言习惯的差别不仅仅表现在句式结构上,还会贯穿在整片文字的语言组织上。所以如果你是按句翻译,那不管你如何组织语言,依旧会读起来很拗口。
除技术因素外,翻译还是一个很考验耐心的活。一篇可以在几分钟内读完的文章翻译起来得花几个小时。
虽然翻译得比较糟糕(自己都不想再读一遍),不过总算翻译完了,如果哪天有空就再休整一下,至少不要读得这么恶心。
曾有那麽一段时间,忽然间脑袋里出现了很多奇奇怪怪的想法。然而现在似乎很久都没有出现过一些什么新的怪想法了。或许生活让人变得平庸,让人变得缺乏想象力。或许是最近看了太多关于时间穿越的电视剧,让我忽然间又想来了这些无聊的想法。
其实这些东西我在很久以前也写过,发布在某个论坛上,只是估计没几个人认真的看了。不过也没关系,这本就是我自娱自乐,一个人的YY。
人类对宇宙的思考,或许正是哲学的起源之一。同时,人们又用所谓的哲学去解释宇宙。下面我要写的是我对物质,对宇宙的YY。我想这些YY应当和早期的冥想家们的YY差不多。里面不会有太多的严谨的论据,更多的可能是因为这样,所以这样。用一个假设去论证另一个假设。
曾一直很迷惑能量本是无形的东西,怎么会变成有形的物质。不过换个角度,如果能量本身也是一种物质那这一切似乎就开始变得容易理解了。能量只是微观粒子的宏观表现形式,而能量的直观的表象形式就是热,更直观一些则是光。为了方便表述,我将这些能量粒子称为光子。
这些粒子在无时无刻的运动着,其运动的速度为光速。同时由于存在类似分子间作用力的东西(我决定取名为”光子间作用力”),保证这些粒子可以聚集在一起,以物质的形式出现。同时由于类似水的蒸发,一些粒子会脱离出去。这时对外的表现形式就是发热/发光。
通常物体散热减少的粒子非常有限,人们无法察觉到质量的减少。但在进行核聚变或核裂变时,逃离的粒子数已经多到了可以测量的程度,这时人们发现物体的质量减轻了。由于粒子逃离的速度为光速,根据宏观世界的能量公式很自然的推导出了爱因斯坦的能量公式 能量 = 质量 x 光速平方。
至于为什么光子的速度为光速,我们可以将光子理解为,光子组成物质,其实是将速度转换成了势能,而光子的逃逸只是将势能重新转换成速度而已。
光的特殊还在于它的波粒二象性。可能光子并不是单纯的粒子,它如同双子星一样,每个光子由两个质量相同的粒子相互围绕着。所谓的波长受两个粒子的旋转周期的影响。
物理学力告诉我们光是一种波,通常情况下波的传播是需要介质的。不过在前面的假设里,光本身就是一种物质,因此介质变得不再必要。与此相反,在真空里由于没有了其他物质的阻挡,光的传播速度反而是最快的。
曾一直认为光的弯曲是一件匪夷所思的事,不过既然前面已经假设光本身就是一种粒子,那这一切都变得容易理解了。
万有引力本身只是光子间作用力的一种外在表现形式。当万有引力足够强的时候,光子的运行轨迹将被明显的改变,看起来就是光弯曲了。
在爱因斯坦的理论里,物体的质量将随速度的增加而增大,在达到光速的时候物体的质量无限大。根据能量公式,我们可以算出超越光速所需要的能量是∞,此时达到光速根本就变成了一个伪命题。
在前面的理论中有个很重要的前提,质量增大。
物体的运动可以看成是组成物体的分子的宏观运动方向一致,再细分下去就是光子的宏观运动一致。
从微观上讲,对于接近光速的物体我们可以看成是用光子去轰击一个物体,来给物体加速。当物体的速度越接近光速的时候,光子相对物体的相对速度就越慢。当物体的运动速度达到光速的一半的时候,光子相对物体的运动速度也只有原来的一半。此时增加相同的速度,需要比静止时需要更多的光子(能量)。
同样,当物体的运动速度无限接近光速时,物体和光子的相对速度也无限的接近零,此时光子再也无法为物体加速。
和前面物体质量的增加类似。当物体的运动速度接近光速时,组成物质的粒子将的相对运动速度也将变慢。达到光速后组成物质的粒子间的速度降完全变为零。此时对该物体而言,以前的物理活动都停止了。
这就有如将某个人冰冻了N年,然后某日解冻,虽然世界已经改变,但对被冰冻的人而言,他还和被冰冻的那天一样。
我相信黑洞的存在。黑洞应当是个超越人类理解能力的世界,黑洞已经不再符合已知的物质的组成理论。而且或许我们永远也不可能知道。黑洞里面的世界,或许除了YY没有更好的了解方式。
至于所谓的虫洞等时髦的科幻名词,还是忘了的好。
把玩了两天的黑莓,总体感觉黑莓的可玩性和windows mobile相比还是有不小的差距。
这里将黑莓的优缺点罗列一下。
优点:
缺点:
一直以来我的手机就不太稳定,但最近的表现还是有些过分,在接过一次电话后就再也接不到电话,必须得重启才能解决问题。当然,这或许和我新刷的非官方ROM有关。
再次漏接电话后,做了一个拍脑袋的决定,到淘宝去订购了个黑莓的手机。
感觉多少有些不可思议,本来一直没多少换手机的想法,然后忽然就决定了,而且还是黑莓。
估计后天就可以到货,到时候看看黑莓的体验怎么样。
昨天收到网友的邮件说我做的农历插件无法使用。但我自己测试却没有发现啥问题。于是在自己的虚拟机里测试了下,还真无法工作了。
检查代码发现里面有runCommand(‘cal’),这样的代码。去查了下,发现cal是linux查看日历的命令。估计是新版本的yahoo widgets去掉了相关命令的支持。重新下载了个yahoo官方的日历组件,将runCommand(‘cal’)用新版yahoo插件中相关代码替换后我的widget终于又可以正常工作了。
我的这个农历组件已经发布两年多了(看截图:-),直到现在才有人给我反馈(不过,我也不知道从啥时候开始出问题),看来这东西还真没几个人用。
五岳归来不看山,黄山归来不看岳。
去过黄山之后,登山的选择似乎就变得很小了。抱着地图看了一圈,距离比较近的似乎就只有三清山可以去去了。
话说三清山也算是很早就想去的一个地方了。虽说三清山并不算太出名,但三清山人有一套不错的说辞。徐霞客将太多的词语给了庐山,似乎庐山已经是最好的了。游览过三清山后却叹一山还有一山高,一时词穷,所以索性封笔。虽说这多半是后人的戏言,却让我多少还有些心生向往。
很多去过三清山的人都对三清山有不错的评价,说三清山接近黄山。确实只是接近而已。从某些角度上说三清山有些地方和黄山还是有几分相似之处,不过三清山却比黄山要俊秀不少。如果说黄山是一个大家闺秀,那三清山就只能是小家碧玉了,虽有几分姿色,却也难登大雅之堂。
本在出行前就基本上将行程给安排好了,但最终计划基本上全部乱了,把一切搞得一团糟。不能说三清山不好,只是由于一些主观和客观原因让这次的行程没有预想的愉快。
最初的计划是在山上住一晚,但看网上的介绍似乎没有这个必要。事实证明确实没有这个必要。相比黄山而言三清山要小了不少,如果安排合理一天下来绝对绰绰有余(但是我的安排完全砸锅了)。
在出发前就到网上找好了导游图,并做了个基础的行程安排。到景区后又买了两张导游图。这里的导游图一张不同一张,而且更糟糕的是,似乎没有一张是正确的。最终导致我将东/西栈道走了两遍,然后没能逛完南清园(主要景区之一),最糟糕的是还错过了最后一班回玉山的公交。
我并不是对所有的托都特别的反感,我相信大多的托多少还是有些职业道德的。有些东西反正是需要的,让人介绍介绍,买卖成了大家高兴也并无什么不好。却不想这次遇到了没啥职业道德的托。说得好像只此一家,后面还要加上一句,我真的不骗你。不骗才怪。
栈道结冰,大家依次扶着围栏缓慢的移动。前面的那位大小姐一路叽叽YY的抱怨个没完没了。对面过来一位小姑娘,结果两人面对面的站了几秒,然后对面的小姑娘小心翼翼的让开。这位大小姐开始愤愤不平的抱怨到,也不知道让一下。苍天啊,如果对方是个男士你还可以说对方没有绅士风度,但你凭啥非得要一个和你年纪相仿的小姑娘给你让道。为了避免耳朵生茧,我绝对先行一步。走的时候不小心小滑了一下。这位大小姐轻蔑的说啥“超、超、超……”。我想要是我真的滑到,她还不得乐掉大牙。真想回敬她一句。不是我想超,实在是受不了你的鸡婆。
虽然django的admin漂亮的实现了CRUD,不过在有时候admin并不是这么好用。然后开始进行手写CRUD,接着发现自己又陷入了重复操作中。相比而言Ruby自动生成的添加删除功能就好不少,你生成的基础框架是可以扩展的。
为了减少手动书写CRUD的工作量,我写了一个扩展的startapp command。使用这个命令会自动生成 list/new/edit 的操作和html文件(这样修改起来就方便多了)。
如需要在其他工程使用该命令,只需要将项目中的django_extensions文件夹复制到其他工程的app目录,并在settings.py里把django_extensions添加到app列表里。该扩展命令为create_app,使用方法和django官方的startapp一致(如:manage.py create_app blog)。
为了方便演示,该扩展命令包含了一个演示工程(hidjango)。下面的步骤是windows平台(因为用了几个bat)。
/django_extensions/conf/app_template/ |~templates/ | `~{{ app_name }}/ | |-base.html | |-edit.html | |-list.html | `-new.html |~templatetags/ | `-__init__.py |-__init__.py |-admin.py |-forms.py |-models.py |-tests.py |-urls.py `-views.py