博客

Ironpython 生成 exe 文件的时候加入 ico 资源

分发 windows 下的 python 程序的时候,免不了要生成 .EXE 文件提供给最终用户。在 Ironpython 里,微软的例子里是有一个 pyc.py,利用 .Net Runtime 提供的 API 将脚本转成 DLL/EXE;Ironpython 2.6 发行的时候,干脆直接把这个 pyc.py 放进了安装包。

但是我在使用 pyc.py 的时候,觉得很不爽的一点就是不能像 py2exe 那样,指定一个 ico 文件作为 .EXE 在桌面环境下的显示图标。俺觉得 .Net 怎么也应该对 win32 desktop 有点特别的支持啊,于是就是好好研究了一下是否简单修改修改 pyc.py 就能搞定这事。

最后找到如下信息:
  1. .Net 下生成可执行文件有两种方法:Reflection.Emit vs. CodeDOM
  2. pyc.py 是 Reflection.Emit 方案
  3. c# 编译器提供了一个 win32icon 选项
  4. 顺藤摸瓜,在 .Net 环境里的 CompilerParameters 类的 CompilerOptions 可以指定 win32icon
  5. 然而这个 CompilerParameters 是 CodeDom 这个思路里的,所以简单修改 pyc.py 是不可行的
  6. 纠结的是 Ironpython 1.1 尚有 IronPython.CodeDom.PythonProvider,但 2.0 开始就消失了

结论就是,用2.0/2.6的话就别想一次性编译搞定了,用 1.1 的话也许能实现目标——不过近期内实在是没有闲心去弄这个了

话说 codedom 可以搞出一些很牛逼的应用,比如把 c# 代码转换成 ironpython 代码。当初 SharpDevelop 刚刚集成 Ironpython 1.1 开发的时候就搞了几个相关特性,后来集成 IP 2.0 的时候被迫去掉了。现在 SharpDevelop 换了个思路,利用抽象语法树又重新一一实现

Topic: 技术

幸福是什么

幸福有很多种。

对我来说,在目前这个阶段,能去现场看国际米兰的每场比赛,那就是幸福。

如果去不了现场,在电视上看,那也是幸福。

如果电视不转播,在各种媒体上看赛后结果、评论,还是幸福。

如果以后成绩不好了,没事时回忆回忆这几年的幸福,静候下一次的辉煌,依然幸福。

——写于意大利杯四分之一决赛 89 分钟打入致胜一球 2:1 淘汰尤文图斯之际

Topic: 运动

一道小学一年级寒假数学题

把 2,3,4,5,6,7 六个数,填入如下图的空中,要求每条边三个数的和相等

是不是已经有点夸张了?

但更雷人的是要找出3种不同的方案!!(对于以为滚一滚就能弄出三种方案的同志,我得提示一下,应该是有4种方案的——三边之和分别是 12/13/14/15)

这个我就觉得完全超出了一个7岁儿童的思维能力...我相信就算是一个成年人,没有经过对数字敏感度的训练,也无从下手呢.

Topic: dada

GMail 最近的邮件会话整理有 bug 啊

无图无真相:

分别是一个15封信的会话,和一个7封信的会话;但在 GMail 里是 4 个会话

Update:
突然想明白了,GMail 回复邮件时候,如果修改了主题,会切换新的 message-id,它这里把 Re 加到中间了

Topic: 技术

IronPython 里实现进程单例

前言:在寒冷的互联网冬季,偶决定写一个小小的 IronPython 程序,充分发挥一下鄙人的无赖精神,以娱乐自己.

========== 我是分割线 ==========

有时候,希望自己的程序只能启动一次,而不会运行多个实例。在 .Net 下可以通过 System.Threading.Mutex 做到这一点,直接上代码:

MUTEX_STRING = "sohumailcenterblarblar"

if __name__ == "__main__":
from System.Threading import Mutex
m = Mutex(False, MUTEX_STRING)
if m.WaitOne(0, False):
main = Main()
Application.Run()

Topic: 技术

自我审查

前不久,我们根据某单位精神,对某产品实施了一次自宫。结果人家反馈回来,"你们执行的有点过了,某某功能还是加回去吧".

我哑然失笑,想起了我周六和赵老师聊天说的,"这种审查最恶心之处,在于它没有明确的标准,而是让你自我审查,让你自己去试探自己的底限,人要犯贱起来是很可怕的;和白痴一起工作,会降低你的智商,和流氓打交道,会降低你的道德水平"。当你自觉不自觉的做了一件坏事,然后又一件...几次后,会发现原来做坏事也就那么回事。刚开始还天人交战,后来就心安理得了...最终,你就真正成为了工具。"守身如执玉",这是一步也错不得的。

所谓ICP备案,也是强迫自我审查的一个手段。qyt 同学早就对我们 blog 页面最后一行备案号深恶痛绝。。。估计就这几天吧,俺们就搬到国外主机上去啦.

Update: 早上想到中小学时候写检讨,还有我党的三大优良作风之一批评与自我批评,都是类似奴化的工具

Topic: 社会

周末攀冰活动

地点是密云的桃源仙谷。据说这里还挺有名,不少南方的户外爱好者冬季会飞过来玩好几天的


上午刚到的时候,还没有什么人...到了中午11点,人就密密麻麻的了

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


俺们先是找了个缓坡复习了一下上升器和8字环的用法

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


可惜没有偶通过近90度冰壁的英姿。这一段也差不多有70度吧

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


最后来一张本人的正面照

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

总结:重温了雪鞋冰爪,见识了冰镐冰锥;攀冰很有意思,比滑雪安全,但酷多了,hoho

Topic: 运动

有关全文搜索

本周,sohu.com 的邮件全文搜索功能上线

作为免费邮箱提供商,得具备两个核心技术,一个是海量信息的处理能力,一个是用户产品的开发能力。全文搜索这个功能,就属于上述的第一个能力。不得不承认网易在这方面还是很强,把附件内容,压缩文件的搜索也做了进去;俺们的搜索,纯粹从开发角度看好像差一点就能达到,不过行百里半九十,这方面技术积累上的差距不是一两个季度可以弥补的。再过一年,或许我们也能玩玩压缩文件/附件搜索了。

其实用户执行搜索的可能极低,但一旦其开始搜索,对速度和准确度的要求又非常高。有时候会纠结花这么大的功夫提供性价比(用车东的话说"读写比")这么低的服务是否值当,后来想明白了两件事:所谓服务器,就是干冗余的活,但是让用户生活简单舒服的;其次如果不能合理成本的提供这样的服务,其实是IT能力有问题,应该想法改进技术(或者转换商业思路),而不是就此不做。

和海量信息处理能力相关的还有很多其他的事情 ,比如反垃圾邮件,比如保持多长时间未登录用户信件...2010还有很多东西等待去改进。

Topic: 技术
订阅 RSS - 博客 | BT的花