andelf fledna Feather

2010年12月9日星期四

DirectoryStorage 中 “No module named lock_file” 处理

好吧,其实是因为好多年前的模块。。。
发现了这个:
 Log message for revision 92364:   Removed the ZODB.lock_file module. Now depend on zc.lockfile instead.   
源代码中把所有的 ZODB.lock_file 改成 zc.lockfile 即可。
然后执行
G:\Plone>.\python\python.exe .\temp\DirectoryStorage_1_1_19\mkds.py .\var\direct orystorage Full bushy
然后Add ZODB Mount Point 即可。。。

2010年10月26日星期二

mysql命令行不执行和命令行中文乱码的解决

1:Mysql 命令不可以执行

原因 :呵呵 比如 show databases 的命令 ,执行完之后 啥也没有 ,仔细 找了原因 ,Oh my god  少了 分号

应写成:show databases;

 

2:命令行中文乱码问题

现象:mysql的默认编码设置为utf-8,页面以utf-8的编码方式写入到数据库。用工具查看一切正常,但从mysql的命令行读数据出来总是乱码。

 

原因:mysql的客户端根本无法以utf-8的形式返回数据,解决如下:

 

set names gb2312;

2010年10月16日星期六

JavaScript Operator Precedence

Precedence Level Associates Operator Operand Types
Operation Performed
1 Left [] MemberExp Expression
Left . MemberExp Identifier
Right new MemberExp Arguments
2 Left ( ) CallExpression Arguments Function Call
Left [] CallExpression Expression
Left . CallExpression Identifier
3 n/a ++ LeftHandSideExp PostfixIncrement
n/a -- LeftHandSideExp PostfixDecrement
4 Right delete UnaryExp
Call Delete Method
Right void UnaryExp Eval and Return undefined
Right typeof UnaryExp Return Type of an Object
Right ++ UnaryExp PrefixIncrement
Right -- UnaryExp PrefixDecrement
Right + UnaryExp UnaryPlus
Right - UnaryExp UnaryMinus
Right ~ UnaryExp BitwiseNot
Right ! UnaryExp LogicalNot
5 Left * MultExp UnaryExp
Multiplication
Left / MultExp UnaryExp Division
Left % MultExp UnaryExp Remainder
6 Left + AddExp MultExp Addition
Left - AddExp MultExp Subtraction
7 Left << ShiftExp AddExp BitwiseLeftShift
Left >> ShiftExp AddExp SignedRightShift
Left >>> ShiftExp AddExp UnsignedRightShift
8 Left < RelExp ShiftExp LessThanComparison
Left > RelExp ShiftExp GreaterThanComparison
Left <= RelExp ShiftExp LessThanOrEqualComparison
Left >= RelExp ShiftExp GreaterThanOrEqualComparison
Left instanceof RelExp ShiftExp Call HasInstance Method
Left in RelExp ShiftExp Call HasProperty Method
9 Left == EqualExp RelExp IsEqual
Left != EqualExp RelExp IsNotEqual
Left === EqualExp RelExp IsStrictlyEqual
Left !== EqualExp RelExp IsStrictlyNotEqual
10 Left & BitwiseAndExp EqualExp BitwiseAnd
11 Left ^ BitwiseXorExp EqualExp Bitwise Xor
12 Left | BitwiseOrExp EqualExp BitwiseOr
13 Left && LogicalAndExp BitwiseOrExp
LogicalAnd
14 Left || LogicalOrExp LogicalAndExp
LogicalOr

