当前位置

博客

红旗下的蛋

目前,在google和百度上搜“红旗下的蛋”,这个blogchina上的网志分别排在第一和第二。看到这种结果,我诚惶诚恐且不甚欢喜。这本是崔健在94年出版的个人第三张专辑的名子。我怀着崇敬的心情用它作blog名,没想到却在搜索引擎上抢了它的风头。真切地期望介绍这张专辑的网页能永远排在搜索引擎的第一位。

红旗下的蛋

词:崔健 曲:崔健

突然的开放实际并不突然
现在机会到了可谁知道该干什么
红旗还在飘扬没有固定方向
革命还在继续老头儿更有力量
钱在空中飘荡我们没有理想
虽然空气新鲜可看不见更远地方
虽然机会到了可胆量还是太小
我们的个性都是圆的
象红旗下的蛋

头突然出来是多年的期待
挺胸抬头叫喊是天生的遗传
心里当然明白我们是谁的后代
无论行为好坏内心还是清白
权力在空中飘荡经常打在肩上
突然一个念头不再跟着别人乱走
虽然身体还软虽然只会叫喊
看那八九点钟的太阳
象红旗下的蛋

肚子已经吃饱了脑子已经想开了
别说这是恩情永远报答不尽
我们不再是棋子儿走着别人划的印
自己想试着站一站走起来四处看看
现实象个石头精神象个蛋
石头虽然坚硬可蛋才是生命
妈妈仍然活着爸爸是个旗杆子
若问我们是什么
红旗下的蛋

Topic: 

当用 Python ctypes 模块调用动态链接库,如何传入一个结构体指针

最近用 dv2xvid 这个东东很多,上两周几乎每天都用它跑一个晚上压缩2个小时的视频。于是又萌发了把它改进得更通用的念头。

目前 dv2xvid 有一个很严重的问题,就是只支持 xvid-1.1.0-beta2 的压缩。而事实上目前大家用的最多的是应该都是正式版本,比如 1.0.3 或者 1.1.0 之类。如果想能支持更多版本的 xvid codec,就必须能在压缩之前判断 xvid 的版本。

恶心的是安装的 xvid 的目标文件没有 Windows Dll 的版本属性,查了半天,调用 xvidcore.dll 里面的一个函数可以获得 xvidcore.dll 的版本号

  1. #include "xvid.h"
  2.  
  3. {
  4.   xvid_gbl_info_t info;
  5.   HINSTANCE m_hdll;
  6.  
  7.   memset(&info, 0, sizeof(info));
  8.   info.version = XVID_VERSION;
  9.   m_hdll = LoadLibrary(XVID_DLL_NAME);
  10.   if (m_hdll != NULL) {
  11.     ((int (__cdecl *)(void *, int, void *, void*))
  12. GetProcAddress(m_hdll, "xvid_global"))(0, XVID_GBL_INFO, &info, NULL);
  13.    
  14.    printf("xvidcore.dll version %d.%d.%d (\"%s\")",
  15.                 XVID_VERSION_MAJOR(info.actual_version),
  16.                 XVID_VERSION_MINOR(info.actual_version),
  17.                 XVID_VERSION_PATCH(info.actual_version),
  18.                 info.build);
  19.  
  20.     FreeLibrary(m_hdll);
  21.   } else {
  22.     printf("xvidcore.dll not found!");
  23.   }
  24. }

如果在 python 里面做到这个事情,可以通过 ctypes 模块来完成。但查遍 ctypes 有关的中文文档,都没有关于怎样在函数中传入结构体指针的说明,只能自己 google 之,后来发现应该这么来做:

  1. from ctypes import *
  2.  
  3. ### 定义结构体
  4. class xvid_gbl_info_t(Structure):
  5.     _fields_ = [("version", c_int),
  6.                 ("actual_version", c_int),
  7.                 ("build", c_char_p),
  8.                 ("cpu_flags", c_uint),
  9.                 ("num_threads", c_int)]
  10.  
  11. XVID_GBL_INFO = 1
  12.  
  13. dll = cdll.load("c:\\windows\\system32\\xvidcore.dll")
  14. xvid_global = dll.xvid_global
  15.  
  16. ### 构造 pinfo 结构体, 然后赋值
  17. pinfo = xvid_gbl_info_t()
  18. pinfo.version = ((((1)&0xff)<<16) | (((0)&0xff)<<8) | ((0)&0xff))
  19.  
  20. x = c_voidp(0)
  21. y = c_voidp(0)
  22. ### 用 byref 传入指针
  23. if xvid_global(x, c_int(XVID_GBL_INFO), byref(pinfo), y) == 0:
  24.     major_version = (pinfo.actual_version>>16)&0xff
  25.     minor_version = (pinfo.actual_version>>8)&0xff
  26.     patch_version = (pinfo.actual_version>>0)&0xff
  27.     print major_version, minor_version, patch_version
  28.     print pinfo.build
  29.     print pinfo.cpu_flags
  30.     print pinfo.num_threads
  31. else:
  32.     print "ERROR"

