Saturday, December 4, 2010

本博客暂停更新

当前比较忙,这里也没啥值得特书的功能,所以暂停更新吧。 新博客地址

Monday, October 18, 2010

终于用上2.2的android系统啦

昨天看到GOT的博客说放出了2.2.1,非常激动啊,虽然我自己用OR装了 frozen eclair 项目提供的v7版 JIT 的 DVM 也挺爽的……刷机过程省略,唯一要说的是 RSD lite 这个东西实在是土鳖,最新的4.8仍旧不能很好的支持win 7,需要先打hiapk的那个补丁才能认出SPF文件。

我没有用 GOT 的主题,但是使用了GOT的fix,于是launcher就被 “fix” 成了launcher pro。我后来尝试装了Root explorer后直接热替换 launcher.apk成原来的ROM自带桌面(在GOT/backup里),结果搞得进不去桌面了,窘,wipe data/factory reset才弄回来。

系统没有自带的文件管理器,所以最初是最不爽的阶段。我用 adb install RootExplorer.apk 的方式从电脑把RE塞进去了……系统不会自动设置移动动感的APN,所以需要动手输入。系统中的/system/app/Stk.apk不能删掉,删掉后用动感的卡只能紧急呼叫,窘。GOT OR可以root,还是很方便的。没有挂在ext2分区式的app2sd可用,也许GOT还没搞定编译内核模组(ext2.ko);不过我疑心编译个 2.6.32 arm generic的内核弄出来ext2.ko就行,如果过两天没人搞我就自己试试……

英文系统用着还算可以,我win和linux也一直英文系统这下在手机上终于全英文化了……(以前用中文local主要是因为联系人排序,现在2.2自己就能在英文local下拼音序排好中文联系人了) 不过还是有点怀念国行的那个拨号,能够各种方式按照拼音查找,而欧版的ROM只能按照每个字的拼音首字母搜索,联系人反正还没多到这样也搜不过来,忍……)

这个系统至今还是蛮稳定的,没有崩溃情况(被我蛮干换launcher时除外,嗯,这事不怪它) 以前用plus 9 + frozen eclair v7 JIT 的时候玩 robo defence 有时候会崩溃,在这个ROM上还没有(我玩了一上午了……浪费声明第一游戏阿,真上瘾)

我唯一发现不能继续用的软件是SwiFTP server,无法访问 /sdcard,不知道是系统还是软件的问题。Gmail 有了个很好的小变化,就是标签有和Gmail web中看到的一样的颜色了,很好。短信工具不显示我的Gmail头像,不晓得啥问题……Gtalk中显示我手动备份(就是在terminal里用tar起来)的 taskOS 的db弄回来不能用,taskos崩溃,只好重新输入待办事项。

其他,谁知道怎么能让它解锁屏幕的时候不要震动?

Monday, October 11, 2010

A week with Moto Milestone

用了几天 Milestone 也总结说感受吧:第一印象是屏幕号靓丽啊,觉得比n1的oled更锐利嘛。不过这只华丽的屏幕也确实有点费电,这些天观察下来它通常都是排在电能消耗第一位的……

ROM 用了 plus9 final,我对于刷 rom 没有爱,我更喜欢直接连上 adb shell登录进去折腾,反正有了 root 权限,需要通过刷 rom 实现的事情就少了很多。

第一件做的事情是 app2sd,通过 OpenRecovery 做的,原理很简单,就是劫持了启动的时候的 mot_boot_mode ,把它替换成一个脚本,在脚本里执行它并干点别的事情。通过附加的脚本,把 ext2 文件系统内核模块加载到内核中,然后 mount TF卡上的分区,并通过 mount -o bind 来附属在 /data/app 上面。btw,OpenRecovery 是个好东西,尤其是可以直接打开 console 的版本。事先写好脚本放在 OpenRecovery/scripts/ 里 ,执行完了可以通过 console 看看是不是没问题,有效防止哭哭的局面。

