Archive for the ‘胡言乱语’ Category

cx_Freeze打包gevent时遇到的问题

Saturday, October 8th, 2011

写python就是个玩蛋的活,还是cx_Freeze,在mac osx下打包gevent程序提示无法import的错误,gevent,greenlet都是easy_install安装的,程序里引入木有问题的,只有cx_Freeze打包时提示错误。

鉴于之前的经验,这次没作无谓的抵抗,直接去cx_Freeze的源代码里调试,几经折腾发现cx_Freeze这厮是不能从包好的egg里import的,在Freebsd环境下easy_install安装后的egg其实是个文件夹,而在mac osx和windows下egg是个压缩包,于是将egg原地敲碎释放在site-package目录下就好了。

顺便处理一个小warnning

/Users/zhangdi/Downloads/test/gevent_test/output/dist/main/gevent/socket.py:788: DeprecationWarning: gevent.sslold is deprecated; use gevent.ssl instead (install ssl package from PyPI)
直接去代码里改一下就可以了

freebsd amd64安装vmware-tools

Wednesday, August 24th, 2011

freebsd7.3 amd64

最小化安装,ports安装perl

点vmware菜单install vmware-tools。

然后mount /cdrom

解压缩/cdrom里的文件到其他目录,俺放到/tmp下了。

运行安装脚本,脚本的默认perl路径是/usr/bin/perl,默认ports按照到/usr/local/bin/perl呢,ln一下,安装过程中还有个pl脚本呢,改pl文件就不那么方便。

64位系统提示需要安装compat6x-amd64

pkd_add -r compat6x-amd64安装一下。

重新之行脚本,安装完成。

悲催的解码问题

Wednesday, January 12th, 2011

txt = u’11%u6708%u4EFD%u603B%u7ED3%u4F1A%u8BAE%u901A%u77E5.doc’

>>> print re.sub(r’%u(\w{1,4})’,lambda s: unichr(int(s.group(1), 16)),txt)
11月份总结会议通知.doc

上次遇到的,我很弱智的用了正则,今天知道个原来可以这样

print “%u4f60″.replace(‘%’, ‘\\’).decode(‘unicode_escape’)

nginx 文件显示不全

Wednesday, November 10th, 2010

早上配置测试服务器时几张大图显示不全,刷新几次无效,于是开始查资料,发现nginx fastcgi的几个参数

fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;

其中一篇文章写到:nginx会使用fastcgi_buffer_size指定的大小的缓冲区用于缓存fastcgi流的内容。当大小超出此大小时会继续用fastcgi_buffers指定的数量和大小申请缓冲区。如果依然超出此大小,会将多出的内容写入临时文件。
原文在这里

不过我的图片并没有走fastcgi,整个项目还算复杂,应用的每个都从前端proxy到各个应用服务器,于是想proxy是否也有这个设置呢,翻下proxy的,果然有

proxy_buffer_size         32k;
proxy_buffers             4 32k;

根据文件大小修改了一下,问题解决。

vim刷新firefox

Monday, September 20th, 2010

yangsong 同学分享了一篇vim保存文件时刷新firefox的文章,用到了firefox的插架监听个端口通信的。貌似window下还用不了。我这firefox已经够慢了,对插件相当的节制,所以做个了发消息的,开始刷新IE很简单,sendmessage就行,firefox比较哏,屏了,只好去模拟按键……

代码如下

/*
 * jondynet http://jondy.net/
 * gcc firefox_f5.c -DWINVER=0x0501
 */
#include "windows.h"
#include "Winuser.h"

int main (int argc, char * argv [])
{
    HWND hwnd = FindWindow ("MozillaUIWindowClass", NULL);
    if (hwnd == 0)
    {
       MessageBox (0, "Where is firefox!", "Error", MB_ICONINFORMATION);
       return 0;
    }
    //char buffer[300];
    //SendMessage(hwnd,WM_GETTEXT,sizeof(buffer),(LPARAM)buffer);
    //MessageBox(NULL,buffer,"Captured Text",MB_OK);

    SetForegroundWindow(hwnd);
    //Sleep(2000);

    // minimize
    //SendMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0);

    // ctrl + f5
    //PostMessage(hwnd,WM_KEYDOWN,VK_F5,0);
    //PostMessage(hwnd,WM_KEYUP,VK_F5,0); 

    //PostMessage(hwnd,WM_KEYDOWN,VK_CONTROL,0);
    //PostMessage(hwnd,WM_KEYDOWN,'R',0);
    //PostMessage(hwnd,WM_KEYUP,'R',0);
    //PostMessage(hwnd,WM_KEYUP,VK_CONTROL,0); 

    // SendInput
    INPUT inpdd[1];
    KEYBDINPUT kbyinp; 

    kbyinp.wVk = VK_F5;
    kbyinp.wScan = 0x3F;
    kbyinp.time = 0;
    kbyinp.dwFlags = 0;
    kbyinp.dwExtraInfo = 0;
    inpdd[0].type = INPUT_KEYBOARD;
    inpdd[0].ki = kbyinp;
    SendInput(1,&inpdd[0],sizeof(inpdd[0]));

    //关闭
    //PostMessage(hwnd, WM_CLOSE, 0, 0);
    return 0;
}

vim的设置看这里
" autocmd BufWriteCmd *.html,*.css,*.tmpl :call Refresh_firefox()
" function! Refresh_firefox()
"   if &modified
"     write
"     silent !firefox_f5
"     "silent !echo  'vimYo = content.window.pageYOffset;
"     "             \ vimXo = content.window.pageXOffset;
"     "             \ BrowserReload();
"     "             \ content.window.scrollTo(vimXo,vimYo);
"     "             \ repl.quit();'  |
"     "             \ nc localhost 4242 2>&1 > /dev/null
"   endif
" endfunction
silent !firefox_f5 这个是调用俺这个的,下边注释的那个是用插件的。