qyb的博客

一个原味复制 facebook 的创意

关于 facebook 是什么,以及现在中国有多少人正在试图复制 facebook,就不再多说了... 大概两个月前,我中午一个人坐在兰州牛肉面里面,看着外面的的上班族在万达广场的空地上享受午间休息的闲暇时光,心里却考虑的是怎样才能去成功复制 facebook 的模式。

facebook 的创意看起来很简单:学校邮箱注册保证了身份的真实性,举办各种 party 拉近学生之间的关系。但是在中国就有很大的问题,一是学校邮箱并不是那么的广泛应用,二是学生对于 party 这样的交友实在不热衷。

按照我们 jack 的说法,facebook 的成功主要是它满足了一个需求,就是从帮助哈佛两栋宿舍的男生彼此相互了解开始,它使学校里那些"半熟不熟"的人会面时能找到相通的话题。另一方面,由于它对注册者身份的确认机制,使得学生乐意在这里发布一些更私密性的内容。

或许是因为中午饭比较难吃,所以思维跳跃的也更厉害,我不经意间想到,如果把写字楼看作宿舍楼,那么类似的服务有效果吗?

考虑这样的需求:我经常在电梯或者大堂里看见美女,但是不好意思上前去搭讪...当然老婆也禁止我这么做。如果有这么一个网站的话,我可以从她去哪楼梯判断她是哪个公司的,然后去找其"座位","电"一下

中国的白领和美国的大学生是不是有很多相似的地方?

a. 都可以用邮箱作身份认证。比如如果我计划作嘉里中心这栋写字楼,就可以事先摸清楚都有什么公司,一一查出都是什么邮箱,然后就可以创建一个比较私密的交友环境了
b. 交友的需求。在中国,至少白领的交友需求比大学生旺盛的多
c. 经济能力和社会活动能力。在中国,至少白领比大学生更可能去主动举办或参加各类 party

唯一有所不利的是,上网的时间未必充裕,未必有精力去建设自己的"座位",当然啦,这远远不是问题. 只要确实有需求,怎么都会有人来使用的。

总之,facebook 模式很好,在中国也不是不适用,关键在于所有的 player 都弄错了目标人群,和 facebook 一模一样的服务,本应该在写字楼里面推广的。

最后,替我们公司的"占座"打个广告。虽然我觉得我自己的创意实在是不错,但是既然已经选择了做大学的这个目标,就应该一门心思走下去。

Topic: 商业

假期结束 5/5 - 5/8

剩下的日子乏善可陈, 在皮皮岛上就是下海或者晒太阳或者闲逛或者吃了睡睡了吃. 每间小木屋里面都有一个 mini 音响, 可以收听广播或听 CD. CD 可以在前台去拿, 每次限两张, 音响机身上标识可以放 MP3. Holiday inn 还提供其他休闲方式, 包括一个网球场和一个 game room, 里面可以玩台球和乒乓球, 老外的乒乓球水平太弱了.

这个时候皮皮岛上每天都要下几场雨, 或大或小. 泰国的气候是三个季节: 雨季, 或者说季风气候是从 5 月份开始的, 中国的 5/1 长假其实已经接近泰国的旅游淡季. 在我们回国后不久, 就看到新闻说由于暴雨路滑, 泰国发生车祸一中国游客丧生. 据说春节长假天气最适合, 10/1 的时候泰国仍然会受季风气候影响, 也就是说可能不能自由自在的在海边玩.

6 号中午我们就返程回普吉岛, 接我们的水手在 holiday inn 的前台空地上本土乐器演奏了一番, 算是一个小小的告别仪式. 这天上午我们正在收拾行装, 没有看住达达, 结果她就玩火柴燎伤了脸, 起了一个小水泡. 她自己也知道闯祸了, 死也不承认是玩火柴导致, 说是"太阳亲了我一口", 让她父母大喜, 惊讶于小孩的语言创造力.

回普吉的船上, 看到一个老外身穿红色利物浦 16 号球衣. 于是凑上去聊足球, 从哈曼, 杰拉德, 一直到去年的冠军杯, 我不能确认我说的是不是他都能听懂, 反正也算是谈的热火朝天, hoho, 天下球迷就是一家啊.