说到 console, 就不得不说到 milestone 的全键盘的缺点了,没有 pipe 键(|),所以执行命令比较受限,需要反复用到临时文件,比较不爽。另外因为没有 esc 键,busybox 里的 vi 编辑器也不敢用,因为怕退不出来,囧。我在网上发现可以把电脑的全键盘链接到 milestone上(via http://www.tombom.co.uk/blog/?p=124)但是还没时间DIY那个启动器。

我还吧 plus9 的 DVM 换成了 Frozen Eclair 项目的 v7 版 DVM (http://forum.samdroid.net/f55/s),不过性能变化微弱,linpack 提升只有 0.2 MPFlops(无超频 6.85)

一些觉得好用的应用:

android terminal 在装了 bash 和 busybox 后很好用,而且方向键可以回顾命令历史,better terminal pro 反而不能很好的支持 milestone 的方向键……

地图换成了 Hiapk 上找到的谷歌地图 4.5.1, 不用开启偏移修正定位的结果就是好的,开了反而不对。另外在 gfan 找到了 milestone 也能用的途语,地图很新也很详细;没车就不知道导航好不好使、电子测速狗标的全不全了……

quick settings 很好用,比起七键我更喜欢,因为在别的软件里也可以从通知栏呼出它。不过 网络数据 开关不是很好用,每次开机都是默认开启。APN 倒是表现很稳定。

Taskos 是个不错的待办事项工具,虽然暂时还不能网络同步,但是语音添加事项很便捷。

SwiFTP 我也很喜欢,从电脑里传点小东西到手机就不用插线什么的了。不过当我尝试把一个 1G 的视频文件传进去的时候 win7 琢磨了一阵子告诉我需要 18 天……

diviClock 是个很可爱的 widget,而且可以直接从它进入闹钟和日历。缺点是横竖屏切换的时候有一定概率它会渲染的不对,准备有空给作者反馈一下。

未完待续,哈哈哈

Saturday, September 18, 2010

一个CUE文件都这么折腾……

今天从JShare哪里顺来了一张不知来源的TAK,听起来还不错,可惜cue文件是乱码……

当然编码这种问题是难不住我这种职业化的折腾家的,呵呵。

  1. 拖进Opera浏览器,选择自动识别编码,然后认出来是日文。
  2. 逐个尝试日文编码,发现是Shift-JIS编码
  3. 用 iconv 转换为 UTF-8 编码: iconv -f SJIS -t UTF-8 old.cue > new.cue
  4. 本来这就好了,可惜 foobar2000 太笨,没有 BOM (又称 UTF signature) 认不出来 UTF-8;于是用 emeditor 打开,另存为带有 BOM 的文件。

然后拖进 foobar2000 就能正确的认出来了 =)

难怪 iTunes 那么有市场,花点钱省出时间享受生活多好啊

接手烂摊子最讨厌了

一堆半成品,食之无味弃之可惜。一个项目后面的路好不好走太依赖最初的出发点了,从一个烂架构出发,只能越堆越补越恶心……

这个世界上之所以有那么多新兴“轻量级”产品,就是因为一直维护老产品是不可能完成的任务,看看塞班就知道了。微软在Vista的兼容性上挨了很多骂,在IE 9相对之前IE的兼容性上即将挨骂,Window Phone 7果断的抛弃了WM的所有软件也会挨骂;惹如此多用户不高兴却是这个巨人想活下去的必然选择。

要做出这样壮士断腕的抉择,既需要技术上对现况和目标的深入理解,也需要性格上的果敢啊。管理开发比写code有挑战多了……如果再管上一群不靠谱的coder……嗯嗯,果然这个够有趣值得努力。

绅士与暴君

大家都觉得 Google 挺绅士的,态度总是很开发,欢迎大家来掺和;
大家都觉得 Apple 是个暴君,这个不行,那个得滚蛋。

所以现在那么多 android 电话还是那么糟糕,今天一个 Ophone,明天又来了 乐Phone,后天还有 Uphone,没完没了;别说系统改得乱七八糟,屏幕尺寸更是五花八门。所以如果想要写几个小 app 赚零花还是去找 iPhone 吧。打个比喻就是 Google 提供了免费的大房子,结果一群流氓把它占去了搞成了黑监狱。

微软前些年有些晕头晕脑,经常错过好事情,不过最近貌似比较清醒。看看 Windows Phone 7,屏幕分辨率、按键数目都是定死的。用 WP7 项目经理的话说,从前我们提供平台然后放手不管,现在我们要自己来提供“微软标准的用户体验”了。 

android 要想好好发展下去,首先得“安内”——把 htc sense, moto blur,ophone, OMS 等统统掐死,所有 android 厂商必须签约保证系统随 google 升级,所有手机必须能连接且只能连接一个统一的 app market。只有这样才能保证用户体验一致,才能让应用市场繁荣,才能让系统长存。

不想当“暴君”的企业做不出好产品。

Monday, August 23, 2010

观察

会想到这些,主要是因为受邀混迹某创业类网络公司,兼职赚零花。既然初创公司,自然有很多可能性,不过我不是一个喜欢经常换状态的人,所以喜欢(自认为正确的)做长期估计,以便不善规划的我不至于哪天倒霉。

明天的网络业,传奇将会越来越少;就行今天的软件业,不会再有盖茨。

看起来很没道理的一个推断吧?facebook, twitter, foursqure不是还在一个接一个的冒出来么?分明有一个做站点好主意就能一夜成就奇迹嘛。可是仔细想想为什么创意如此容易成功?

  1. 技术门槛低:写一个mootools这样优雅强大的js framework不容易,不过看着教学视频拿开源代码弄个网站文科大专生一周都可以做到唉;
  2. 廉价的实现方式:租台服务器,几个人写程序,没多少钱啦;
  3. 广泛的受众:每个有浏览器的人都能成为你的客户的!

so,无懈可击的草根平台?

可是,有个问题……你怎么赚钱?
“放广告啦,把Google/Baidu/BlahBlah给我的广告代码往页面一帖就可以数钱咯^_^”
这么容易的幸福啊,那么你觉得花里胡哨的banner支撑的web还能活多久?
“咩? ”

好吧,大家想一想,你上次点击(误点中不算)网页上的广告是什么时候?随着计算机融入生活的年龄越来越早,大家的广告抵抗力也越来越强,几乎每个人在熟悉的站点都能做到目光习惯性的跳过广告栏了吧?点广告的小白越来越难找了,web在画出一个又一个大饼破了一个个泡泡之后仍旧面临着几十年没搞定的问题——咋赚钱?

我认为未来的web的钱,会主要来自用户数据。而要掌握用户数据,需要一个平台,一个排他的平台。facebook可以被Google检索么?当然不行啦,我干了什么不想让全世界知道,好友知道就够了。renren让Baidu随便爬么?门都没有。有了自家地盘才好收割数据。

数据变成钱的方式很多。有哪个公司不想知道当人们提到自己公司的产品时常和哪些词,哪些对手的产品比较?如果你和别人在QQ聊起不知道买什么手机好的时候上面冒出来一个LePhone的广告想不想去看下?当我在amazon看到一本书的时候它“好心的”告诉我其他人也买了另一本书的时候,我甚至不会觉得这是个广告!但是BI是个低技术门槛的事情么?我雇中专生来写一个Amazon式的推荐功能能成么?

Jobs说flash再见吧,于是iXxx上的flash都危险了;如果明天Gmail说它只能用在一个叫做 chromeXgmail 的玩意儿里,恐怕我骂过Google之后还是得装一个。连自从埋葬了网景之后就忘了还有个叫做web的东西的微软都回来认真搞IE了,silverlight的更新速度也说明这个巨人重归战场的决心。平台战争的阴云再次渐浓,如果不是广泛的手机平台的优势opera恐怕早已作古……而各大巨头在web基础上构建的私家API则是另一种形式的平台。一旦平台再次分裂,成本就再也不便宜了,用户也不广泛了,小公司就又得苟延了。

环境能基本稳定,不是什么历史必然,只是这些巨头们均势而已。但是均势很难永久,一旦结束热闹就又来了。就像冷战完了,巴尔干却干起来了,连朝鲜挨打也称迟早的事了。苹果坐拥数不完的公司市值五分之一的美刀,携iTouch/iPhone/iPad(以及说不定那天上市的iTable什么的)之势,生生赶走flash肯定只是一个开始。

传奇的时代不久将结束。

================================

PS:我在“大问题”上总是偏悲观的,相信中美早晚会发生军事冲突,欧洲迟早被东欧和穆斯林问题拖入泥潭,奥巴马的当选支持率让我觉得美版希特勒也不是不可能……然而我在“小问题”一直是(盲目)乐观的,觉得我们这一代的某些IT人(最好包括我)能赶上这最后的浪潮。

btw,咱是有中国特色的,如果大家抱着“就是好”的盗版xp和IE6在高高的网络长城里一直用到2050年去,任他国际巨头打得不可开交,国内技术环境保持高度稳定,群众纷纷表示影响不大……

Wednesday, August 11, 2010

web标准与国际政治何其相似

今天下午折腾了半天才靠到处搜索生生写出了一个能够在主流浏览器里滑动展开并自动收起的侧边连菜单……这效率,要死人的。对所有努力写过网页或者以后要写网页的同志们表示深切的同情,浏览器之间不一样的东西太多了,各自一套,标准委员会的作用还不如核不过扩散公约有用……

btw,感觉淘宝的Kissy库做的不错,不大,但是需要有的东西差不多都有了。虽然我没深入了解过js库,但是觉得整体上还是不错的。而IE6/IE8/Safari/Firefox的A级主流支持也让在国内环境中使用比较放心。国内鲜有高质量开源项目,所以更要赞淘宝。

上面说到国际公约,就要提到苗师兄在校内提到的《理解国际冲突——理论与历史》一本书,我找到了(第五版网上有下载,目前似乎出了第七版吧)读了之后感觉是本很不错;而且它不是一本厚砖头。(A big plus, 'cause I've almost never finished thick books...)

某种意义上在国际技术标准的制定上,也是出于一种类似于国际关系一样的状态。大公司驱动,小公司追随(当然也有起义的时候),没有外部统一的强制力约束。微软的IE实现其实很好用,但是不敌Apple/Mozilla/Opera人数众多成不了标准。反过来微软就是不做的事情,谁也别想弄成,因为它的市场份额最大。padding是不是放在height里面,从父节点到子节点是否对应鼠标事件,其实不是什么技术问题;是钱的问题。但是完全没有标准,开发者就没法工作了,这些公司也赚不到钱了。从这个角度看,web标准不会到来,就像世界大同无比遥远。

Monday, August 9, 2010

关于显卡热切换

前段时间我说我变微软粉丝了,起因就是我发现Windows Vista/7是唯二支持显卡热切换的操作系统。Mac OS现在不行,Linux更不行。

Linux的一个好处在于开发速度还是蛮快的,不过今天去freedesktop翻了翻邮件列表,对于显卡热切换就彻底绝望了,在我这台笔记本退役之前大概是看不到了……

本来我觉得这个可能是个驱动级别的问题,只要慢慢等还是有可能的,毕竟AMD/ATI最近在Linux驱动这块表现不错,可是当我认识到这需要X Session迁移的时候我就知道没戏了……

  • Linux开发者需要AMD和intel提供文档才知道如何关闭显卡;
  • X Server需要向用户程序隐藏大量的物理细节才能实现迁移;
  • 用户程序需要适应新的X server接口。

综上,就是整个的图形stack需要大兴土木……而对Linux社区稍有了解的人都应该知道这基本是不可能的。

顺便说一下,今天才知道原来XP也是不可以显卡热切换的,因为XPDM驱动模型的限制,只有WDDM的vista和7才可以;嗯vista生早得不是时候啊,两年前哪来能切换显卡的笔记本啊,那时双显卡可是只有Sony家Z千金才有的……


http://lists.freedesktop.org/archives/xorg/2009-January/042543.html

Sunday, August 1, 2010

微软还是很不错的

近我开始变成微软的粉丝了。

似乎微软在很多时候都是geek们鄙视的对象,貌似它和某讯一样“鲜有创新”。我最近却开始大幅倒向微软(实现完全微软产品正版化,还买了个微软的鼠标……)了,因为微软正在展现很多让人喜爱的特性:

实用。对于有双显卡的笔记本,微软的系统支持可以方便的热切换。于是我可以平时使用省电的集成显卡,而只有游戏或者作图的时候才换到功耗彪悍许多的HD5650。而至今Linux社区似乎还没有一个靠谱的方案……虽然最新的内核已经支持切换了,但是其实是让两显卡都处于运行状态的,对于省电来说一点意义都没有……而且切换还需要重启桌面环境,这是我最不愿意干的事情,我的电脑常常一连几周都是休眠而不关机的。同时似乎Mac OS也并没有比Linux有更好的易用性,一样是需要退出登录重新进入的。

独创。Windows phone 7的UI是一个激动人心的设计,简洁美观,让我爱得要死。这个新UI风格真的很大胆,看惯了苹果的写实风格或是机器人浓色重彩图标的人多会一开始觉得有些单调。不知道大家见过Ubuntu等系统的黑色主题过没有,第一眼看上去相当的酷,可是这种黑色的主题用久了让人十分压抑。设计应该是实用的。当你第一百次掏出手机的时候,你肯定不会再在乎图标的花花绿绿了,你只希望最快的找到功能。这时候这种双色的,类似地铁/机场指示牌的图标的强大的易用性就会显现出来。

Monday, July 19, 2010

介绍一下我新入不久的小本

大名Acer Aspire 3820tg-545G32Nss,基本情况是 intel i5, 4G DDR1333(自加2G), AMD HD5650。

做工很不错的,反正比我的老acer travlemate强。主要设计缺点就是键盘和屏幕周围的框是指纹收集器……不过暗灰色的A面和C面比黑色的抗指纹多了。随机的有线电源真是名不虚传的砖头一块,比我上一个充电器厚一半大一倍……镜面屏我不是很喜欢,不过现在好像很流行这东西,真是无语。

加到4G内存,开约80%的亮度,开着无线,用Intel显卡能坚持5个小时多点吧。(装程序,弄PS,放flac)该屏幕色调偏冷,不过也好,反正早晚要变黄的,呵呵。

随机的系统是win 7 hp x64,本来担心工行的网银U盾的,后来发现用了gemplus(现在叫做gemalto)的新驱动就解决了问题。反正能网银、支付宝了就基本没别的问题了。

不知道Acer在这款机器上用的是Broadcom的无线网卡,信号还算不错。局域网卡是AR的,貌似比较罕见吧。散热挺好的,两边都有风扇,但是右边那个基本就没转过(应该是显卡那个吧)过去acer底面烫死人的毛病这次改了,空调房里只是温热而已,完全可以放在腿上。

电池时间是我喜欢它的另一个理由,用集成显卡,屏幕半亮,开启wifi,上网、看PDF可以顺利的坚持五个小时多,虽然没有8小时那么夸张,不过对我也算是够用啦。

缺点就是没有独立的Wifi开关按键,甚至Fn组合键都没有,Fn组合键调出来的那个wifi和蓝牙开关界面还不支持快捷键,必须用鼠标去点,十分的无语。希望acer赶紧更新Launch Manager,支持快捷键应该很容易的……

购买地点是e世界,先前在淘宝踩过,直接去看机器拿货。

使用windows自带的NTFS加密要注意防损啊

今天接到第n次咨询“绿色文件名的文件重装后打不开”的问题了……也就是第n个悲剧……sigh

windows自带的加密功能Encrypting File System (EFS),就是windows的文件管理器的右键菜单高级里的那个加密,使用对称加密加密文件本身,然后用非对称的是公钥-私钥的方式加密对称加密的密码,也就是说要有拥有私钥才能解密文件。Windows XP SP1后默认用AES-256加密算法;AES-256意味着达到美国政府的TOP SECRET标准了……

Windows加密的私钥(也就是解密EFS加密文件的“密码”)是按用户保存的,每个windows用户有一个自己私钥,这个私钥用于加密所有你选择加密的文件(文件夹)。然后这个私钥是通过你的登录密码加密后存在系统中的。以下行为可能导致你丢失私钥(进而丢失加密文件):

  1. 重装系统;
  2. 删除帐户及帐户配置文件夹;
  3. 使用第三方工具强行重设windows用户密码;
  4. 含有帐户设置的文件系统损坏;
  5. 其他很多丢失密钥文件的情况……

Windows做的糟糕的地方在于它不提示用户备份私钥的意义,甚至很多用户用了EFS还不知道有备份私钥这回事……(备份私钥提示功能直到Vista才引入)

另外需要注意的是文件从NTFS分区拷贝到非NTFS分区(比如FAT分区)时会解密,这个可能会导致秘密内容曝光。而NTFS拷贝/移动到NTFS不会解密,也就是你拷贝到NTFS移动硬盘后这些文件仍旧保持加密状态(只有相应私钥可以解密之)

总之,强烈建议第一次使用windows集成在右键的加密功能时一定,务必,千万要备份你的私钥。 真的不希望在看到悲剧了,唉。

 

相关知识链接

http://en.wikipedia.org/wiki/Encrypting_File_System

http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

The Encrypting File System <http://technet.microsoft.com/en-us/library/cc700811.aspx>

Encrypting File System in Windows XP and Windows Server 2003 <http://technet.microsoft.com/en-us/library/bb457065.aspx>

Using Encrypting File System <http://technet.microsoft.com/en-us/library/bb457116.aspx>

encrypted file system recovery<http://www.beginningtoseethelight.org/efsrecovery/ >- 这个详述了挽救加密文件

Sunday, July 11, 2010

如何在64位windows 7下使用工行网银/金邦达U盾

为了充分利用4G的内粗,使用64位系统自然最好的选择了,但是工行的网银却不是那么容易调教的……经过多次尝试我才搞定,于是打算写出来以便节约大家时间。

首先是我发现的郁闷现象:

  • 官方提供的金邦达U盾的驱动不支持win 7 64位
  • 开启UAC时,标准用户即使经过提权也无法安装登录所需的IE控件。

解决的办法还是有的。为了使用U盾,需要首先下载最新的驱动,金邦达gemplus现在已经经过公司重组命名为gemalto了,在gemalto网站上提供了2006/2007版蓝色金邦达U盾的最新支持64位 windows 7的驱动。

安装工行的驱动,然后安装U盾驱动,这时候插上U盾应该就能认出来了。

为了安装登录网银的IE控件,需要在控制面板账户管理中临时把当前标准用户改为管理员,安装完首次登陆后,可以改回去。 如果对一般站点开启IE保护模式(我强烈推荐),则使用支付宝等待时候会在弹出U盾密码框时IE卡死,解决办法很简单,就是对于信任站点关闭保护模式,并把https://b2c.icbc.com.cn加入到信任站点中。(IE工具菜单点设置,进入安全选项卡,点击信任站点,点击网站按钮,然后加入上述地址。)

经过以上折腾windows 7 64位下就能正常的用工行的网银等了,希望工行能够尽快更新安装程序,解决这些问题。

都张一样了

自从chrome悍然的抄了Opera并大胆的扔给掉了空占位置的标题栏横空出世以来,浏览器界面设计抄袭战就热火朝天的打响了。如今Chrome/Firefox 4beta/Opera 10.60已经俨然长得一个模样了,辨识度特别低,刚才我想把一个Chrome里的链接拿到Opera里打开,结果把地址贴在另一个chrome窗口里还浑然不知…… 这么看来还是IE 8长得稍微有特点些了,至于IE 6嘛我真的已经好多年不见了……

Monday, May 31, 2010

通过nginx以动态地址提供静态文件服务

(这题目有些纠结,因为是从我自己的英文博客翻译来的……)

最近我在实验室做了个放在Google App Engine (GAE)上的小网站,但是GAE没法提供我需要的大文件下载,因此我们最后还是不得不自己弄了个服务器提供文件服务。我一方面不想直接提供URL,另一方面又不想失去nginx静态文件服务的性能。

我最终的办法是通过Sybren A. Stuvel写的一个纯Python的 rsa模块  来在GAE上用私钥加密文件名和当前时间,然后把加密后的url提供给用户。在文件服务器上,我通过 nginx的 X-Accel-Redirect 功能 和一个小 cherrypy 服务来解密url,验证时间,然后设置 X-Accel-Redirect header 为真实的 nginx internal地址。

在我这里这个方法工作得很好 :)

