2008年04月22日

新装系统,登录MSN总是失败,为什么?

经过跟踪,发现是缺少安全证书。解决方法很简单: 登录http://login.live.com ,接受所有的证书。重新登录就行了

2008年02月17日

修正linux下ls输出的目录颜色,让putty用起来更舒服

putty 是一个非常小巧的ssh客户端,但是linux 下,ls目录的默认颜色输出是深蓝色,在putty里看起来非常吃力,于是我就差了一下资料稍作了一点修改,让目录颜色开起来舒服一些。如下:

打开 /etc/profile

最后添加一行

declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"

2008年02月02日

3篇不错的 php 文章

三个关于php开发及优化的连接

优化PHP代码的40条建议
http://www.yeeyan.com/articles/view/davidkoree/4409

25个顶级PHP模板引擎
http://www.yeeyan.com/articles/view/2930/1993

PHP测试驱动开发介绍
http://www.yeeyan.com/articles/view/2930/1765

2008年01月13日

我对WTL架构的解读

这两天需要用WTL进行开发,于是找来几篇WTL教程来研读。一不留神,想到一个关于架构的想法。

1. m_hWnd 是窗口系统的核心数据
2. CWindow系列的类都是对这个核心数据的操作方法的封装
3. 使用多继承,来集合这些不同的操作套装
4. 使用宏,完成在这些操作套装之间的调用传递

类似的,可以考虑一种OO开发方法与传统 程序=算法+数据结构 的密切结合点
这样做的好处就是核心业务的数据可以高度抽象,高度聚合,不被庞大的类,对象之类的其他代码所干扰
核心数据和操作可以自由拆解和组合,并且,核心数据可以自由的进行传递,而不再受制于庞大复杂的类和各种技巧封装的对象

2008年01月09日

从 CUI管道 到 GUI 管道

*nix下的强大的管道功能将*nix系统支撑了几十年,可是自从图形界面出现以来,始终没有一个类似的技术同 *nix 下的管道组合能力 想类比,更不要说替代了。

今天突发奇想,如果每个GUI进程启动,都需要指定一个 ParentWindow ID 是不是就可以对窗口进行组合了?于是,动手做了一个测试:
用spy++抓取 Editplus的编辑器窗口的HWND, 然后在另一个程序中 CreateWindow, 并指定ParentWindow为Editplus的编辑器窗口。创建成功!
接下来就发现第二个问题,编辑区的刷新跟新建窗口的刷新需要协调。扩展开来进行思考,就是需要制定一系列窗口之间协作的规范。

下一个问题就是如何组合消息的问题了。

有待进一步思考

2007年12月25日

想要的编辑器

功能应该有:


  1. 语法高亮

  2. 自定义语法

  3. 16进制编辑

  4. 自定义插件

  5. 通过自定义插件支持lua/python 进行插件开发

  6. 插件可以重绘编辑区

  7. 最好可以跨平台,Linux/windows就足够了

  8. 可以导出,保存个人习惯设置

  9. 可以导入 vi emacs editplus等编辑器的习惯设置

  10. 可以设置在A模式进行编辑时,进行另一种编辑方式使用提示

  11. 可模拟vi的命令模式

  12. 自动完成提示

  13. 类成员提示

恩,就这么多,,,好多的功能阿

2007年12月18日

对昨天那个流氓的分析

msnet.dll 是个外来的dll, 不过既然被 explorer 作为模块装载了,就一定写过注册表。要找出来很简单,打开 regedit, 搜索 msnet.dll
很快搜索到一些结果. 很简单,他只是注册为 explorer的一个 hook,叫做 CopyHook.
另外,又查了一下这个dll的导入和导出函数, 有4个:


  1. DllCanUnloadNow

  2. DllGetClassObject

  3. DllRegisterServer

  4. DllUnregisterServer


想来应该是注册为钩子必须的4个函数吧。别的,就没什么新鲜的了。这下,要扩展explorer应用,知道找CopyHook了, :D

手工解决一个流氓软件

这两天做客户端开发,为了抓http协议,自然少不了使用 fildder(一种http 嗅探器)。 结果抓到了很多到 go.gouu.cn 的 http 请求,每秒一个,而且还带上了我的MAC地址。十分恶心。
于是决定铲除这个流氓。


  • 步骤一:
    打开任务管理器,关闭所有可疑进程。fiddler依然可以抓获到 gouu.cn 的请求,本步骤失败。

  • 步骤二:
    检查注册表是否有相关信息 。 打开regedit, 搜索 gouu.cn 。 无结果,本步骤失败。

  • 看来,这个流氓不是独立进程,而且很可能是个绿色流氓。


  • 步骤三:
    netstat -a -n -p 列出所有连接,并列出使用该连接的进程id. 失败,那个请求虽然频繁,但始终解析不到域名,应该没有进入有效连接状态。

  • 步骤四:
    延续上一步,既然他的请求是失败,那我让他做一次长时间的正确请求好了。 修改 hosts文件,增加 go.gouu.cn 这个域名,指向本地的apache服务。按照那个流氓请求的地址,写一个php程序,内容很简单,只有1行。 sleep(1000); 让他连上慢慢等吧。

  • 步骤五:
    再次 netstat , 抓到进程 id , 原来是 explorer 资源管理器。

  • 步骤六:
    用 tasklist /M 列出进程及所装载的dll.

  • 步骤七:
    从这个好长的列表里找出 explorer装载的 dll, 发现一个 msnet.dll, 十分可疑。(注,此步为重体力劳动,建议使用更先进的工具,如 Process Explorer)

  • 步骤八:
    从 system32下找到这个 dll, 改名,重起机器。


    • 终于没有哪个可恶的东西了。

2007年12月12日

WTL8.0 向导在 vs2003 遇到的运行时间错误

因为工作需要,又用回了 vs2003, 而且一定要用 WTL.
以前安装过 WTL, 但为了跟项目保持一致,于是使用服务器上的 WTL 包重新安装了 WTL8.0, 安装很简单,可是却在开始使用的时候遇到了问题。

WTL向导的每一页都会爆出 "运行时间错误","缺少 ';'" 这样的问题。自己调试了下,感觉是编码的问题,从网上搜到了2篇修改 WTL Wizzard 的文章,但看起来都对不上我的问题,照猫画虎的修改下,也完全不对路。

后来干脆把 \vc7\VcWizzard\2055\*.js 转存成 UTF8编码格式,然后就解决了

BTW: 这次倒腾,发现 vs.net 2003 目录下还有些不错的东西,比如


  • managedextensionsspec.doc

  • migration_guide.doc

  • vc7\2055\C# Language Specification.doc

2007年11月13日

passport方案

Memcache 服务有对象生命期管理,用来做 session 服务器浑然天成,一定很不错。再配合php的session_set_save_handler,实现起来就太简单了。

另外,验证码服务器也可以这样来实现。