Archive for 十一月, 2007

搬家了,用上了slicehost

又搬家了,这次终于搬到了自己的vps上,应该会稳定很长一段时间。现在用的是slicehost的vps,这是一家米国的专做vps hosting的startup,和无数其他web hosting公司相比,slicehost相当有个性,只要看看他们的主页就会喜欢上了,有哪些空间供应商是有自己的blog甚至twitter的?喜欢slicehost的肯定也不止我一个,注册都排队等了好久。

顺便广告一下,如果你也对slicehost感兴趣可以用我的帐号作为推荐人去注册

当然,vps上只放一个个人blog显然太浪费了,请关注feedlr开发blog

LinkStation改装攻略备忘 补充

今天拿了台新换的linkstation回来,很快又改会原来的状态了。上次写的备忘有些需要补充的地方。

  1. 这次试验了ls2直接连电脑后,在电脑和ls2的c网段不同的情况下刷机。结果是firmware刷新失败!不过不用怕,firmware刷新失败后ls2会进入工程模式(Engineer Mode, EM)。这时候ip会回到默认的192.168.11.150,firmware刷新工具仍旧能搜索到ls2。把电脑设置到和ls2相同c网段,重新刷一次就行了。
  2. 建议在第一次e2fsck检查完Debian分区,重启进系统之后,执行tune2fs -i 0 -c 0 /dev/hda1,禁止系统启动时自动检查硬盘,从而避免出现检测超时无法开机的麻烦情况。
  3. 快速改机档的默认ip直接修改/mnt/hda/etc/network/interfaces,这样就不用重启进入Debian再接上电脑改了

Interface First:为什么我们学到的一切都是错的

ok,我承认有点标题党了,不过这并不妨碍讨论这个有趣的话题。

我在读Getting Real的时候,发觉其中一些观点和我在刚开始计算机学业时候的那些“错误”观点出奇的一致。Interface First就是一个典型。

我从小喜欢涂涂画画,梦想做一个设计师。对于软件,我也认为一个出色的界面是非常重要的。其实对于任何东西,我都觉得,如果能做的漂亮,为什么不呢?人的本性不就是喜欢美好的事物吗?所以,对于我自己作出来的东西,我都喜欢先把界面设计好,设计到自己觉得满意,很漂亮,才好意思拿出去给别人用。不然一个丑巴巴的东西,自己看见都不喜欢,何况给被人用呢?特别是以前做Flash的时候,游戏也好,片头也好,小小的动态菜单也好,总是喜欢费尽心思的作出最漂亮的界面。

然后我意识到,我的习惯对于一个程序员来说太“反常”了。身边的老师同学,基本都对漂亮的界面不屑一顾。“先把逻辑实现了,界面到最后随便做做就行了”没错,软件最根本的不就是功能吗?界面不过是一件随便换的衣服罢了。

好的程序员,基本都有非常糟糕的审美。牛人写出的软件,经常都有常人无法理解的界面设计,搭配上只有色盲才能欣赏的色彩。我们认为,这样才是真正值得崇拜的大牛!

明白了这点以后,我努力克服喜欢从界面开始构思一个软件的习惯,一切从逻辑开始!需要实现的use case是哪些,如何实现它们,怎么做到效率最优,等等。我们为我们程序员写出的丑陋界面感到骄傲,我们提供的是强大的功能!界面?对不起,我们忙着研究算法,没时间考虑这种肤浅的事情!

当软件开发成了我的职业以后,我一度感到非常幸运,幸好当时改正了不好的习惯。在企业软件的开发团队里,根本没人关心用户看到的界面怎么样才最好!任何一个软件,都从功能需求开始,根本没人会提出需要什么样的界面。lab的唯一的2个美工(我很讨厌中文对artist的这个称呼)都坐在办公室的一角,一年也不会和我们开发团队说上几句话。

但是,我错了,我们学到的,一直认为是对的事情,都错了!很显然,设想你自己就是用户,面对一个简单易用的软件,另外是一个强大复杂但无法上手的东西,你更喜欢哪个?

问题是,企业软件的购买者根本不是软件的使用者;而使用者通常又是没有能力影响购买决策的。

所以,这些造成了企业软件的一个畸形问题,usability成了难以攻克的障碍。有些产品确实可以宣称市场占有非常大,功能应有尽有。但是不可回避的事实是这些产品用起来无一例外都非常烂。在这点上,M$作为从消费市场起步的公司,确实做的很好。而传统只作企业市场的公司,拿出来的产品基本都是用起来及其不爽,最终用户抱怨不断的。

Getting Real的这一篇短短的文章解释的很清楚。只有看到自己的软件长得什么样,才能不断的完善它,不光从界面上,功能上同样如此。

看到这里我很高兴,我根本不必克制和掩饰自己的本来想法。软件作出来和任何其他产品一样,都是给人用的。与其做一个丑陋的东西,为什么不费劲心思做一个美好的呢?

最后,我并不赞成走另外一个极端,只追求华丽的外观而没有实质有用的功能。这方面的反面例子我最喜欢用金山词霸,建议用一下就知道一个实用的软件是怎么做到华而不实的。