6 号就是星期六, 回到普吉码头上就看到到处在散发周末在 Patong 举行的泰拳比赛的广告. 晚饭是在泰国吃的最好的一顿, 包括有生来吃的最好吃的炒饭(可能是把炒饭在菠萝船里再略略蒸一下), 然后就是烤了一对大虾. 这里海鲜的价格都是以 100 克为单位, 这虾的价格和龙虾一样, 都是 180 铢, 就是说大致相当于 180RMB/斤.

7 号中午, WTS 把我们从 Kata Beach Resort 运到普吉机场, 飞回了曼谷. 由于我们订的 WTS 服务就到此为止, 下飞机后我们就只能自己打车回 Arnoma 了. 曼谷机场的 Taxi 好像没有打表的概念, 必须和他讲价, 本来谈好的是 300 铢包括高速费. 但到目的地后司机又突然说当初谈的是高速费我们另外出, 争执了一会, 直到 Arnoma 的 doorman 过来问出了什么事, 司机才作罢.

当天下午老婆开始执行购物大计, 在宾馆杀了个三进三出. 由于达达下飞机后就一直午睡, 我只好配着她老老实实呆在房间里, 生怕她起床后发现老爹老妈都不在进入狂化兼暴走状态. 具体购物流程我也不甚清楚, 总之 Arnoma 旁边有一个手工艺品市场, 东西都是在那里和 Big C 买的. 在商场里面购物满 2000 铢可打折, 总购物价格超过 5000 铢的可以在出境的时候退税.

晚饭实在没有想法出去找吃的, 而且 Arnoma 身处闹市, 附近的饭馆都是很贵的. 于是在泰国的最后一顿晚饭就是老婆在 Big C 的快餐店买了一些东东带回旅馆吃. 泰国的黑胡椒烤翅还是很有特色, 我们达达吃了无数.

8 号早上国际长途开始源源不断的打到手机上. 可能正是游客逃离泰国的高峰时期, 总之曼谷机场出境checkin的地方队伍长的一塌糊涂. 正当大家认为肯定无法按时登机的时候, 奇迹出现了: 我在一个无人的checkin口询问工作人员的时候, 她看到我抱着小孩, 主动帮我们办了登机.. 带着小孩就是有优待啊, 泰国人民真好.

每个外国人离境的时候要交 500 铢的服务费, 据说是类似机场建设费的名目, 不爽.

泰国机场和北京不一样. 免税区在安检之前, 就是说安检之后就不能随心所欲去买免税产品了. 由于登机时间快到了, 我们只能匆匆忙忙买了很少的东西, 而安检之后既使晚点也只能无聊的等待. wuwu....早就看上的 26$ 1000ml 的黑方没有机会去买了.

Topic: 生活

皮皮岛 5/4

按照达达的想法,能永远在这个拥有 5 个动画频道的旅馆里住着就好了,但这可不行,我们紧接着就要去皮皮岛了,那里才真正是度假的天堂,传说那里有着亚洲最好的海滩。

普吉有公路桥将其和大陆相连,开发所需要的物资可以很方便廉价的运送到岛上,而且经过许多年的经营,早已人满为患。皮皮岛就不一样,旅馆价格比较贵,夜生活也简单,所以去的人也少。

旅游服务全面而有效,一大早就派车将我们从 kata beach resort 接到码头,同行的还有几个老外,我们挤一辆丰田。到了码头,就有人向衣服上贴标签,标示是属于什么旅游项目的或目的地是什么旅馆的。整套航运过程安排如下:
1. 大船首先将所有游客接到皮皮岛的码头,这种大船可以搭乘很多人,而且航运距离远,安全要求高。
2. 一部分乘客上岸游玩;一部分乘客换小轮船环岛航行。大船吃水深,也不适合做环岛的航行。
3. 乘小轮船的乘客一部分是直接去岛上旅馆的,一部分是参加环岛一日游项目的,我们是属于另外一类,先环岛一日游然后再去岛上的旅馆。
4. 环岛一日游的乘客返回码头换大船,我们继续乘小轮船去预定的旅馆,同时小轮船也接上在皮皮岛住够了返回普吉的人,将其接回大船
5. 最后大船把人带回普吉