Thursday, April 22, 2010

周末整理音乐收藏

终于把所有的无损收藏都变成flac了,ape本来没啥不好的,但是几乎所有的便携播放设备都不支持。又创新打算出支持flac的播放器了,又可能败一只,所以就折腾了一下。其实人倒是没怎么动手,不过我弱弱的旧笔记本可是忙了好半天呐……

Convert all ape files to flac

#!/bin/bash
# by huangyuanjie at gmail dot com
# convert all ape files to flac

find $PWD -iname '*.ape' -print > todo

while read p ; do
d=`dirname "$p"`
f=`basename "${p}" .ape`
pn="${d}/${f}.flac"

echo "start converting \"${p}\" to"
echo " \"${pn}\" ..."
sleep 1
mac "${p}" - -d 2>/dev/null | flac -o "${pn}" -
echo "${p}" >> finished-convert
echo "converted \"${p}\" to "
echo " \"${pn}\" ...";

find "${d}" -iname '*.cue' -print > tmp
while read f; do
echo "fixing \"${f}\" ..."
cp "${f}" "${f}.orig"
sed -i 's/ape/flac/g' "${f}"
addsig.py "${f}" # add UTF-8 BOM so that foobar2000 can read it correctly
echo "fixed \"${f}\" ."
done < tmp
echo "${p}" >> finished-fix-cuesheet

