当前位置

技术

技术

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: 

IronPython 里实现进程单例

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

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

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

  1. MUTEX_STRING = "sohumailcenterblarblar"
  2.  
  3. if __name__ == "__main__":
  4.     from System.Threading import Mutex
  5.     m = Mutex(False, MUTEX_STRING)
  6.     if m.WaitOne(0, False):
  7.         main = Main()
  8.         Application.Run()
Topic: 

有关全文搜索

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

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

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

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

Topic: 

Postfix 2.7 将引入动态选择源IP的功能

Major changes with snapshot 20100117
====================================

The FILTER action in access maps or header/body_checks now supports sender reputation schemes that dynamically choose the SMTP source IP address.

This is implemented by specifying FILTER actions with empty next-hop destinations in access maps or header/body_checks, and by configuring in master.cf one Postfix SMTP client for each SMTP source IP address, where each client has its own "-o myhostname" and "-o smtp_bind_address" settings.

这样,可以让信用更好的用户通过一个可信度高的 IP 发送出去,而其它的用户,则走另外的 IP

Topic: 

网易 SMTP/POP3 归来

今天一上班,就听到同事说了这个最新的消息。。我试了下两个月之前注册的 163 帐号,设置里 POP3/SMTP 缺省是打开的了

感想1: 网易用户应该谢谢腾讯,没有腾讯的直接压力,这个服务是不会有的

感想2: 在邮件领域,开放标准必胜。在 MessageService 领域,开放标准必胜。一个特殊例子腾讯,不过我认为它远远不是消息服务了现在

感想3: 有个缩写叫 fm 的产品会很尴尬. 我觉得推出 Fuck Me 163 的这个人,居然选择了我们的品牌名字做推广,要么过于无知,要么过于自大,更可能两者兼而有之;再和网易的哥们说一句,闪电如果翻译成英文应该是 Lightning,不是 Flash!

以上的恶言相向我已经忍了一年多,现在终于痛痛快快的在 blog 上说出来了,哈哈哈哈.... yes,yes, 我其实也算自大和无知的二者兼备

再次感谢腾讯 :)

Topic: 

关于 CMM

把互联网和 CMM 扯到一起看起来很怪异;但是,最近当我思考我们团队做项目的能力改进在哪些方面的时候,首先想到的就是7个字:能力成熟度模型。别的且不论,至少这个字面意思说出了我想要表达的。

这不仅仅是软件工程方法问题,Joel 测试得12分能保证互联网项目成功么?互联网商业环境如此多变,用户如此容易流失;用户安装成本是零,同时它'卸载'你几乎没有心理负担;我们的关系不是购销合同,而是不经意的鼠标点击;没有版本升级,永远是 beta;产品经理和技术开发的配合,从来没有像今天这样紧密无间。

再牛逼的UED,也阻止不了服务器给你蹦一个500;再牛逼的高性能高可伸缩性技术,仍然可能被用户骂一句垃圾。卓越的互联网产品背后,一定是有卓越的互联网团队。我们总是说产品/运营/技术缺一不可,但团队究竟是怎么样运行的,流程的好坏是否有一个衡量的标准,好像缺乏专业的研究。

研究工作归学者,这件事情本质上还是工程,是实践出来的,2010 我们还可以做的更好一点。现在我能去想象到的境界,也就是 Defined 这个级别;如今离 Repeatable 好像还有一点点距离....话说回来,在互联网世界,做不到第二级,早晚是死

Topic: 

给搜狐闪电邮箱用户圣诞礼物一枚

https://mail.sohu.com

这个还没有正式推广,因为对 IE 的缺省设定来说,要求所有的资源都是 https 的,否则用户会碰到很烦人的警告。

俺们的资源都在搜狐的 CDN 上,但给现在 CDN 都加上 https 支持不太现实。因此需要我们自己来想法搞定这件事,如果是 http 请求就调用 CDN 资源,如果是 https 请求就调用 mail.sohu.com 下的资源。程序还有几个地方要调整,部署资源的时候也额外多一道工序。

预计一季度会正式上线..

PS:半个小时前,收到了搜狗输入法的圣诞礼物——搜狗浏览器。我一边奇怪怎么输入法的更新对话框里多了一个谷歌搜索的正面推介,一边就毫无戒心的点了“下一步”,然后发现浏览器已经被安装上了。中午我还在和杨总说悲观的预期市场份额也就15%-20%,晚上就来惩罚我了。。。我。。。我平时还是多用 Fedora 吧

Topic: 
订阅 RSS - 技术