皮皮岛的海滩非常浅,我曾经从海边向海里步行50米左右,海水仍然只是到胸口,所以如果要从轮船上岸,还必须换乘小木船,弄得我们一路上上下下,不胜其烦。

我所参加的一日游项目如下:
1. 首先到一个叫 longbeach 的地方登录,领上设备去浮潜(Snorkeling)。我参加了浮潜,但是感觉没有意思,鱼一点也不多,可能是因为没有带面包喂鱼的缘故?不过后来知道皮皮岛附近的 Bamboo 是浮潜非常棒的地方。
2. 午饭,主食是烧烤,一根长铁钎串着鱿鱼、鸡肉、洋葱、西红柿、鱼肉、甚至芒果,味道不错
3. 环岛航行,皮皮岛实际上是两个岛,北边的岛上有旅馆,南边的岛则被严密保护,《The Beach》就是在这里拍摄,部分沿岸的岩壁还是典型的喀斯特地貌,有鸟筑巢,也有人在这里采燕窝。

我们在皮皮岛上订的是 Holiday inn,比曼谷的 Arnoma 都贵上不少。住的是独立的小木屋(Bungalow),提供的香波沐浴液都是 Red Earth,没有浴缸,岛上用淡水洗澡太奢侈了。淋浴的水也略咸,明显是海水淡化处理的。在衣柜里面发现一只壁虎,随后看到床头柜前的旅馆说明里面提醒游客 gecko 对人无害,hehe,gecko 当然是好东西啦。

晚饭很贵,物价果然比普吉要高不少,当然,掺了椰奶的 Tom Yam 汤别有风味,我和老婆商定回国后也学着试试。

PS: 回国后发现电影《拳霸2:冬荫功》的名字就是 Tom Yam Goong,点了几次 Tom Yam xxxx 后,我们最后认定 Goong 应该就是虾的意思.

 
Topic: 生活

Kata海滩 5/3


Kata Beach Resort 有 5 个幼儿电视频道,迪斯尼的英语、泰语各一个频道,一个尼克动画频道,一个少儿综合频道以及一个少儿电影频道,简直就是儿童电视迷的乐园。尤其是对于我们家达达而言,根本不管英语还是泰语,第一天晚上严重打乱了作息规律。

在 Agent 那里已经登记了宾馆信息,一大早我们就在旅馆前厅等候,8:20 左右就有一辆小面包开过来接我们去 elephant trekking 地点。

象背上架一个木制的椅子,我们一家三口就挤在椅子上。驭者骑在象的脖子上吆喝着指挥其前进。所谓 trekking 其实就是骑象上山下山,细节就不必说了。这个驭者挺好的,还会说几句中文。问起来说是在昆明待过,而且在上海呆过一年。他给我演示在橡胶树上割一刀,橡胶汁就慢慢渗出来,然后他指给我们看那棵树上已经凝固的橡胶,让我们抓在手上弹弹。路上他给我们揪了三根大象毛,每人做了一个套在手指上的圈圈;并且主动要了照相机给我们和大象合影。感觉这里的旅游服务业还是很专业的。

乘车返回旅馆的路上我实在无聊,于是和两个看起来用网易拍之类产品的老外 mm 主动搭讪。问从那里来;英格兰。再问哪个城市;伦敦。实在没有问的了,就问喜欢足球吗;喜欢。伦敦球会我就会知道阿森纳和切尔西,热刺究竟怎么发音有些拿捏不定。于是问喜欢这两只球队的哪一只;喜欢曼联。呵呵,总算找到共同语言了,接下来问她们怎么看待美国人的入股......到这时发现复杂的句式交流起来还是不行,她们听不懂我问的问题。我只好把我认识的曼联名字挨个念一遍,说到鲁尼的时候双方均表示遗憾,一个 mm 还给我比划骨折的具体部位,然后一起感叹英格兰的世界杯前景不妙。

这天下午终于来到海滩边上。Kata 的沙很细,沙滩上没有贝壳,这点和后来在皮皮岛的沙滩形成了鲜明的对比。Kata 的浪比较大,旅游手册上说 Kata 是普吉岛上有限两个可以玩冲浪的海滩之一,如果有钱有时间,可以在这里上冲浪课,尝试一下平常不可能接触的运动。达达第一次接触大海,先是在沙滩上堆城堡,然后就享受在海水里浸泡了。