我赞同的是能帮助用户在解决问题同时得到愉快体验的设计,解决问题当然还是根本,不然还是本末倒置的。

LinkStation改装攻略备忘 svn + 动态域名

有2周多没有更新blog了吧,最近在折腾不少事情,升级了台式机,hack了新买的linkstation HD-H120LAN(以下简称ls2),想打造一个高效的soho环境。工欲善其事必先利其器嘛,好的环境和工具是非常必要的。

Linkstation的改装基本按照计划,初步完工以后这个白色的小家伙跑着Debian连续工作了两个礼拜,120G硬盘塞满了90%,这周三突然挂了,为了不破保不敢拆机,于是今天去送修,基本要换个新的了。虽然除了意外,但是linkstation的改装真的是非常值得做的,改装以后非常超值。为了拿到新机以后再改一次,还是把本次改装经过记录下来备忘吧。

国外玩家对linkstation的改装已经很有造诣了,改装社区2年多前就很热了,所以其实现在对linkstation的改装资源已经很成熟了。我的改装过程基本参照这里这里的两篇文章,用了文章里的Debian快速改装包,装完Debian以后常用的工具都已经预装好了,包括torrentflux, mldonkey, samba, lamp, phpmysqladmin。具体过程参照文章就行了,但是有几点要注意。

  1. 关于第三方改装firmware的说明两篇文章都没有交代清楚,刚接触linkstation改装的同学可能会有点晕。linkstation改装的资料在http://www.nas-central.org都有完整说明。最常用的第三方firmware是openlinkfreelink,两者的区别是openlink只是在原厂firmware基础上打开了telnet,其他原厂功能不变,而freelink是直接把原厂linux替换成了Debian。其实也可以直接按照nascentral上面的攻略来改,但上面两篇文章里改法的好处是用了openlink以后在hda3上装Debian,和原厂linux互不影响,可以随时切换,所以是个合理的选择。
  2. 把ls2直接连到电脑以后,电脑不必修改ip到192.168.11网段firmware刷新工具也能搜到ls2。但是我刷的时候为了保险还是把电脑改到11网段了。也许不用改网段也能刷。
  3. 刷完openlink改装版firmware以后,ls2预设的静态ip就是192.168.11.150。因为我用的linksys wireless-b路由只允许192.168.1网段,改完以后不能直接接上路由,不然ls2是拿不到ip的。必须还是连在电脑上的时候把静态ip改掉。由于openlink只是相当于在原厂firmware基础上把原厂linux的telnet打开,所以刷完以后ls2的使用和原来的一摸一样。可以通过http访问192.168.11.150进原厂管理界面直接改掉ip到192.168.1网段,再接到路由上面就行了。
  4. 以下这步非常重要!上面两篇文章里都没有突出这一步的重要性!我的ls2就是因为reboot之前忘了做这一步出问题的!
    强烈建议在每次reboot进debian之前,执行下面操作检查硬盘,防止重启以后因为硬盘检查超时导致无法进入系统的问题!

    umount /dev/hda3
    e2fsck /dev/hda3
  5. 装完Debian以后第一次启动默认静态ip还是192.168.11.150,所以我需要把ls2再接到电脑上改静态ip到192.168.1网段。
  6. 推荐使用下面的Debian源,不推荐第二篇文章里的netselect-apt,至少在我的情况下netselect-apt自动找的源很慢,还会造成deb包的混乱,最后还得用apt-get -f install来整理。
    deb http://mirror.pacific.net.au/debian/ etch main contrib
    deb-src http://mirror.pacific.net.au/debian/ etch main contrib
    deb http://security.debian.org/ testing/updates main
  7. Debian基本都搞舒服了以后就可以根据自己需要装更多软件了。我装了subversion,把ls2用作home lan上的svn server,用下来速度也很不错,推荐一下。apt-get install subversion就行了。顺便说一下我感觉ls2上用svnserve就行了,没必要用apache配webdav,毕竟不是pc还是要节约一下计算资源。
  8. 动态域名问题。之前是打算装花生壳linux版的,后来才发现在ls2的Debian上运行不了,而且没有提供源码,所以就没戏了。后来用的是3322.org,使用非常简单,不需要客户端,只要用lynx定时ping一下3322的web service url就行了。ls2的Debian默认没有lynx,需要apt-get install lynx一下。把下面的命令存为3322org.sh
    lynx -mime_header -auth=user:pass "http://www.3322.org/dyndns/update?system=dyndns&hostname=myhost.3322.org"

    然后chmod +x 3322org.sh,再写个cron job定时执行这条命令:

    crontab -e

    加上这条cron job,每隔5分钟执行一下3322org.sh并把输出保存到3322.org

    */5 * * * * /home/user/3322org.sh >>/home/user/3322.log

    为了防止log文件无限暴涨,可以再加上这条cron job,每天0点删除log

    0 0 * * * rm /home/user/3322org.log

    完了以后别忘了在路由上设好端口映射,之后就可以用动态域名访问ls2上的所有服务了!

搞定!我的完美ls2 server就这样基本完成了!两个星期来已经用torrentflux消耗了无数带宽,还动不动很bt的用手机访问tf。。。等机器拿回来再搞一遍吧。。。