Le's profileSomething like a home pa...PhotosBlogListsMore ![]() | Help |
|
November 29 媒体的力量媒体的力量真的太强大了 特别是权威媒体 在Linux和自由软件领域里,lwn.net无疑是这样的一个权威媒体 有些事,经它一报道,可能就会使整个舆论转向 比如最近的gaia事件 gaia是个开源的google earth,可是却被google叫停了 一看到这种事情,很多人都是膝跳反射式的数落google的不是 其实这件事上google有自己的苦衷 http://lwn.net/Articles/211153/ November 28 生活最近总看到有人在msn的签名里说生活怎么样怎么样 不禁让我想起《篱笆女人和狗》里的一首插曲 当时小,歌词里每个字都认识,但是没有任何感觉。 现在回过头看,句句都饱含哲理: 《苦乐年华》 作词:张黎 作曲:徐沛东 原唱:李娜 生活是一团麻 那也是麻绳/拧成的花 生活是一根线 也有那解不开的/小疙瘩呀 生活是一条路 怎能没有坑坑洼洼 生活是一杯酒 饱含着人生/酸甜苦辣 喔 哦 哦 生活像七彩缎 那也是一幅/难描的画 生活是一片霞 却又常把那寒风/苦雨洒呀 生活是一条藤 总结着几颗/苦涩的瓜 生活是一首歌 吟唱着人生悲喜/交加的苦乐年华 哦哦哦哦哦哦 生活是一条路 怎能没有坑坑洼洼 生活是一杯酒 饱含着人生/酸甜苦辣 November 27 用链表申请专利被批准!其实这篇文章是想谈谈软件专利。 首先声明我不是一个律师。这是一个很常见的声明,英文里常用这个缩写IANAL。 先来看一个软件专利具体例子。链表,一个最最基础的数据结构,2006年4月11日在美国被批准为专利。http://www.patentstorm.us/patents/7028023-fulltext.html 知道什么是链表的人看到这里恐怕会禁不住笑起来。但是担忧是不必的。 就这个例子,我们来看看软件专利的一些基本特性。首先,专利意味着什么?如果我申请到了一个专利,如果你实现了这个专利,那么你就要付给我专利费。这是一种很高明竞争方式,兵不血刃。中国的整个DVD产业就是毁灭于国外相关组织的专利武器之下。我们花费血本搞TD-SCDMA也是不希望3G的舞台被外国人所独占。怎么对抗专利?一个是找到prior art。他不是说是他发明的么?我们就找证据证明在他之前就有人这么用。所以链表的专利是可以无视的。或者,我们也搞专利,让他避不过,你要告我,我也告你。具体到软件专利,值得注意的一点是不是所有的国家都承认软件专利。美国承认软件专利。但是在欧盟,软件专利是不存在的。中国跟随美国。所以才有联想把从/proc获取机器硬件信息来做为专利来申请。很多方面技术上的差距是天壤之别,但是在专利的sb程度上却是半斤八两。有人会想链表这样已经被人用了几十年的数据结构,怎么还可能被批准为专利呢?这就是另一个问题了,就是据说专利局的人批的专利数量和自己获益多少是正相关的,他们才不会去查prior art。美国几乎每个软件公司都有他们自己的patent portfolio,否则就无法生存。因为很多专利是很难避过的,为了不让别人告自己,自己也需要掌握别人无法避过的专利。有一些公司什么都不生产,唯一的产品就是专利,坐收专利费,这种公司被称为patent trolls。他们有一个优点,就是他们自己没有产品,所以没有可能侵犯任何人的专利,不怕别人来告,但他们可以随便告别人,只要对方用了他们的专利而未交专利费。微软就建立过至少一个这样的patent troll。Linux是否使用了别人的专利?是可能的。有人研究过,提出了很多,而且分属于不同的公司。但是到现在没有人追究,因为Linux如果没有了,对任何人,除了微软,恐怕都没有好处。事实上,如果每一个软件专利都严格的追究下去的话,整个软件产业就马上玩完了。 好,再来看一个例子。http://jmri.sourceforge.net/k/index.html 这个例子说明软件专利对于开源软件的影响。jmri是个开源软件。这里我们不讨论软件本身。只要知道,在这个软件发布之后,有人申请了一个专利并获得批准,这个专利范围覆盖了这个软件。然后就要求对jmri收取专利费。何其之无耻!可是官司到现在没有打赢。这个页面上有目前官司的状况 http://jmri.sourceforge.net/k/updates.html 可见,即使是在prior art存在的情况下,开源软件能否打赢这样的官司也不是那么容易。主要还是因为开源软件发布的方式不是每个人都理解,或者故意被人所曲解。开源软件要发展下去,软件专利时刻是个威胁。面对这个威胁,开源软件的参与者应该团结,面对软件专利应该共同进退。某公司在金钱(one third billion dollar)诱惑下妄图在软件专利之上建立竞争优势的举动,必然会被视为对开源软件社区的背叛。这家公司的前景堪忧。这件事上交易的另一方无疑成了赢家。 附上几个连接,业界的最新反应: Greg KH的文章,虽然身为那家公司的员工,他还算是说了点良心话 http://www.kroah.com/log/2006/11/24/#community Busybox创建者的公开信 http://techp.org/petition/show/1 Ubuntu似乎不太"厚道",嘿嘿,落井下石,趁火打劫 http://www.markshuttleworth.com/archives/81 November 22 Novell: We disagreehttp://www.novell.com/linux/microsoft/community_open_letter.html Highlights: We disagree with the recent statements made by Microsoft on the topic of Linux and patents. Importantly, our agreement with Microsoft is in no way an acknowledgment that Linux infringes upon any Microsoft intellectual property. When we entered the patent cooperation agreement with Microsoft, Novell did not agree or admit that Linux or any other Novell offering violates Microsoft patents. Backgrouds: Ballmer on Novell, Linux and patents http://blog.seattlepi.nwsource.com/microsoft/archives/108806.asp?source=rss November 21 惊悉开发SimSun的中易公司原来是半官方机构November 20 Fedora Linux on PlayStation3November 18 记一下我的mp3转码的步骤我几乎所有的mp3的album都是gbk,title和artist是utf8(不标准的) 所以我的步骤如下 1. 我用的脚本配合我的tagreader和tagwriter把所有mp3的album转为标准utf8 id3v2 tag储存方式 id3_convert_set album *.mp3 2. 利用python版的id3iconv,给已经是utf8的title和artist加上encoding标示字节。命令这么写find -name "*.mp3" -exec mid3iconv -e UTF-8 {} \; 参考: http://zhllg.blogspot.com/2006/11/audaciousid3tag_12.html November 14 中国:政府中心主义发展战略的沉重代价http://guancha.gmw.cn/show.aspx?id=1231 这是光明网(光明日报的网站)上的一篇文章。文章深刻揭示了中国当前的发展模式的严重弊端。 文中主要观点如下:
November 13 I have reported the audacious-plugins' problem to upstreamhttp://bugs-meta.atheme.org/view.php?id=632 Here is the problem's description: In audacious-plugins' current implementation, when saving MP3's tags, unicode is enabled unconditionally. In save_cb() function in http://svn.atheme.org/audacious-plugins/trunk/src/mpg123/fileinfo.c, [ ^] there are two function calls: taglib_set_strings_unicode(1); and taglib_set_id3v2_default_text_encoding(); However, when reading MP3's tags, if chardet is enabled, unicode will be disabled. In fill_entries() function in the same file, there is a conditional compilation: #ifdef USE_CHARDET taglib_set_strings_unicode(FALSE); #endif This may not affect English only users. But for CJK users, this discrepancy of dealing with chardet will lead to MP3's title and artist being rendered as garbled characters. A patch is inclueded. The patch suggests a solution to this problem. November 12 解决audacious写入id3tag乱码问题的补丁首先说一说我对chardet的理解: 如果启用chardet,那么让taglib把所有tag的encoding当做Latin1,然后audacious自己来进行编码侦测。 如果不启用chardet,让taglib把所有tag当UTF8。 相比较amarok,audacious确实给用户多了一种选择。用户可以不转码。转的不"规范"的UTF8编码(也就是只转码,没加encoding byte)的tag也可以显示。 可惜我之前不知道,我用id3v2转了很多mp3,都属于此类情况。 现在我准备向"标准"靠拢。我准备不再用audacious的chardet功能。 我改写了taglib里的例子,用它配合我的id3转码脚本,在结合下面这个网页上的脚本,来把我所有的mp3都转"正确"的编码。 http://paste.ubuntu.org.cn/1090 这样一来amarok里也可以正常显示。否则像现在这样amarok里所有的歌都是乱码,除非不含tag的,可以正确显示文件名。 虽然我不用chardet,不过这个补丁还是要贡献出来。它应该有理由被upstream收录。gentoo-china overlay用户可以直接layman -S后,emerge audacious-plugins http://gentoo-china-overlay.googlecode.com/svn/trunk/media-plugins/audacious-plugins/files/audacious-plugins-1.2.2-mp3-id3tag-edit.patch diff -urN audacious-plugins-1.2.2.orig/src/mpg123/fileinfo.c audacious-plugins-1.2.2 /src/mpg123/fileinfo.c 我错怪taglib了在id3v2 tag的问题上。 StringList::toString()里虽然没有利用到encoding 但是在建立TexIdentifationFrame对象的时候,是用到了encoding的。 至于id3v1,那个问题我认为确实是个问题。虽然taglib说它只把id3v1的encoding当Latin1。 不是taglib的问题,那自然就是audacious的问题。确实如此。 在目前的audacious里,在写入时都当做是utf8。但是读取时,如果启用了chardet,那么就当成是latin1,这样读取出来的就是乱码。 November 11 Install Gentoo by coping LiveCD to harddiskaudacious写入id3tag乱码问题我的audacious和audacious-plugins的版本及USE flag如下: [I] media-sound/audacious Installed: 1.2.1(chardet -gnome nls) [I] media-plugins/audacious-plugins Installed: 1.2.2-r1(aac alsa arts chardet -esd flac -jack -lirc -modplug mp3 -musepack nls -oss -pulseaudio -sid -sndfile timidity vorbis wma) 值得注意的一点是,我都加上了chardet USE flag,这样在UTF-8环境下就不必为本来encoding为GB码的mp3文件里的id3tag转码了。 只需要稍微设置一下: Preference->Playlit->Metadata: auto character encoding detector for: Chinese fallback character encoding: gbk 还有一点是,如果主窗口显示不出汉字。看看你是否选择了这个选项: Preference->Appearance->Fonts->Use bitmap fonts if available 请不要选中这一项试试。如果使用微软雅黑,同时选中这个选项,主窗口的歌曲名如果是汉字就会乱码。而不选则不乱码。 这两个地方设置过后,audacious已经几近完美了。不过还有一个问题,就是修改id3tag保存后,再打开该文件会发现id3tag乱码。 经过我的分析,原因大概是这样: 1. id3v2.4.0标准里定义了tag可以有4种encoding,可以在tag里标明,占用一个字节,其中UTF8的值为3。 2. 如果指定encoding为utf8,taglib在写入时会遵循标准的约定,在tag里用一个字节表示encoding,就是3。 TextIdentificationFrame::renderFields() 3. 但是在读取tag的时候,我发现似乎taglib根本没有考虑这里还有个字节表示encoding。而是把3看作字符串的一部分。 StringList::toString()仅仅是把list里的String相加。 这样当然就会乱码了。 这恐怕应该算是taglib的一个flaw吧,暂时的解决办法,我想可以不指定以utf8为encoding写入。那样的话,就是Latin1,而它的值是0,这样有也就相当于没有。 此外,在保存id3v1 tag的时候,还有另外一个问题。就是如果指定了encoding为utf8,保存时就已经乱码了。 TagPrivate::stringHandler->render(d->title) d->title这个时候已经是以utf16(这是taglib内部保存字符串的形式,参见prepare())保存的了。我们看StringHandler::render的实现 ByteVector ID3v1::StringHandler::render(const String &s) const { return s.data(String::Latin1); } 实际上这个时候只有以String::UTF8调用data才能把utf16转回utf8,可惜的是这里居然是不分青红皂白的就用了String::Latin1。 November 07 一箭三雕今天搞清楚了怎么用email往livejournal上贴 以后来精神了,我就来个一箭三雕,就像今天,:-D 今天看av在#unix上聊天 原来老兄也是有很多问题面对啊 不过,怎么着也比我的状况好 前两天在zhlly的blog上看了 一篇文章 有关时间管理 启发不小 比如人是需要经常被激励的,那位老兄经常听励志的故事 再比如人要确定目标,我有目标,可惜太多了,也变的模糊了。 那哥们还说不要因为刻意遵守坚持到底的信条而不放弃一些对目标实现没有太大意义的事情,可是实现起来似乎比较困难。 还有要果断做决定,实在不行就丢硬币。 还有好多,自己看看了 November 06 select.spanI was asked to analyze the usage of this "select.span" command. However, I've no idea wtf the so-called span is. What's worse, it seems that nobody else here could explain to me what it is. I am a totally newbie in this area(I mean IVR), and I think it is known to everyone. However, I did find some clue. I found normally those span should be initialized in the driver. Take capi20's driver as an example, BayonneSpan object is newed in Driver::startDriver(). But unfortunately, the synway's bayonne driver is not complete at this moment. The driver is in bayonne-nonfree package. In my opinion, the biggest problem now is this incomplete synway bayonne driver. If it is finished, many problems will not exist any longer. PS: This "select" thing is discovered by me, when I analyzing "connect". In startDialing() which is called by scrConnect(), there is a call to getPointer() with a single parameter in the form "select.%s". Then I found the corresponding setPointer() should be in chkSelect(). November 03 msn space 与 google adsense在这里放google adsense?
无异于与虎谋皮
哈哈
ps: 在Linux里的Firefox 2.0里,只能直接编辑html了。sigh! |
|
|