rm -v "${p}"
echo

sleep 1
done < todo

rm tmp


Python script to add UTF-8 BOM



#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# by huangyuanjie at gmail dot com
# add UTF-8 BOM so to a text file

import sys
import codecs

def main():
if len(sys.argv) < 2:
sys.stderr.write("Error: no input file!")
exit(1)
path = sys.argv[1]
try:
file = open(path, "rb")
except IOError:
sys.stderr.write("Error: no such file \"%s\" !" % (path))
exit(2)

content = file.read()
file.close()
if str(content[0:len(codecs.BOM_UTF8)]) == str(codecs.BOM_UTF8):
return
else:
file = open(path, "w")
file.write(codecs.BOM_UTF8)
file.write(content)
file.close()

if __name__ == '__main__':
main()

Monday, April 19, 2010

杂谈

今天花了点时间重新学习了一下JavaScript,就是那个有着奇怪学名 ECMAScript 的语言,那个最“民工”的语言,那个可能平均代码质量全世界最低的语言……学习一门科学需要正确的入门,学习一门语言虽然是个小事也一样需要有正确途径(其实我一向对于编写代码这种事比较轻视,因为我认为一个理工生代码写得好才是正常的……)。Stack Overflow 推荐的学习 ECMAscript 的材料是 Crockford 的讲座,于是从 Yahoo video (墙外-__-b)拖回来看了一下午。

