软件
(第一部分请参考
《四年的回忆(一)》)
(二)
自己对于古典音乐的迷恋,完全是由于想要“特立独行”的这个俗套想法。从猎奇的心态开始听莫扎特的交响乐。没想到却一发不可收拾,走进了一个更广阔的世界。现在想来,从交响音乐入门,开始听古典音乐以及有两年多了,而这么长的时间以来,无数次地回响在耳畔的音乐,仍发现自己所努力了解、努力去吸收的,对古典音乐的认识总还是那么地少,而至的自己前进的空间又是那么的大,以至于自己设想中的,仅仅是把著名的、最需要了解的作曲家的交响曲部分了解的十分纯熟,也要花费比这几个年头更长的时间。不过这样的目标不但没有吓倒自己,反而激发了自己的一种想要了解的欲望,哪怕需要更多的时间,因为自己也深知,这样的美好的东西,是值得花费时间在这上面的。
听音乐,其实重点在于认识了许多伟大的心灵,想来比文字还能更加直面地面对一个人的内心世界的,只怕也只有音乐这一载体了。莫扎特、贝多芬、马勒近乎截然不同的风格,其实是截然不同的性格的流露,更是作曲家内心世界的直接表达。好的音乐,就是作曲家以他的方式叙述他自己的情感,同时以这种情感激发听众自身的感觉。
上学时还选修了交响音乐的课程,现在想来当时了解的还不够多,所以学习到和了解到的知识,受制于当时所能理解的小小范畴,也了解不多。也可能是正规的课堂教育和自己追求的东西也还是会有不小的偏差。自己后来跑去三联书店,陆陆续续地几乎买到了所有能买到的新的或旧的三联爱乐杂志,及其喜欢,从上面学到和了解到了非常多的东西。
鉴于自己还没有达到自己所能认为的,可以开始评论些古典音乐的层面上来,说一这里就先不多说了,或许以后会专门就古典音乐的入门谈谈自己的感受。
(此部分于较早前写成,更多信息不妨参考
《莫扎特,莫扎特,莫扎特》 )
----
Python与Linux
从1995年开始使用计算机,真正震撼到我的东西,其实并不太多。而那些真正震撼到我的,相信会持续影响以及改变日后的生活。Python和Linux就是这样的东西。
我仍旧记得自己初中和高中、买着当时创刊不久的程序员杂志,对着里面仅有20%有兴趣并且能看懂的内容一遍又一遍痴痴地看。但后来直到大学都发现Windows实在是令自己觉得无聊、曾经的激情似乎不知该放在什么地方、索然无味、千篇一律的软件和游戏不能激起自己怎样的兴趣,甚至找不到中学时虽然幼稚但是却满怀干劲写免费软件时的感觉。我一直觉得自己这段时间荒废了不少,幸好还有几个假期用词汇大爆炸背了不少的单词,弥补回来些。
05年的后半年开始,Ubuntu的名气越来越想,而自己始终没怎么接触过的Linux,全然变得美丽起来,勾起了我的兴趣。06年4月的考试过后,自己毅然安装了一次,而慢慢熟悉Linux以及开源软件之后的感觉,全然是非常震撼的,那种震撼是如此强烈,事实上那种感觉至今仍然萦绕在心头。
那是一种几乎从来没有遇到过的,不以什么功利性的目的为手段、而可说是仅仅以实现、满足、共同建设和奉献为目的,而发起和实现的庞大软件工程。集合了上万人的聪明才智、最终的成果面向所有人类开放、自由共享。这是对小小年纪就对版权有所了解,并且只接触过商业软件模式的我的极大震撼。
有趣的是,我大学期间的第一份工作,是在一个面向海外的Shareware专营网站,处理并搜集海量的Shareware信息。一开始猎奇的新鲜感很快就被枯燥重复无效率的操作方式所淹没,于是当时还在用Windows的我用了几个晚上,写出个Windows程序,把一切可以自动化完成的工作,都交由电脑处理,节约了三分之二的时间和劳动。这份SOHO的工作做了一年,期间那个网站的后台变化了好几次,我这里的工具也相应变化了几次,而在用Ubuntu的时候已经惊奇地发现,Linux下看似简单的工具,通过巧妙组合,可轻易完成Windows下仍然需要复杂编程的工作。
在使用了几个月Ubuntu,以及对Linux有了比较多的了解的时候(图书馆堆着厚厚尘土的Linux书籍,我至少都借过一次,即使了解不深,感触也还是很深的),怀揣着对于没能在更早就了解Linux的些许遗憾,我又开始了自己Linux Dedicated Server 的构想。
(此部分未完待续,敬请关注下一部分)
我的工作,本身和Python没有什么联系。很多工作都是那些整体工作的一个个细小环节。很高兴的是 ,完成这些工作的过程,还可以被细细玩味。在自己用过一些Geeky而又足以被称之为legendary的工具过后,对时间、效率以及其间那种过程的优雅就有了一种非常深入的体会。那种感觉很难被忘记,时刻存在于自己之中,并无时无刻不激励着自己在存在任何可能的情况下重现这种感觉。于是,我电脑中的几乎所有存在文档的项目都使用
Bazaar进行管理;很多工作进行的关键项目,是一个.py文件,通过管道,加上uniq,sort一类的命令来生成自己想要的结果。
我们本可以让生活更有效率,但在很多时间、过程的作用下,我们的工具却并不一定在朝着更有效率的方向前行。用Word修改毕业论文开题报告的格式的时间,要远远超过我把它写出来所用的40分钟,而那些字体、格式、每页不同的样式、参考文献的排列,在这样的工具中真的会称为一种噩梦,从而浪费掉无数的时间。我还没有使用过Tex,但我似乎能清晰地感觉的哦,Word这些所谓现代的工具带来的,与传统、经典的Unix哲学几乎完全向悖。它们拾起了一个一个的,华丽的小优点,却失去了原则,更谈不上哲学。
工作的很多过程也是这样,很多时候朝思暮想所想要达到的结果,总认为应该有一种更复杂、先进的工具来完成。(或由于不了解,或缺乏认识──这不可避免,而选择用非常原始的方法来完成一件任务。)结果最后发现完成这一工作的,就是那些在30年前就已经被发明,在简洁的外表下蕴藏着无限的可能性的Unix小程序。这带给我的震撼可想而知,却也让我得以真正地发现并认识到生活的美好。这种激动让人感到无比幸福,而一想到还有太多太多这样的感觉有待去发掘和体会,这种幸福感就变得愈发强烈。Unix工具及其哲学、
Python、绿野仙踪、D小调‘合唱’交响曲、马勒、
格瓦拉的精神、
豆瓣,等等等等,很多时候在萦绕着自己,一想到这些,就会觉得激动人心的美,是存在并且会永远存在的。
tarsusa是一个非常简单的时间管理程序。使用它,您可以方便地管理所有您要完成的事情。无论是将杂乱的事项分门别类地整理,还是提醒您优先处理即将到期的任务,tarsusa都游刃有余。tarsusa可以提示您每天都必须完成的工作,并且记录每日您完成这些工作的情况。
这个程序是使用Python开发的localhost端Web应用程序。Web框架选择了Karrigell,一个纯Python的Web Framework,使用的数据库系统是Karrigell内部自带的buzhug数据库。
发布札记:
在我笔记本中运行的tarsusa的记录里,r6版本来是定于2006年12月发布的。原本设想中的版本比现在发布的这个有更复杂的功能,但以“够用就好”这种准则的指导下,tarsusa的开发始终就处于极小的改进这种规模。这部分代码在我的硬盘上,基本上用电脑的日子都会使用,觉得缺少那个Feature实在是很麻烦的时候就加上。就这样过了一年,添加的代码不多,功能更像样些,经过我长时间试用的这些代码就摆在您面前。
关于更多更详尽的信息,您可以查阅
http://blog.donews.com/CNBorn 中
关于tarsusa的文章 以及
tarsusa网站 以及
tarsusa的Google Code页面 下载:
截图:
如何安装与试用:
r6 功能更新:
- 首页显示昨天完成每日任务的数量
- 首页不再显示所有未完成的任务,而显示所有未完成的任务分类,点击相应分类查看相应的任务 - 避免首页显示过长
- 在任务的详细页面中可以完成该项任务了
- 在任务的详细页面中可以看到于此任务相关的其它任务的信息
- 显示每个类别项目的数量在整个数据库中的百分比
已知问题:
- 添加项目时尽量不要加入半角引号,会导致js脚本无法正常处理删除提示信息而无法删除项目
以往的发布:
tarsusa r5 -
第一次发布
15日去清华大学参见了软件自由日活动。可惜的是由于我对清华大学不熟悉,一通乱跑到了会场之后已经是任何可以领取的纪念品都没有了。我十分想要大会主题“软件自由日”的袋子,很是可惜。不过好在拿到了Ubuntu 的Sticker,终于得以让我在电脑上炫耀一番了。(
图片链接)
演讲方面,只听了一部分演讲(红旗、Mozilla、OpenMoko、Mysql、康盛创想)。给我留下最深印象的还算是
戴 志康,轻松、简短的演讲中,很多地方都能体现出一种成熟的特质,和普遍存在于大学中同年龄学子的迷茫面庞有非常鲜明的对比。Mysql的演讲也十分活跃, 互动性十足。美中不足的一点就是在这样的会议上,有一位演讲者使用了在我看来稍显偏激的演讲策略来普及开源知识(可能会引起荷尔蒙旺盛的学生的兴趣,但我 认为过激的宣传对开源只能造成伤害),并且看了下这个公司的产品和方向也是我认为十分没有意义的东西,辅以宣传材料上面陈列的中国式特色介绍,让我觉得十 分无趣,就没有听这个演讲。(不点名是哪个公司了。)
花了一些时间在下面的演示区域转悠,学到了不少东西。尤其是Debian部分有位大哥讲解十分热情和详实,学到了不少东西。同时我觉得这个会议如果能够把 交流也放在和演讲等同的地位就更好了(当然自己也没有参加过类似的自由软件活动,这领域也还不认识什么朋友),让大家有更多的交流空间,毕竟很多知识是要 靠交流来得以产生和发展的。
由于比较匆忙,也就没顾得上照相。希望下一届如果还是在清华大学举办,请在网站上放个清华大学地图的PDF下载才好。(希望这个地图的版权不是proprietary的)
参考阅读:
《环境问题与开源》
在法国文化中心看了
《城市的可持续发展》这 个纪录片。起先并没有对这个片子的精彩程度保佑很大的期望,以为只是一个一般的介绍环保的片子而已。然而看过之后,大为赞叹。整部片子通过讲述各种新技术 在建筑中的运用以达到生态“可持续发展”的效果,期间穿插的演示、讲解既生动又令人赞叹,实为一部佳作。同时通过影片中对环境问题的相关思考和意见,自己 似乎觉得还可以延伸到接触、发展开源软件这个领域中。(我这里使用的“开源软件”这个词,其中也有“自由软件”及其相关概念。不愿在选词上过多纠缠,大家 能理解其意思是指:倡导软件使用、修改自由;源代码开放即可)
总体来说,使用开源软件和维持环境的可持续发展都是一件有益的事情,可持续发展保护了人类的生存环境,为下一代的生存提供了保障;而开放源代码软件则保障 了计算机用户的权力,开源软件的潮流可以有效遏制垄断,推动信息共享,促进科技发展。但他们目前的共同缺点都是成本高(目前的可持续发展建筑造价正在努力 向普通建筑靠拢,而开源软件虽然不存在售价问题,但是其相关的培训、运营以及综合成本也是其软肋之一)
在该纪录片的片尾,一位建筑设计师提到了当前可持续发展建筑物理念的普及还需要很大的努力,在很多的国家,“比如中国。”,他提到,可能还会有很多的工作 要做。我想这和开源软件在中国所面临的处境太相似了。在一个同样的领域,因为陈旧的观念以及短视的以成本为第一优先的原则蒙蔽了双眼,远远落后与别人,从 而针对未来的远见以及愿景也不可能有存在的基础,所有的一切都是成本与回报的简单公式在当前并且只限于当前的这个有限的短暂时间段中的演绎;更不要妄想能 够以这样的观念和行动来成为领导者,这是绝对不可能了。针对可持续发展环境进行能源优化的房屋应该是越来越多,我之前参与的翻译工作也有这方面的内容,会 了解一些。但可能是由于这个影片中介绍的科技水平实在是太尖端了吧,譬如从直接折射日光作为光源,以四层楼为一组变换结构以便通风、利用空气的大厦,以及 通过设置绿色植物缓冲区来实现通风、保温、空气净化等功能的大楼,都显得离我们的生活有些遥远。而从我对于我们所处的环境中对于类似问题的观察,发现我们 其实不只是从技术上,而是观念上就要落后一大截:能够通过有效的法规政策杜绝严重污染已经是我们做出的很有力的措施了。在这样的情况下,让我们想得更远、 做得更多的环保计划乃至尖端的产品也就无从谈起了。开源软件的问题上也是一样,当易用性差、学习成本高等自由软件的负面标签被贴上之后,似乎就很难被拿下 来。而对于软件开放、信息流通、知识共享等概念完全的不理解或是忽视,实际上造成了对传统商业模式专有软件的顺从。搞得现在一说起使用开源软件的人就是小 撮煽动性群体一样。实际上,所有理解开源理念的人,都围绕着一个共同的“善”来做事情:让大家了解除了专有软件以外我们有更便宜,更好的选择。就是要普及 这个观念,实际上,恰恰是普及这个观念的困难,才是最大的拦路虎。
简短地写上一些由感而发想到的,其实光看标题,这两个主体的关联性更多的是我生拉硬拽上去的,但我觉得至少从意识形态上来说,可以说明一些问题。
明天去参加北京自由软件日的活动。第一次参加这样的活动,很希望能够看到自由软件使用者逐渐壮大的人群,更希望能够和大家进行交流。
参考阅读:
《
关于为什么开源的理念》
走在街上时想到,为什么自己的那些
小程序要开源?那些小程序,本可以自己默默使用的,为什么要开源?
从个人的原因来讲,我想不外乎以下两点:
- 展示,任何通过自己的努力所创造出来的东西,相信每个人都会有展示的愿望。
- 分享,自己创造的好东西,也没有理由不分享给大家。
然而把自己所些的小软件开源,也让我有些莫名其妙的顾虑。它们的代码是不漂亮:变量名、函数名不漂亮;对于OO的不完全甚至可说是很糟糕的理解;甚至对于 所使用的编程语言的应用也比较生疏。这样不漂亮的代码,惭愧地觉得使之开源有些脸红。再者,众多开源项目的最主要的目的是为了团结有技术的程序员,使更多 的智慧可以通过组织,贡献给这个开源软件,使之进化。而不漂亮乃至丑陋的代码,好似天生就把这种进化的可能扼杀掉了。
听起来似乎有些消沉。但,开源从实质上,是有这样的一个终极理由的。那就是,开源是一种精神。或许自己的小程序本身并不能影响什么,但是这些“小程序”们 不也曾经是如今庞大复杂的开源软件的始祖么?即使自己的程序别人用不上、修改也麻烦,但是至少,开源的理念被传播了,人们知道了原来软件还可以是这样免 费、自由的。这就是对私有软件最沉重的打击,这才是(至少)让(计算机)世界变得更美好的一个有效方法。
Sparkle 会在完善些之后开源。
John Carmack 在Quake III发行之前说过:“如果Quake III的销量是我们以前产品最好销量的两倍,我将建立一个持久稳定的网上动作游戏世界。” (自
《永远的雷神》 ,英文原文不可考)
八年之后,当年Quake III的引擎id Tech 3已经是GPL协议之下的开源软件,Quake III游戏本身则是一切其它竞技类FPS的标准。在
QuakeCon 2007上,John公布了Quake Zero,即通过Web Browser启动的、广告赞助的、永久性免费在线Quake III世界。我突然就想到了文章开始的那句话。这个八年的承诺,着实非常有份量。id做的事情,为什么会有那么多人膜拜?因为这些都是非常伟大的事情,不 仅推动了游戏业的发展,而且惠及开源社区、计算机图形科技的进步。业界里,恐怕也只有id有这样的份量吧。
突然想起了大宇,显然现在的大宇已经不是我玩游戏那个时代的大宇了,但还是希望它一切都好。
参考阅读:
New Quake Games and More - About next Quake Games.
Quake Zero Coming to a Web Browser Near You - About Quake Zero
终于基本实现了我一直以来十分需要的,一个可以帮助自己记忆单词的软件。
Sparkle
web端服务使用
Karrigell,数据库使用Karrigell内置的
buzhug数据库