由于是我头一次在日光下爆晒,没有任何经验,就在大日头下呆了半个小时,上身就被晒成了煮熟的大虾状,一直等到回北京的几天后,才开始慢慢的掉皮。

晚饭有一道菜是黄咖喱和蟹肉一起煮,非常好吃。终于开始享用这次假期了...

Topic: 生活

曼谷CBD 5/2

行程计划 2 日下午2:30的飞机去普吉岛,所以上午也不能安排时间不可控的活动,只好在 Arnoma 附近逛街。

Arnoma 左近除了 Big C 外,街对面就是 Central World Plaza(以前叫世贸中心,World Trade Center,可惜当时还在装修中)和伊势丹。从 Arnoma 一楼餐厅临街的大落地玻璃窗向外看去,是小汤哥最新的 M.I.Ⅲ 广告,还有远远高楼顶上的巨幅 Johnnie Walker 商标,提醒人们这里实际上是亚洲最具活力的中心城市之一。

从 Arnoma 出来沿街向南走几分钟,十字路口处就来到曼谷另一处有名的佛教供奉地:四面佛。虽然在导游手册上把四面佛列为和大皇宫卧佛寺晓寺同一级别的观光地点,但比较起来是简陋的不可救药 —— 方圆仅20米(可能还不到)的围栏,中间是一座佛龛,没有任何建筑物为其挡风遮雨,也没有门票。我们观访的时候,佛龛四面都是用布幔挡着,看不见真身(后来知道是因为前不久被人毁坏)。由这里经过的行人几乎都是匆匆向它双手合十口中祝祷一句然后继续赶路。

Siam,暹罗的音译,虽然现在这个国家改名为泰(Thailand),但 Siam 仍然在广泛使用,好比我们现在仍在用"汉"甚至"唐"来称谓。我们在 5/2 日曼谷逛街的重点就是 Siam Square 的 Siam Paragon。因为 Siam Paragon 介绍说有东南亚最大的海底世界,才决定到那里。10:00 正式营业,杀进去的时候发现一楼就是"大食代",觉得倍儿哏。基本上类似赛特国贸这样的商城,东西都比较贵。在小孩物品那层看到一些好玩的东西,比如圣斗士的圣衣,小孩的游戏机,以及一个连我都认为极具可逛性的文具店。本来在这个文具店里计划回头买不少东西,可惜时间不够,再没有机会回到这里。

午饭就是在这里的大食代解决的,发现这种最为正规的餐馆最后结账都要再计 10% 的服务费和 7% 的税。在这里的泰华农民银行的 ATM 机上发现它支持我们的银联卡取钱。

再次体会到 WTS 的好处,我们就在酒店大堂等着,然后就有人来问是不是 WTS 的顾客,挺准时,接着把我们接到机场。从曼谷到普吉很快,1 小时后就在普吉降落了。下了飞机又是 WTS 把我们从机场运到了 Kata Beach Resort

这回 Kata Beach Resort 的 Doorman 很卖力的将我们的行李送入的房间后,开始滔滔不绝的介绍起客房内的设施,突然停了下来,似乎在等待什么。我反应了一会才明白是在等小费,正准备掏钱,结果这个家伙等待得不耐烦认为我没有会意,于是继续介绍贴在房门背后的逃生通道。我忍无可忍赶紧塞给他 20 铢和一句"Thank you",然后将其锁在门外,这是我这辈子第一次给别人小费。

在普吉岛上除了下海晒太阳,如果还想别的什么旅游项目就得自己出门找 Agent。这里到处都是挂着"Tourist Information"的小店,由于我们携带幼儿一名,不可能选择特别复杂长时间的项目,最后找的是最简单的"elephant trekking"+"young elephant show",我们宝贝太小免费,大人每人 850 铢,说实在的也不便宜。试图讲价,问有没有 discount,结果没有讲下来(当时也是时间很晚了,而且订的是第二天一大早的项目,Agent 肯定不会让步)。

出发之前在国内只兑换了 5000 铢,算上 elephant trekking 的费用的话身上就所剩无几了。正好这里唯一的 ATM 机上可以使用银联卡,于是用我的长城借记卡再次取了 5000 铢。