看完以后最深的感觉就是想起最近在smth某技术版面上大家说的,“那是和计算机一起成长起来的一代人”(BTW,我们是电脑游戏/SNS一起成长起来的一代人)。他们熟知计算机如何变成今天这个样子,知道编程语言/编程模型的发展脉络,了解种种技术是如何在大公司的市场博弈中生存下来,看过纷繁的概念如潮水般涌现和消退。历史不能告诉我们明天在哪里,却记录了人们曾经走上了哪些死胡同,以及为什么那在当时走不通。在这个躁动的时代,无数人问学会了啥能找到工作,却从不问自己真的学会啥了。(某种意义上 Google 就像个不负责任的家教,“做题”时给你个答案,结果很多人永远都没学会“做题”更不要说“掌握”)

想起马哥说如果按照在实验室时间算,我是优秀研究生,如果按照网上到处晃荡看的时间算,我该被开除了。其实我不过想多了解点背景知识罢了……求精的匠人文化深厚的日本也在全球化的浪潮中逐渐迷失,更何况这个浮躁了很久的国家。想起研究生入学的时候,所长那不怎么出色的演讲中问了一个让人很不舒服的问题——“是否耐得住寂寞?”——说不怎么舒服,一是在于环境,二是为什么要耐得住这等寂寞?工业化的核心是用指定的成本指定的时间做出质量合乎要求的东西;十年铸一剑那是奢侈品市场,呵呵。连奢侈品都在我国量产的今天,这个质量的标准应该放在那里?嗯,也许这个质量应该相对环境来定义,好质量就是比平均高一些。就像韩局长成了好官员,假货都要标榜高仿。