另:最近一周: qyt 完成了 blog 搬家, www.dup2.org 已经通过 ICP 备案. Logo 和 favicon 也正在热情实施中...(不得不承认我弟比我有美术天赋)

Topic: 

青鸟(The Blue Bird)

周六上午,全家一起去东城区少年宫剧场看青鸟。演出大约1小时20分钟,我家宝贝能安安静静全神贯注看完,着实难得。这是她第二次去剧场了,上一回是在中国儿童艺术剧场看小蝌蚪找妈妈

说来惭愧,这是我第一次上剧场。去现场的感觉很好,演员和观众能有很好的互动,这点比电影电视强多了,打算怎么时候去看相声小剧场去。

青鸟的作者后来获得了诺贝尔奖(但肯定不只是因为《青鸟》的缘故)。从网上查到的信息看,原文情节和这里改编后的儿童剧还是有很大出入,比如"鸽子变成青鸟"这个情节就被改了,料想这群小学甚至学前的孩子是无法理解"追寻的目标其实就在身边"这个主题。

在演员和小观众们的互动也颇有趣,孩子们都能理解勇敢、团结、正义这样的100%正面理想,但是在享乐是否就是幸福的问答中,正反两方的比例大概是一半对一半..hehe.

现在我们家宝贝已经把"蝌蚪"当作儿童剧的代名词,时不时就说要看"蝌蚪",以后看来会多去。其实门票比电影大片便宜多了.

 
附件大小
图像图标 thebluebird.jpg89.91 KB
Topic: 

Mozilla Relicensing Complete

当我昨天(4月1日)从订阅的"mozillaZine feedHouse"读到这条新闻时,第一反应就是"这个应该是 mozilla 的愚人节玩笑了",Mozilla 以罕见的tri-license发布,开什么玩笑。

但是从 Mozilla 许可证网页以及其 FAQ 上,他们似乎是认真在做这件事情耶。所以到今天(4月2日),我想可以确认这是真真切切的事件了。

把原有的代码转换License是一件无比麻烦的事情,对于哪些在 NPL 条款下的贡献代码而言还轻松些,因为 NPL 确保 mozilla 可以把贡献代码按任何许可协议发布,但对于那些以 MPL,或者 MPL/GPL dual-license 的贡献代码而言,就必须一个一个的取得贡献者的许可......于是 "After four and a half years, 445 contributors and 28522 files",mozilla 终于完成了这一步.

现在,用户可以选择:
1. MPL,将 mozilla 代码和自己的代码混合在一起编译出专有软件,只需发布出 mozilla 相关的那部分代码就可以
2. LGPL,将 mozilla 代码和部分LGPL代码(可能自己编写)编译出一个链接库,然后配合自己的专有软件发布
3. GPL,将 mozilla 代码和 GPL 代码或者库混合在一起发布新的软件,比如在地址栏或者搜索框里调用 readline 做编辑..

总之,在这样的授权下,mozilla 期望,"making our code available to as wide a group of developers as possible, as part of our mission to promote choice and innovation on the Internet. We hope that this will enable people to build even more cool and innovative products."

 
Topic: 

精准的 B-plan

周四下午和一个做 SIP 的公司的老板谈事情,中间他感叹起技术 forecasting(新海龟和老海龟的重大区别就是在日常言谈中夹杂英文单词的数目,随着回国年头的增加,运用母语的能力会越来越自如,hoho). 说最佩服的就是邓峰, 从 97 年创业到 03 年上市,产品研发和推出顺序是完全按照当初的 business plan 里面执行的,虽然商业上起起落落,未免和 b-plan 有所出入,但这份技术前瞻能力却着实了得。

听到该事迹后,我和讲述者都不约而同发了一会儿呆,沉浸在对牛人的无限崇拜和追思之幽情中.

Topic: 

筹划中的 blogchina -> drupal 搬迁

早就答应负责把 qiuyingtao.blogchina.com 搬过来的技术任务,计划这个周末抽时间来弄。上 Drupal.org 找了一下,看起来只有 "Import HTML""node_import" 这两个现成的 module 可以用,其中又以 "node_import" 似乎更加靠谱。

计划如下:
1. 将 blog 文章全部从 blogchina 取出来。flashget 似乎可以直接搞定
2. 写一个 html 处理脚本,分离出需要的正文内容,时间等信息
3. 安装 node_import 模块,测试确认该模块符合需求,然后确认导入 CSV 的格式
4. 制作 csv 并且导入.

不晓得一个晚上能否搞定,阿门...

Topic: 

封闭的优友blog

老冒是个好同志,UUZone看上去也不错,我订了他的blog,从中获益良多。

有时候看了他的blog后非常想回复,可是似乎必须要首先成为UUZone的用户才行。这种回复认证策略我非常不认同,所以我不注册成为优友,所以我只能做一个哑巴的读者,尽管有时有话硬憋着让我很不爽。