我需要这个工具的原因,是因为我一直以来是一个忠实的
《词汇大爆炸》用户(该软件已经停止开发),自从2004年以来已经累计使用它背了几百个小时的单词,从中获益菲浅。可以说《词汇大爆炸》是使用ubuntu之后,要使用Windows的唯一理由。
我曾经的计划是做一个《词汇大爆炸》的clone,发现自己水平可能比较难做到。在这种类别的开源软件里面,我还没有找到比较像《词汇大爆炸》这样的(惭愧,还没有用过黑客背单词)。后来觉得只要有一个可以基本帮助自己背不熟悉的单词的东西也就可以满足了。于是在开发
tarsusa的同时,这个东西其实已经在着手准备,只是自己一直都没有下定决心一口气做出来。
前一阵想把台式机上面许久不用的Windows重新安装一下,没想到安装过程中CPU过热会导致频繁关机,并且由于安装程序重写了主引导区,我还需要费时恢复GRUB…… 这促成了我和Windows说拜拜并且写完sparkle的原因。具体到架构如何实现、使用什么界面形式这些问题在我脑海中已经构想了许久,所以大约两个晚上就写了出来。
sparkle总体的结构:一个单词数据库记录平时遇到的不认识的单词(我已经积攒了一段时间了),然后像词汇大爆炸那样,依据用户对单词的熟悉程度,随机抽取单词和解释,由用户进行选择形式的做答,用户较熟悉的单词会较少出现,不熟悉的单词会经常出现,以此达到学习的目的。
当然这个程序还远没有《词汇大爆炸》那种规模,没有应用艾宾浩斯记忆曲线原理,也没有针对用户行为的、更细致的词义混淆等等,还只是一个简单的小程序。目前通过web界面来实现,但事实上并不局限于web界面,实际上任何连入网络能够执行Python程序的平台都有可能实现。比如可以执行
Xbox Media Center的破解版Xbox,甚至是Symbian S60 Smartphone。我希望能够有时间、有精力、有技术来实现以上那些功能。
去年的这个时候,也是使用同样的工具完成了自己需要的日程管理软件tarsusa,若问我用最好的语言Python完成这些简单的工具是什么感觉,那只有简单的一个字,爽。
参考阅读:
《tarsusa Release RC》
上次说到自己使用建立的CMS Made Simple建立的一个站点
被黑了,由于之前没有做好充足的应付这种事件的准备,用了近20个小时才恢复。通过这次事件,自己吸取了沉痛的教训,并且在CMS Made Simple建立的站点的安全性方面,也有了一定的了解;现通过自己的经验以及从
CMS Made Simple论坛中学习到的一些东西,整理出几条CMS Made Simple安全技巧:
1. 足够安全的用户名和密码
说来好笑,仔细想来,自己站点被黑,密码过于简单其实是直接原因…… 请大家不要使用username:admin password: domainname 这样的密码,设置这样的密码与直接开放后台给公众是一样的。
尽量不要把管理员的用户名称设置为Admin;六位数的密码被证实安全性已经不像原来那样高了,替换成八位数以上的吧。
2. 在Config.php中更改Admin目录
绝大多数由CMS Made Simple建立的网站,在其URL后面加上/admin都会出现未经修改过的CMS Made Simple Login画面,如果存在较严重的漏洞或者遇到好奇心极强的破坏者,岂不是相当于“Welcome to Hack into it!”。我们可以通过修改在config.php里面的
#Name of the admin directory
$config['admin_dir'] = 'admin';
这一项,将admin换成你设想的富有想象力的组合吧,同时也不要忘了把admin/目录改成相应的名字。这样,你至少又给蓄意破坏者增加了一道障碍。
3. 定期、及时备份数据库
这一条看似多余但是绝对值得再三强调。天有不测风云,谁又能预知网站将要出什么问题呢?主机停机、非法入侵、文件丢失、数据库损坏、域名无法解析、GFW 都不是不可能发生的事,手头有份备份总要踏实许多。否则,就象曾经幼稚的我那样疯狂使用Google Cache吧……
备份CMS Made Simple的网站还是非常方便的,只消备份该Installation中使用的那个数据表就可以了,模板、内容、模块设置等信息均包含在里面。CMS Made Simple可选装的模块里也有用于备份数据的模块,可以分别备份不同类型的数据。另外很多数据如模板、模块等也是可以导出成为XML文件的,总的来说, 备份并不麻烦。
使用软件或后台备份数据库均可,我在使用mysqldumper,很好用,就是在加密上有一点点小问题。最后,不要忘了把数据在本地再备份一份。
4. 及时将CMS Made Simple更新到最新的版本
在写这篇文章的时候,CMS Made Simple的最新版本为1.1。在1.0.x的版本阶段,虽然不断有漏洞发现,但是开发团队都以极快的速度推出新版本以填补漏洞。之后的版本据称安全性 有了很大提升,建议大家都更新到最新版本。需要注意的是,在更新版本之前,请备份数据!因为很可能会有一些模块不兼容的问题导致一些功能不能正常工作。
News模块不工作的情况较为常见,解决方法也很奇怪,在模块管理中将其卸载然后再装上,一次或反复几次就可解决问题。供遇到这样问题的朋友参考。
5. 文件/目录权限777 or 775 or else 的争论
在论坛上,有的人认为在安装时需要对
- tmp/templates_c
- tmp/cache
- uploads
- uploads/images
- modules
这几个目录设置777权限以安装提出了质疑。认为这可能带来潜在的安全隐患,并建议大家将其设置为775
原帖 -
Security impacts of chmod 777 我认为最终kermit给出的答案还是比较合理的,即:安装程序的确需要这几个目录的权限为777,但是出于安全考虑,可将这些目录中的文件权限设置为666,并且把config.php的权限也设置成为666。
虽然可能这个并不构成问题,但是权限问题的确可能会构成很大的隐患,不可小视。
以上给出了一些CMS Made Simple安全方面简单的一些技巧。文章的内容十分初级,毕竟我也只是个这方面的新手。但是我认为这些问题都不可小视,毕竟这些都是前车之鉴。如果您认为有需要补充或不对的地方,欢迎来信告诉我。
相关阅读:
优秀的轻量级内容管理系统: CMS Made Simple - 一篇关于CMS Made Simple的很好的介绍 《CMS Made Simple的几点技巧》 - 在使用CMS Made Simple架设站点的过程中,可以应用的一些技巧
更新的延缓是因为考试的原因,请大家见谅。平日学习不刻苦,又想尽可能得在考试中取得比较好的成绩,只好——使这段时间的学习变成一件非常 intensive的事情。脑子里塞满了各式各样的东西,又唯恐塞得不够,夹杂着英语、法语、中文…… 即使考完也要怀着忐忑不安的心情等待成绩,活脱脱一个hell。
所谓不容易,则是一个广泛的人群都在面临的处境。网络上谈论大学的论调很多,像我都说过其缺乏思想及精神等。但不得不承认,在大学里顺着我们认为的世俗的 游戏规则走出来的青年人,至少已经完成了一件比较不一般的事情。修百余个学分的不同课程,应付考试,即有其令人难以忍受的无聊和琐碎,而细微的复杂或许也 难以令人察觉。这里的游戏规则就是our way or high way,过于叛逆的下场只有走人。所以对于这个主题,似乎用什么词都无法概括全面。各位看官们不妨了解到大学生确实也有很多不容易的地方就是了,尽管他们 自身也有更多让人可以诟病的东西。
属于我的考完的轻松也成为了空气。回到家就发现自己一个网站的CMS被黑掉了,而原因是因为自己密码设置的太弱智…… 原以为一个近乎无名的小站不会遭什么大动荡,现在看来我错了。数据可能损坏很多,而上传的新系统还安装不上,还要尽快修复否则就会面对客户的责问,真是不 容易。
CMS Made Simple的用户请注意,已经出现很多开始攻击CMSMS站点的无聊人士,请注意备份数据库,加固自己的密码,检查文件权限,必要时甚至可以修改admin目录名,来防止一切潜在的危险。
本以为下个学期开始,为了毕业选修的十数门课以及数学才是我真正的nightmare,现在看来,我的nightmare早已经开始了,从现在开始,直到2008年。