于是矛盾,一方面对这个环境很反感,另一方面又不甘心遁去。

 

PS:今日偶然看到孙立平老师经济危机及社会溃败一文,值得一读。

PS2: developer.yahoo.com上有 Crockford 的最近演讲视频,无需翻墙。

Monday, April 12, 2010

Win 7 实在太厉害了……

居然连我这么小众的鼠标都认出来了,而且还有专门的图标~

win7knows

惊讶得一塌糊涂……

Monday, April 5, 2010

在Win 7下安全移除USB移动硬盘

微软的系统自从Vista以来(就是nt6.x)就有了一个十分让人烦恼的问题——所谓的安全移除外接硬盘的安全变成了对系统和数据而言的,至于硬盘的物理健康则被完全忘掉了。点了安全移除之后硬盘还在全速转动,这时候拔下来就必然听到咔嗒一声,让人对立面的数据十分担忧……

不过解决办法总是有的~ 来自 Linux 的 sdparm 有 windows 版,用这个东西就能安全的移除硬盘了。Linux 下着曾经是我主要的工具,不过后来有了 devicekit/udisk 之后就可以从 gnome 直接完成这个动作了。

下载 sdparm window 版,移除硬盘的时候在 有管理员权限的 cmd 里面执行:

sdparm --wscan

查看硬盘,然后执行

sdparm –C stop PDX

其中的 PDX 是 scan 告诉你的外设硬盘。这样机秒钟后就可以拔掉了。注意不要再用window自己的“安全移除”了,会反而再次激活硬盘。

Thursday, March 18, 2010

Unix Hater Handbook 是好书!

Unix Hater's Handbook 真是一本好书啊~~ 连前言都很搞笑:

As for me? I switched to the Mac. No more grep, no more piping, no more SED scripts. Just a simple, elegant life: “Your application has unexpectedly quit due to error number –1. OK?”

话说 sed script 真的不是给人写的,而我至今也搞不清楚在vim/sed/perl的正则里可以用哪些是需要escape的……btw,昨天我终于学会在sed里一次处理跨行并且使用传说中的hold space了……

btw, 昨儿 LFS-6.6 失败了,glibc 编译不能,重大悲剧…… 哥不干了,装个ArchLinux算了…… 昨天搜索的时候遇到一个ArchMobile,囧,我们Arch这么小众的都在进军mobile领域……要是足够闲就自己造手机了,EE/CS俺都会点的呢……

Sunday, March 14, 2010

人·机

■ 引

这两天了解了一下 Pylons 这个 Python web framework,对它第一印象还算可以,不过按照 Tutorial 写的程序居然不能运行……原因是去年发布以后所依赖的库发生了巨大的变化.-__-b