我们预定 elephant trekking 的那家 Agent 主业是网吧。每分钟1铢,15分钟起....比中国的网吧贵多了.

普吉最有名的海滩是 Patong Beach,因此人也多,也据说有些开发过度,酒吧等娱乐场所很多。本来我们也是预定 Patong 的旅馆,实在是因为没有订到才选择 Kata。Kata 也自有其好处,人少,真要是度假,还真是应该去这种人少的地方,而且已经有了一家 7-11 便利店,我觉得足够了。

 
Topic: 生活

晓寺 5/1

"塔的重叠感和重复感几乎令人窒息。充满色彩与光辉的高度层层积累而上,越向塔顶越细,仿佛是多重的梦从头上压下来似的。陡立的台阶的垂直面,也布满了花纹,每层都用浮雕的人面鸟支撑着。一层一层尽管被多重的梦、多重的期待、多重的祈愿压毁,仍然不断地积累,向天空徐徐逼近而形成一座绚丽多彩的宝塔。" —— 《晓寺》,三岛由纪夫

不愧为旅游城市,曼谷的机场和旅馆放置了各种版本的地图导游手册。很早就起来研究印制精美的地图,大皇宫(The Grand Palace)肯定是要去的,遂在大皇宫附近寻找还有什么可以当天一并游玩的古迹。该地图由英文日文两种语言标注,"晓の寺"引起了我们的注意,这可不就是三岛的《丰饶之海》里面的晓寺?从地图上看晓寺(The Temple of Dawn)离大皇宫仅有一河之隔,于是决定游览大皇宫后就去晓寺看看

地图上很明显,曼谷的老城区依湄南河而建设,而商业区,也正是我们下榻的 Arnoma Hotel 所在的地方,则位于老城区正东很远的地方。看得我这个来自北京的中国人很郁闷,如果一开始毛爷爷就决定从通州开始建设新北京就好了,而如今只能看看北京二环内一点点的被破坏殆尽。

早餐是免费提供的(后来发现我们住的所有旅馆的早餐都相当丰盛,而且提供到上午10点,其实相当于北京时区的11点,如果利用得当,可以节省一顿午饭钱),在开始品味异国风味的水果时"给小费"这个念头突然浮现在脑海中,我赶紧同老婆讨论这个问题,她告诉我出发前就网上搜寻到的资料如下:泰铢纸币最低面额是 20,硬币最高面额是 10,给小费 20 即可,但不能更低,因为硬币是打发乞丐的。BTW:目前大致的汇率为 5 泰铢兑 1 元人民币。

计划从酒店打车去湄南河水上轮船的起点站,然后坐船去大皇宫,一路上还可看看河流沿岸的风光。出租车司机用中文和我们交谈,自称是潮州人,一开始竭力毛遂自荐直接把我们带到大皇宫,遭冷遇后把我们拉到了一个小码头,这里因为都是小船所以坐船很贵,虽然水上BUS的大码头离这里不远,但是还是绕了相当的路途才走到。后来我们总结如下:如果私营服务业者用中文和你说话,肯定会宰你一刀。

大皇宫门票很贵,250 泰铢,实际也还合理,毕竟人家的地位相当于北京的故宫。穿短裤者不得入内,但进门的地方提供了给游客免费准备的长裤和长裙,交纳 100 铢压金即可。

大皇宫内玉佛寺(护国寺?)内供奉的翡翠玉佛对于我来说没有任何吸引力,反而是绘制《罗摩衍那》的长廊让我产生了强烈的兴趣,可惜旅行之前没有做好功课,根本不知道画的是什么内容。除此外我觉得吴哥窟的模型也十分不错。大皇宫内时常可以见到一些明显是中国风格的泥塑,比如类似吕洞宾造型的人物,捧桃的猴子,据老婆胡诌说是因为曾有中国人当过泰国皇帝的缘故。

从大皇宫出来后找了一个餐馆,首次拿起满是英文的菜单点菜,因为临行匆忙,甚至连本英汉词典也没有准备,顿时有种哭笑不得的感觉。除了对捧着的东西叫 menu 这个单词异常熟悉以外,别的什么 prawn/fried 这样的单词都是日后慢慢自己悟出来的。

