2010年09月07日 09:16
好久没扯淡了。扯两句。
前几天在猛禽的推荐下,看了看web.py这个微型web框架。并用了大半天的时间写了一个简单的小应用。
还不错。
由此想到了一些不相干的问题。
首先想到的当然是我们的一个私有项目。这个项目折腾了好几年,最终勉强上线。但是大家都已经被折腾得没了激情。上线在我看来,也是象征意义大于实际意义了。
在这个项目的开发过程中,我解决了很多问题,收获算是不小。但是现在想想,解决的问题中,真正属于业务处理的有多少呢?很少很少。大部分问题都集中在框架层别。比如如何实现优雅的用户认证机制,等等。
我们的项目功能算不上复杂,也就是一个blog的水平。为什么这么简单的东西会拖上如此之久呢?原因很多,大多不足与外人道。但是我也认为有一个比较重要的原因,就是产品迟迟处于开发期,得不到发布。
记得曾经看过一本书,《梦断代码》,里面一帮比我们牛的多的牛人,拥有比我们好的多的环境,资金,氛围,合力开发一个项目,仍然失败了。于是我们看到了一本相当优秀的总结书(笑)。那个产品也有一个大问题,就是优秀的想法非常多,但是都无法进入最终产品——因为最终产品迟迟得不到发布。
每一个有点理想和追求的程序员都会有一个梦想,希望自己的代码能简洁优雅,希望自己的程序架构清晰流畅,能经典到流芳百世。
但是再经典的代码得不到实践的检验,也是白搭。你永远也不会知道用户会以怎样BT的方法使用你的程序,也永远不会知道你的代码究竟有多抗压,甚至也许有很多隐藏至深的bug,不在特殊的应用环境中也不会暴露。
更别提你的程序也许根本不符合用户的需要,或者用户会有更多要求……
另外,很重要的一点是,能给程序员带来最终成就感的,我认为并不是代码本身,而是代码运行的结果。每个人都希望自己的作品广为人知,而不仅仅是孤芳自赏。
所以,尽早的把想法实现,非常重要。
像web.py这样的小框架,就可以让你用quick and dirty的手法尽快的实现一个小东西。当然它欠缺的东西很多,但是都可以用quick and dirty的方式人肉实现。
有了成品再进行改进,就会有目的的多了。
但是quick and dirty并不是解决问题的金钥匙。就像无数软件工程指南中指出的那样,dirty不断累积,最后就会造成整个系统的崩溃和无法维护。
所以,尽早拿出成品,这只是一个开始。真正的关键在于你是不是有恒心有毅力去持续维护和改进它
并且保持整体结构不会变得更加糟糕。
有必要的时候,推翻重写。
这才是真正的问题。
2010年09月04日 21:21
继续尝试简明扼要的风格。
今天拿出久违的单反拍了一堆照片,等到晚上准备导电脑时发现杯具了。
我那只恐龙化石级的CF卡读卡器被两个儿子玩得不成器形了都,两排针脚完全扭曲成了麻花。尝试拨乱反正未果。
于是尝试把USB插到相机上。但是很显然相机没有被挂载为U盘。用lsusb发现设备被正确识别成了佳能350D,心中略安。
网上一顿狂找,发现一个gphoto2的工具可以直接支持相机操作,遂安装之。
结果发现……很杯具。不能用。
正在决定放弃之时又看到一篇资料说gphoto2仅支持相机的PTP模式。虾米鬼PTP模式?不过想想应该在设置里,去相机菜单里找了一下,果然有一个数据传输设置,可以设置成“打印/PTP”,设置之后,重新尝试……。OK了。
简单记录一下操作步骤:
设置相机的数据传输设置模式为PTP
用USB连接到电脑
打开相机
在电脑(Linux操作系统)上执行 gphoto2 --auto-detect,如果连接正确会看到相机被列出。
然后执行 gphoto2 -L 查找相机中的照片。注意一下照片前面有序号,下面会用到。
最后执行 gphoto2 -p <序号范围> 导出需要的照片。比如我要导出相机中全部的照片,在上一步中发现最后一张是 #176,则执行命令 gphoto2 -p 1-176,这个命令会把指定的照片导入到电脑的当前目录。
然后……该怎么办就怎么办吧。
不过我觉得我还是要去买只新的读卡器,这种导法麻烦不说,速度也慢了很多。
2010年09月01日 14:20
觉得以前遇到问题,总会洋洋洒洒写上一堆。我写得累你也看得累。所以这次我尽量简明扼要。
背景:
我的系统是用wubi安装的Ubuntu 10.04,Windows和Ubuntu双系统。
问题的产生:
看到一个grub美化的帖子,一时手痒,安装了,使用了,并且没有注意到它的错误提示。安装完之后启动,发现不是平时看到的Windows NTLDR,而是grub引导界面,并且是出错直接进入了rescue模式。
杯具了……
问题的分析:
因为使用wubi安装,Linux分区实际上被安装在/host/ubuntu/disks/root.disk,它所在的分区会在启动时由wubi引导程序挂载成/host,grub引导程序实际是安装在这个host(/host/ubuntu/disks/boot)上,而非mbr。因此在wubi引导之前,ubuntu的分区实际并不存在,如果将grub直接装到mbr,就无法引导ubuntu了。
另外一方面,可能是因为虚拟硬盘的存在,自动安装的mbr并没有正确识别出windows的引导程序,于是装好的grub也不能正确引导启动windows。
两者都不行,于是整个就杯具了。
问题的解决:
其实我们的目标就是要修复mbr,恢复成windows的那个版本。
而目前我的手头没有windows启动盘或修复盘。只有一张Ubuntu 10.04的安装盘。
杯具中的杯具。
还好Ubuntu 10.04可以当作LiveCD来用。
进入liveCD(试用)模式,然后配好网络。然后,上网找资料。
(此处省略过程1万字……)
经过几次失败尝试之后,找到了一个很容易的解决方法:
sudo apt-get install lilo (安装lilo,好古老的东东)
忽略一切错误提示
sudo lilo -M /dev/sda mbr
重启。
搞定。
-----------------------------
我真是一个善于修电脑的……好人呀。
各种求……我要变坏人……