这种依赖剧烈升级似乎是一个惯常的严重问题了。想想 Linux 每次升级库的时候的提心吊胆就知道了。依赖库能够最大程度的提高开发效率,减少自己制造轮子的问题,可是用别人造的轮子就有需要匹配轮子的问题。比如这个 Pylons , 从 0.9.7 到 1.0rc 似乎没什么新鲜功能,可是开发者还是叫苦说自己可没闲着,都在忙着和依赖库的变化作斗争。

这也难怪 Intel 和 Microsoft 这样的企业能在多年的不思进取的指责中屹立不倒,他们靠的就是在开发新功能时候维持一个尽量稳定的产品接口( X86指令集,Windows API )。


■ 问

《人月神话》告诉我们一件工作一个人十天能做完,可是找十个人却不见得能够一天做完。而如果这些人还不是受雇同一个主顾,没有统一的交流平台的话,情况只会更糟糕。e-mail/mailing list/ICR/twitter 交流手段不断变化,效率提升却不明显。

可是人不可能有足够的预见,以至于我们只需要一起维护一个不会失败的方案。于是我们就需要尝试不同的方案,而从提高效率考虑,又需要人们分散去尝试不同的方案。


■ 玄

沟通问题很像是并行计算里数据/控制传输成本,每个人就像集群中的一台机器。处理更大规模的计算,要么有更好的算法,要么有更强大的节点。可是无论我们怎么优化节点(提高每个人自身的能力),似乎都已接近上限了;那么只能改进算法(改进合作模式)。

想起 Yale Patt 的一个比喻,我们需要一个智商 350 的聪明人,可是只找到 10 个智商 35 的,那么是不可能解决问题的。那么一个直接的推论就是只要这类问题存在,那么人类能成果的发展最后就会止于再也找不到更聪明的人。(当然节点数目——环境可承载人类总数——也可能成为约束,可是我们已经有很多人了不是?)

那么,我们有多接近这个极限?


■ 空

我们需要接近这个极限么?更多的产品,更好的服务,更快的速度,更低的价格……我们一直追寻,想得到什么?

Thursday, March 11, 2010

blogger 还真是死不开窍

居然这么长时间了还是会在切换 HTML 和 WYSIWYG 编辑的时候自动去掉<p>标签,替换以换行符<br />,真是不知道说什么好,也不看看人家 wordpress 的进步,唉,被 google 收购了就这么不思进取。

自动下载 LFS 所需的文件

自从 LFS 6.6 之后,LFS CD 就不更新了,于是就得自己下载所需的文件。而我又不喜欢自动的 ahalfs ,所以从 LFS book 中直接抽取需要下载的文件,然后趁着午饭时间让 wget 干活,嘿嘿

grep '.patch' chapter03/patches.html | sed -n 's/^\s*"\(.*\)".*/\1/p' > ~/Desktop/list.tmp
grep '.patch' chapter03/patches.html | sed -n 's/^\s*"\(.*\)".*/\1/p' >> ~/Desktop/list.tmp
wget -i list.tmp

Sunday, March 7, 2010

Viewnior - Linux下小巧快速的看图软件

本来在ArchLinux下一只用Mirage来查看软件,Mirage是很小,依赖也很少,唯一的缺点就是速度稍微慢了一点。今天偶尔发现了Viewnior,从AUR里编译出来装上试了试,速度竟比Mirage快不少,很是满意,推荐一下。

Thursday, March 4, 2010

邮件发布测试

打扰了,不好意思 *^___^*

智能手机OS观察

前些天写的,是中文的就没放到 tech blog,放到生活日志又不合适,干脆建立一个中文的“技术水池”吧……

最近很是受到TIM版的 G2 的引诱,不过价格暂时还在2k以上,没有下手的动力……

开始搜索了一 些关于 android 系统手机的信息,后来好奇心驱使下熬夜爬墙的看了一大堆android的系统资料;今天顺手了解了不开源的 BlackBerry OS 的一点信息以及刚刚开源的Symbian……

总得印象就是 Android 很 有希望,Symbian 要悲剧了,BlackBerry 还能蹦跶一阵……至于Windows Mobile,这么个到现在还只支持65536色的系统我实在懒的了解,等 Windows Phone 7 的资料更多再说吧。

Android

Android 的特色之一就是 HAL,这个东西和 Linux 上的那个 HAL 同名,但是实际上起的是 OS kernel 之上的硬件抽象作用。这给了 Vendor 一个很好的避免 Linux Kernel GPL 传染的方式,消除了不少麻烦。

Dalvik VM 是 Google 自己造出来的,虽然一般被当作 Java 虚拟机,实际上执行的却不是 Java bitecode,因此理论上可以用其他语言编写然后交叉编译过去;不过 Java 为广大民工喜闻乐见,想要别的语言的估计也不太多……

Android只有性能相关的系统库是 native 的,而且给程序员用的也是 Java 包装好的接口,这对维护系统的一致性很有好处,应该不会像桌面 Linux 的那些库一样动不动就打架罢工……不过随之而来的一个问题就是拓展性,比如想加一个Helix解码库就不容易(不知道Helix?知道RMVB吧, 就是用来解码RMVB的库)。【正能解自家的Youbute视频就好啦,其他的谁管呢~