泰国有种叫 shakes 的饮料,可能是因为天气炎热,当地人把果汁和冰渣混合制成了各种各样的 shakes,饭馆里通常价格在 50-70 铢之间,后来基本上每顿饭我们都会要上一份 shakes。

第一顿饭下来就发现泰国物价实在是便宜,这个餐馆看起来还算不错,而且在著名旅游点大皇宫附近,但我们4大人1小孩吃下来只要 525 铢。事实上从这里出租车价格也能看出来,起步价 2 公里 35 铢,然后每次蹦字都只有 2 铢。

午饭后摆渡到对岸,直奔晓寺。在围绕晓寺的高塔拍了许多照片后实在受不了午后的太阳灼射,打车回旅馆午睡。

旅游Tips:应该在日出的时候首先到晓寺参观,然后到对岸去大皇宫,卧佛寺,这样的组合更合理一些。

晚上出去吃饭的餐馆的领班是泰国第二个用中文和我们对话的,结果是吃到了一顿巨不划算的饭。可能并不怪那个餐馆,因为我们住的旅馆附近本来就是商业区,试想在北京国贸附近想吃一顿经济实惠的晚饭对旅游者来说也是一件很困难的事。

晚饭后去旅馆隔壁的 Big C —— 类似家乐福或沃尔玛的一家大超市。发现 DQ 冰激凌超级便宜,总结:如果要在 Arnoma 附近吃饭想省钱就去大商场找"汉堡王"这样的快餐店或者"大食代"这样的地方。

 
Topic: 生活

风兰假期 4/30

老婆的密友之一 A 的老公 B,两年前在泰国工作了几个月,对当地的风土人情算是有一定了解;这次5/1邀请我家一起去泰国度假,遂欣然前往。

风兰假期Royal Orchid Holidays)是泰航推出的一项特别服务,除了机票之外,还包括了旅馆预定,以及 WTS 的机场接送服务.

在北京机场登机的时候就体会到带小孩的好处,可以和头等舱的乘客率先登机,不晓得国航有没有这样的体贴,反正从一开始就对泰航增加不少好感。抵达泰国的时候已近午夜,航班给每位乘客准备了一朵紫色的兰花,风兰之旅就这么开始了。

设想你地处异国他乡,从机场到酒店实在是不那么可靠的一段路——机场通常建在城市远郊,有高速费过桥费,既要和司机讨价还价,还要担心他给你绕远,甚至谋财害命也不是没有可能。而这次泰国之行 WTS 就解决了我们从机场到酒店的接送问题,由于我们一行是 5 个人,所以还是配置不错的丰田小面包车,非常舒适。

一出曼谷机场大楼,就吃了一惊,满眼看去都是日本车,丰田的牛头标志似乎无所不在(后来发现这里的出租车基本上都是花冠/Altis或者limo),在跟随 WTS 的司机穿梭在停车场之间的时候,只看到两辆非日本车——都是奔驰。日本车+奔驰,这就是我对泰国的第一印象。

到达 Arnoma Hotel 时已经是疲惫至极,checkin 的时候还收了每个房间 100$ 的押金。服务生帮我们把行李送到门口后,我昏头昏脑的将行李从他手里一把夺下扔进房间内,然后毫不犹豫的关上房门,到头大睡。

只剩下一个等待小费的服务生讪讪离去,2006年4月30日到此结束。

 
Topic: 生活

对面的男孩看过来

前天在出租车上,听到改编的《对面的男孩看过来》,顿时陷入 yy 中,想像如下唱歌场景:

dada:对面的男孩看过来
dada:看过来看过来
dada:这里的表演很精彩
data:...
data:不要被我爸爸样子吓坏
qyb:其实我,很可爱
....

现在她喜欢看《蚯蚓日记》,里面有一幕:
小蚯蚓走过父母的结婚照前,那照片上是两只蚯蚓在互吻,小蚯蚓撇嘴说:"恶心"

dada 学会"恶心"这个词后乐不可滋,我和老婆就故意在她面前碰碰嘴,她就大笑着说"恶心"

 
Topic: dada

当用 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: 技术
订阅 RSS - qyb的博客