但是看了他前天的“外国人眼中的中国”(ZT),我有些话不吐实在不快了,于是我想既然blog不让我回复,有email地址也可以吧,结果email地址我也没找到,看到一个留言板,我以为这里应该可以不用注册了吧,于是写了几句,一点确认按钮,还是问我用户名。瞬间,气泄了,只得关了网页。

在目前open的趋势下,我不知老冒为什么要用这种方式圈人——你不进来就没有评论的权限。看过很多BSP,这种做法似乎仅此一家

这篇“外国人眼中的中国”让我觉得最不爽的就是明显是中国人写的,可是他非要安这么个题目。就冲这点,我就鄙视这个帖子的作者。用了这个题目还有一个“好处”是可以为文中一些商榷的地方找个搪塞的借口。至于具体帖子是不是句句是真,是不是公允客观,我就不多说了。

我觉得老冒这段时间一定被一些事情搞得非常不爽(这篇文章倒是写得相当漂亮),所以失去了判断。就算认同帖子部分观点,何必放在blog里,这对他的公司本身应该也没有好处。

五一行程

筹划中.. :)

4月30日 到达曼谷,(北京/曼谷:TG675 WE29APR PEKBKK)
4月30日 酒店休息,晚上去酒吧,住在曼谷 Arnoma Hotel
5月1日 浏览湄南河,晚上去夜市,住在曼谷 Arnoma Hotel
5月2日 上午购物,
5月2日 下午搭乘飞机到达普吉,(曼谷/普吉 TG643 WE29APR BKKHKT)

5月2日 晚上海边吃饭,住在普吉 Amari coral beach
5月3日 普吉环岛一日游,住在普吉 Amari coral beach
5月4日 出发去pp岛,酒店游泳,看日落,住在pp岛 Holiday Inn Resort Phi Phi
5月5日 附近岛屿浮潜,住在pp岛 Holiday Inn Resort Phi Phi
5月6日 晚上回普吉,住在普吉 Amari coral beach
5月7日 酒店休闲,下午返回曼谷(普吉/曼谷:下午的飞机)
5月7日 晚上购物,住在曼谷Arnoma Hotel ()
5月8日 返回北京 (曼谷/北京 TG614 TH08MAY BKKPEK

 
Topic: 

恩施土家族烧饼

去年底,有个同事向我推荐“掉渣渣”烧饼,说这个烧饼在他们老家恩施可算是非常有名的小吃,现在跑到北京来卖了,虽然味道非常不错,不过不能和老家做的媲美。

今年过完年在小西天附近一个超市买东西,发现旁边有一家起名“掉渣狂”的烧饼店,名字取得够怪。既然路过,买一个尝尝,味道确实不错,和北方传统的烧饼从样子到味道完全不一样。从另一条路走回去的时候,发现一个叫“土掉渣”的店,也是卖烧饼的。这两个店除了店名类似之外,门面都用扎成排的竹子作装饰。

有一个周末乘车路过小营西,看见路边一排竹子一闪,心中一动,仔细一瞧,果真又是一家土家族卖烧饼的。晚上等到六点半左右,骑车两站地来这买烧饼作晚饭,结果被告知卖完了,要买明天买。看样子可真翘啊,这个点就不做生意了,真是没想到,只有饿着肚子再骑回去买别的东西吃了。 :(

北京这半年也不知开了多少家烧饼店,名字还都不太一样,只知道都是土家族掉渣烧饼。武汉的鸭脖子已经站住脚了,但愿这些店也能继续下去。

韩白之争

呵呵,看和菜头的blog了解这个事情1234

韩寒被老同志倚老卖老的教育了后,奋起反击,结果引起轩然大波。呵呵,论战不断,作为一个旁观者,看得也挺有意思。

韩寒的小说就看过一本《三重门》,大概是4、5年前看的吧。当时感觉是这本书也就是写给十五六岁及更小一点的少年们看的。作者由于年轻,写出的东西让年纪稍微大一点的觉得挺小儿科的。他写的故事以及本人的经历让他真正的读者们奉为偶像,这些粉丝们现在管用了,互联网让他们中的某些素质低下者的肮脏语言“天赋”得到发挥,把那些老同志们气得不轻。不管谁占理,谁及他的帮腔者说粗口都是不对滴。

这件事近来竟然发展到高晓松为了帮哥们陆川,翻出了陈年旧帐,说《三重门》里韩寒使用了《青春无悔》的歌词,要跟韩寒打官司。呵呵,我想起了前段时间三表说高晓松的《恋恋风尘》用了《最后的华尔兹》中的旋律,我觉得韩寒也应该提醒这首歌的作者,帮他也打一打这个侵权的官司。

和菜头说的好,韩寒其实和陆川是一条船上的人,现在倒打起来了。他是一个碰到反对意见不论是否占理都要站出来表现出一个反叛姿态的人,挺幼稚的。可以想象这是一个轮回,韩寒现在以年轻人代言人的身份向老同志们说不,过二十年,自己肯定也会被别人说不,那时他就能多多少少理解他现在的对手们了。想到这一点,我对自己高屋建瓴的思想境界感到非常的满意。哈哈。

订阅 RSS - 博客