15 Right ? : LogicalOrExp AssignExp AssignExp
ConditionalExpression
16 Right = LeftHandSideExp AssignExp
AssignmentExpression
Right *= LeftHandSideExp AssignExp
AssignmentWithMultiplication
Right /= LeftHandSideExp AssignExp AssignmentWithDivision
Right %= LeftHandSideExp AssignExp AssignmentWithRemainder
Right += LeftHandSideExp AssignExp AssignmentWithAddition
Right -= LeftHandSideExp AssignExp
AssignmentWithSubtraction
Right <<= LeftHandSideExp AssignExp
AssignmentWithBitwiseLeftShift
Right >>= LeftHandSideExp AssignExp
AssignmentWithSignedRightShift
Right >>>= LeftHandSideExp AssignExp
AssignmentWithUnsignedRightShift
Right &= LeftHandSideExp AssignExp AssignmentWithBitwiseAnd
Right ^= LeftHandSideExp AssignExp AssignmentWithBitwiseOr
Right |= LeftHandSideExp AssignExp AssignmentWithLogicalNot
17 Left , Expression AssignExp SequentialEvaluation
--
__ _
/ ) / // /)
/--/ ____ __/ _ // //
/ (_/ / <_(_/_</_</_//_
/>
</

2010年10月7日星期四

2010年5月26日星期三

设置 tkinter 全局字体

使用 Option DataBase 实现


from Tkinter import *

root = Tk()

# fonts for all widgets
root.option_add("*Font", "courier")

# font to use for label widgets
root.option_add("*Label.Font", "helvetica 20 bold")

# make all widgets light blue
root.option_add("*Background", "light blue")

# use gold/black for selections
root.option_add("*selectBackground", "gold")
root.option_add("*selectForeground", "black")

--
__ _
/ ) / // /)
/--/ ____ __/ _ // //
/ (_/ / <_(_/_</_</_//_
/>
</

2010年5月16日星期日

javascript 中的 dir()

mark 型
function dir(object)
{
methods = [];
for (z in object) if (typeof(z) != 'number') methods.push(z);
return methods.join(', ');
}

http://www.davidcramer.net/code/63/dir-in-javascript.html
--
__ _
/ ) / // /)
/--/ ____ __/ _ // //
/ (_/ / <_(_/_</_</_//_
/>
</

2010年5月12日星期三

在看 Emacs 23.2 的 What's new

(defun string> (s1 s2)
(not (or (string< s1 s2)
(string= s1 s2))))
(string> emacs-version "23.1")

--
__ _
/ ) / // /)
/--/ ____ __/ _ // //
/ (_/ / <_(_/_</_</_//_
/>
</

2010年5月8日星期六

disable linum-mode in temp buffers, Emacs 23

define personal globalize linum mode to solve it. :)
;;; linum-mode
(setq linum-format
(lambda (line)
(propertize
(format (let ((w (length (number-to-string
(count-lines (point-min) (point-max))))))
(concat "%4d |")) line) 'face 'linum)))
(defun my-linum-on () ; linum should turn off in non-editor buffer
(unless (or (minibufferp)
(equal frame-title-format "Speedbar 1.0")
(equal (string-match "\\*.*\\*" (buffer-name)) 0))
(linum-mode 1)))
(define-globalized-minor-mode my-global-linum-mode linum-mode my-linum-on)
(my-global-linum-mode 1)


--
__ _
/ ) / // /)
/--/ ____ __/ _ // //
/ (_/ / <_(_/_</_</_//_
/>
</

Test Send From Emacs

Just A test here.

2010年4月22日星期四

__declspec( ) and _imp__

if you are writing a DLL and you want to make the
symbol available in the export table WITHOUT using the DEF file:

__declspec(dllexport) int FooBar();

if you are writing a component and you want to use a function that is
implemented a DLL:

__declspec(dllimport) int FooBar();

if you want to use a function that is implemented in a library (a real
library, not a stub library)

int FooBar();

pycurl python 2.6 win32 build, also openssl 1.0.0 libcurl 7.20.1

the building process is .... 
modified some .c .h Makefile..
finnally got it


downloading:(a exe installer as other py modules)

 pycurl.version 'libcurl/7.20.1 OpenSSL/1.0.0 zlib/1.2.5 c-ares/1.7.1 libssh2/1.2.5'
 

2010年4月21日星期三

Compile openssl 1.0.0 with mingw-gcc 4.4

the point is:
mingw's wincrypt.h lost many things
so add this to e_capi.c 

// andelf
#define CERT_STORE_PROV_SYSTEM_A            ((LPCSTR) 9)
#define CERT_STORE_READONLY_FLAG                0x00008000
typedef struct _PUBKEY {
        DWORD   magic;
        DWORD   bitlen;                 // # of bits in modulus
} DHPUBKEY, DSSPUBKEY, KEAPUBKEY, TEKPUBKEY;
WINADVAPI
BOOL
WINAPI CryptEnumProvidersA(
    DWORD dwIndex,
    DWORD *pdwReserved,
    DWORD dwFlags,
    DWORD *pdwProvType,
    LPSTR pszProvName,
    DWORD *pcbProvName);
// end andelf

enjoy your ./Configure mingw && make

其实 IronPython 不是那么靠谱

原因大概是 .Net/C# 东西太多了... 很多特性在 py 下就不一定有那么优雅的实现
比如 clrtype 模块....
比如 Interface.

如果有一天 .NET/IronPython 有 JVM/Clojure 那么靠谱就好了.
Clojure-Clr 貌似也不靠谱..�

2010年4月17日星期六

[IronPython]WPF应用的 STAThread 属性处理

最近用铁蟒写 WPF 应用, 遇到纠结的问题. (使用 tools/pyc.py 编译时会遇到, 解释执行正常) 任何一个 WPF 程序,Main 的前面都必须有 [STAThread] 属性, 否则会有运行时错误: Unhandled Exception: System.InvalidOperationException: The calling thread must be STA, because many UI components require this. 找了下相关资料 发现有 http://www.ironpython.info/index.php/Setting_the_Clipboard 整了个还算 Pythonic 的方法, 这里和大家分享下 from System.Threading import Thread, ParameterizedThreadStart, \ ApartmentState, ThreadStart def STAThread(main): def new_main(*args, **kwargs): t = Thread(ParameterizedThreadStart(main)) t.ApartmentState = ApartmentState.STA t.Start(*args, **kwargs) return new_main 这样, 可以直接使用 @STAThread 修饰主函数. 由于使用了 ParameterizedThreadStart, 主函数必须接受参数. 然后想到了版本2 def STAThread(main): if main.__code__.co_argcount: # if main accept params def new_main(*args, **kwargs): t = Thread(ParameterizedThreadStart(main)) t.ApartmentState = ApartmentState.STA t.Start(*args, **kwargs) else: def new_main(): t = Thread(ThreadStart(main)) t.ApartmentState = ApartmentState.STA t.Start() return new_main 需要注意的是, 如果主函数写在 class 里,那么 @STAThread 必须在 @staticmethod 之后, 原因..(如果你知道 @ 是什么意思的话). 或许有其他更好的方法, 欢迎讨论 :)

2010年4月14日星期三

信息学院学生信息 Dump

# -*- coding: utf-8 -*-
#  FileName    : isejob.py 
#  Author      : Feather.et.ELF <andelf@gmail.com
#  Created     : Wed Apr 14 16:07:39 2010 by Feather.et.ELF 
#  Copyright   : Feather Workshop (c) 2010 
#  Description : www.isejob.neu.du.cn user info dump 
#  Time-stamp: <2010-04-14 17:55:19 andelf> 

import urllib, urllib2, re
from Tkinter import *
# this is a comment

login_url = "http://www.xxxxx.edu.cn/loginp.aspx" # note 'p' here
post_data = "userName=%s&userPass=%s"

urllib2.install_opener( urllib2.build_opener( urllib2.HTTPCookieProcessor() ) )

def trans_line(l):
    # l = l.replace("</tr>", "\n</tr>")
    keys = re.findall(r"<b>(.+?)<", l, re.UNICODE) # 50
    vals = re.findall(r"<td>(.*?)<", l, re.UNICODE) # 49
    # 最后一项为备注: <td colspan="3"></td>
    val_last = l.split('colspan="3">')[1].split("<")[0]
    vals.append(val_last)
    return dict(zip(keys, vals))
def login(no):
    # pre
    urllib2.urlopen("http://www.isejob.neu.edu.cn/login.aspx")
    no = int(no)
    req = urllib2.Request(login_url,
                          post_data % (str(no), str(no)),
                          {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)",
                           "Referer": "http://www.isejob.neu.edu.cn/login.aspx"}
                          )
    res = urllib2.urlopen(req)
    return u"登录成功" in unicode(res.read(), 'utf-8')

def get_info(no=None):
    req = urllib2.Request(info_url)
    res = urllib2.urlopen(req)
    for line in res:
        line = unicode(line, 'utf-8')
        if u"用户类型" in line:
            return trans_line(line)
    return {}

def logout():
    return u"对不起" in unicode(urllib2.urlopen(logout_url).read(), 'utf-8')

def show_biref(info_dict):
    return unicode("%(姓名)s %(性别)s %(生源地)s %(家庭详细地址)s 手机:%(手机号码)s QQ:%(QQ号码)s 寝室:%(寝室号)s", 'utf-8') % info_dict

def show_detail(info_dict):
    lines = []
    for k in info_dict:
        if info_dict[k]:
            lines.append( u"%s: %s" % (k, info_dict[k]))
    return u'\n'.join(lines)

def test():
    for no in xrange(0, 0):
        if login(no):
            info = get_info()
            show_biref(info)
            logout()

class Application(Frame):
    def query(self):
        print self.inputs.get()
        no = self.inputs.get()
        if logout() and login(no):
            data = show_detail(get_info())
            #data = show_biref(get_info())
            self.infoLabel['text'] = data
        else:
            self.infoLabel['text'] = "Error"
    def initWidgets(self):
        ety = self.inputEntry = Entry(self)
        ety.pack(side='top')
        self.inputs = IntVar()
        self.inputs.set(20073033)
        ety['textvariable'] = self.inputs
        ety.bind('<Key-Return>', self.query)
                                  
        btn = self.queryButton = Button(self)
        btn["text"] = u"查询"
        btn["fg"] = "red"
        btn["command"] = self.query
        btn.pack(side="top")

        lbl = self.infoLabel = Label(self)
        lbl.pack(side="top", expand=1)
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        self.initWidgets()
def basic_ui():
    root = Tk()
    root.title(u"信息学院查询器")
    app = Application(root)
    app.pack()
    root.mainloop()
    
if __name__== '__main__':
    basic_ui()
## 是否定向 单位联系人 家庭详细地址 用户类型 学生干部任职 是否贷款 父亲 常用E-mail地址 母亲 政治面貌 家庭邮编 性别
## 所属组 录取研究生情况 班级 用户名 单位名称 意向城市 外语语种 所在年级 单位联系电话 挂科情况 未找到 QQ号码 手机号码
## 综合排名 民族 单位性质 不想找 就业状态 姓名 六级分数 学号 单位详细地址 家庭电话 计算机等级 生源地 出生年月日 四级分数
## 寝室电话 定向单位名称 专业 意向单位 寝室号 入学年级 应聘方式 单位传真 单位邮编 备注 意向行业