Android 用户程序生而平等…… Home 就是一个 Activity,对界面约束极少倒是像个 Linux,开发 Sense一类的用户界面相对更容易。

仰赖不同 APK 运 行于不同的 user id 下并只通过系统 bind 进行通信的机制,小机器人的安全性应该不错。当然到处乱刷 ROM 的风险还是不小的(特别在国内这种迷信xxx论坛美化/优化版的 地方,这种问题更严重,不厚道的说现在开发基于 Android 的 Adware/Malware已经很值得考虑了)。

Android 上现在还没几个收费的游戏,这说明大的软件厂商还没有大举进军 Android,暂时以来自自由软件世界的个人英雄主义开发者为主,不过这应该只是时间 问题。

需要说的一个是“ Android 不能关程序”这个说法,这个是设计成这样的,不是缺陷,理论上应该还是 个不错的想法。不过不知道运行时会不会智能的学习程序行为,对不同程序区分对待。如果没有,倒是可以考虑研究之……或许能在 Android 圈里立名,呵呵。

BlackBerry

铁板一块……想 hack 都找不到门的系统,只是提供了 Java API(不知道Android 是不是就是和BB学来的思路?)好处就是安全,坏处就是不那么geek-friendly。

另外 BlackBerry 结合企业应用还是很有点积累的, 有一套通过手机远程使用假设在公司服务的系统 (BES),这公司居然没跟着风大喊自己搞的是云计算,真是太憨厚了 *^__^*

不过没了 BES 感觉 BB 就少了 很多竞争力…… 尤其是在现在世界娱乐化无聊 化(以facebook崛起为特征)的大潮中,BB 对于第三方应用程序/游戏的开发者/开发公司的吸引力稍欠,有被边缘化的可能。

Symbian

从1980年开始活到现在了,比 DOS 长寿多了……Symbian(包括目前在规划和路线图中的 Symbian^3和 Symbian^4 的最大特点就是支持用户级别的 native 程序,反倒是 Java VM 在整个系统中看着很不伦不类……

大家常说的S60 其实是 Symbian 的上层而已,使用同样 Kernel 的还有以前 Sony 家的 UIQ 以及几乎没见过的 S90 等; S60 基本上是随着 Kernel 版号发行的。

Nokia 的开发语言是 C++, 准确的说是 C++的一个芬兰味方言版,哈哈。当 iPhone 开始颠覆手机概念的时候,Nokia 认识到需要一个更好的界面,于是收来了Trolltech ,把未来寄予在 Qt 上。在这之后就经常在 Youtube 上看 Qt 团队秀效果…… 不过全面 Qt看来还要等 Symbian^4 ,大概在 2010 Q4才会搞好……我个人很喜欢 Qt , 不过我还是认为 C++ 可能不是在手机上的 最好选择…… 一则 Nokia 方言版的 C++ 很多限制,二是代码质量和系统安全都是挑战。(总体来说我认为当今 IT 从业人员写代码的能力持严重怀疑态度,开发工具最好越傻瓜化越好,而 C++ 太需要“智能”了,让二流开发者拿去 race to market 不现实。)

好在 Nokia 很 怕在一棵树上吊死,Java、Python、Ruby,连 .Net 都有……加上最近打了鸡血似的全面开源 Symbian ,接着拿出 Symbian^3/^4 的时间表,甚至跑出来指责 android 开源不彻底;看来去年在智能手机市场上份额的4% 下滑已经把 Nokia 的尾巴点着了……

Saturday, February 20, 2010

交互式shell好工具eyeD3

事由:这两天闲着整理我电脑里的音乐库,因为 windows 7 的 windows media player 12 (以下简称 wmp )和 library 功能配合得非常完美,而且 wmp 12 的媒体管理功能也还不错,因此打算用 foobar2000 管理 APE/FLAC/TTA 等无损文件,而让 wmp 12 管理 mp3 文件。

遇到问题:管理 mp3 的内容无非就是整理 mp3 文件的 tag 信息 啦(就是我们点右键看属性时候看到的那些歌手、专辑等信息),不过 windows 7 和 wmp 12 的 tag 编辑能力都比较一般,做不了向 mp3 音乐文件嵌入专辑封面这些“高档”的事,估计是微软怕什么都做了被告垄断吧。于是只好寻找第三方工具,找来找去找到一个叫做 Mp3tag 的软件,功能很强大,可以编辑多数 mp3 的 tag 属性,也能嵌入图片(嵌入图片后文件在 windows 7 里就显示成专辑封面的图标啦,很好看的)。不过这个软件批量操作还是不够快捷,而且遇到错误的 tag 信息会无法识别 :(

后来:今天终于克服了懒惰,阅读了 mp3 tag 的技术标准,下载了一个 Python 的库和命令行程序(eyeD3)仔细研究了一下。终于对遇到的问题,和应该的解决办法有了系统的完整的了解,能够方便的不受 Mp3tag 功能限制的更改所有 tag 信息了。以后就通过 Python 交互式命令完成处理 mp3 tag 的各种工作啦,终于不用到处瞎找工具了 :)

最后:我想起昨天找到时候遇到一个软件,叫做 TidySongs ,声称 “ Only $39”,嗯,好吧,我找到了一个对我来说更趁手的工具,省下了 $39 ,是不是该买点巧克力和零食什么的庆祝一下 XD