Search Google

Sunday, February 24, 2008

Python -- use picture/photo as windows background

Panel approach
Label approach
Canvas.create_image()還沒試成功過

如果用Label的話除了在初始的時候要指定影像之外還要再特別指定一次,例如:


previewImage = ImageTk.PhotoImage(Image.open('preview.GIF'))
self.labelPreview = Tkinter.Label(self.t2Frame['Preview'],
image=previewImage)
self.labelPreview.image=previewImage



另外把side, expand, fill等設定搞清楚對排版有很大的幫助,可以參考Thinking in Tkinter裡面的範例程式,實際跑過他的Demo之後就會很清楚了 :-)

Tuesday, February 19, 2008

Something about importing Python modules & packages

取檔名的時候要避免使用test為開頭,例如:testScript.py。
不然在import的時候可能會出現找不到module,可能因為test本身是關鍵字(default module)?!

import自己的module很簡單,
首先在某個py檔(fibo.py)中編輯幾個functions,然後在另外一個py檔(myScript.py)中import fibo,要使用fibo.py中定義的function只需要寫下fibo.functionName()

import自訂的package也不難,
首先建立一個目錄(myPackage),這個目錄便是package的名稱,於此目錄中必須要有一個名為__init__.py的檔案,現在暫時讓它保持空白。然後在myPackage目錄中新增fibo.py檔案,裡面一樣是我們事先編輯好的functions,要使用的時候我們必須先import myPackage.fibo,呼叫function則使用myPackage.fibo.functionName()

Python + PyWin32 + WMI + wget

花了兩天的時間研究batch download終於有點成果,短期目標是達到類似幹圖王的功能,因此目標當然也是傳說中的丁丁大站,這次的實驗以Python為主,另外包含PyWin32 & WMI modules並加上好用的檔案下載工具wget。
運作流程從parse html頁面開始,parse三層後便可得到相片的真實連結,接著便透過win32api呼叫wget進行下載,用win32api呼叫wget原因是為了將視窗設定為隱藏,同時以最簡單的方式達到multithread download,初步成果看起來還頗不錯的。至於要下載要multithread到什麼程度可能還需要再仔細琢磨,如果每一個檔案都佔用一個thread的話thread數可能會不夠用@@,或許一個帳號用一個thread是不錯的選擇,然後將同帳號下的照片都queue起來慢慢下載。
以下是這兩天寫的testing code,離成品還有一段距離(eg.尚無法處理需要帳號的相簿,以及許多coding的細節),但是還是可以當作範例參考:
grab_n_view_sample.py

Friday, February 15, 2008

SET NAMES

在query DB之前要記得先SET NAMES,例如(Python code):

cursor = db.cursor()
sql_cmd = 'SET NAMES "utf8"'
cursor.execute(sql_cmd)


使用同樣cursor的query只需要SET NAMES一次,但是每個不同的cursor都需要SET NAMES,
以防deploy目標DB的default encoding與開發機的設定不同造成顯示亂碼的狀況。

NSIS + appsev + Python + python mods

我花了三天的時間寫出生平第一個堪稱完整的安裝檔(含完整的uninstaller),裡面包了:
1. appserv installer
2. Python installer
3. Python modules' installers for Apache & MySQL
4. 我之前寫的簡易型倉儲頁面

過程中發現Python的安裝檔在interactive mode[1]與passive mode[2]下的行為模式不一樣,
讓我花了好一些時間尋找為何安裝後無法啟動apache server,安裝Python的時候一定要
使用interactive mode,這樣子之後裝上apache的python_mod之後才能夠正常restart
apache server。

看到安裝後網頁能夠順利運作與反安裝完後一切檔案皆煙消雲散的感覺真不錯 :-)
至於Linux下的installer(通常是make install)可能還要再另外花時間研究了。


[1] msiexec /i "Python installer"
需要使用者不停的點選下一步或是做另外的設定
[2] msiexec /passive /i "Python installer"
以預設選項完成安裝,使用者不需要多按一下鍵盤/滑鼠

Wednesday, January 30, 2008

PYTHON + Tkinter

話說前陣子重新玩起python,但是因為督導長"希望"程式能夠用VB寫,於是我便採用.net + c#的折衷方案,現在趁著提前完成進度自行摸索使用python寫gui,摸索的過程中發現以下的網頁,對入門者是個不錯的教學網頁:
Thinking in Tkinter
接下來就看看能不能在期限之前用python + Tkinter做出第二個版本 :-D

Saturday, January 19, 2008

TcpNumConnections

話說最近在做網頁,不知道是不是因為邊測試邊下載的關係,讓我的windows事件簿上面出現TCP/IP連線數超過限制的訊息,google之後(是的,又是google。。。)找到兩個方法:
1.下載工具軟體更改設定,但是怕中毒所以不敢用
2.直接更改機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DWORD --> TcpNumConnections
value --> 想開的連線數

目前使用第二個方法,但是因為還沒有重新開機,因此也無從得知到底有沒有效,當做是另一筆可能有用的紀錄吧。

word檔案損毀

用WORD開啟檔案的時候赫然看到檔案損毀,要我使用文字轉換工具的訊息,
我試了兩種方法都OK

1.使用windows內建的wordpad開啟檔案,再另存新檔,只是這樣子新檔的體積有可能非常龐大(eg.從8M變成200M),再來就是文章的格式會跑掉。

2.這是google到的解法,用regedit新增機碼值後重開機,機碼值如下:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Options
DWORD --> BulletProofOnCorruption
value --> 1


按照第二個方法做完之後果然能使用WORD順利開啟檔案,之後存檔關閉再開啟就沒有遇到同樣的問題了。

Sunday, January 13, 2008

PYTHON... revisit

話說上次碰PYTHON已經是大二(或三?)的事了,當年拿他來做影像比對&處理的作業,那也是我第一次寫平行程式。最近看到有人在PTT上宣傳PYTHON勾起當年我在寫它的回憶,也讓我想在重新接觸PYTHON。上GOOGLE找了兩三天發現PYTHON的modules真是包山包海,可以涵蓋從script到web server application。搭配PSP module之後PYTHON就可以像PHP一樣動態產生網頁,同時還可以使用PYTHON本身的其他功能。

以下的連結從安裝一路解說到使用PSP,是個不錯的reference:
http://www.eval.ca/articles/introduction-to-mod-python?page=0%2C2

Thursday, January 03, 2008

2007-12-31

2007年的最後一天身為阿宅的我們(我+Angel+信安)在做什麼呢?
吃飯聊天(2hr) --> 塞車(1.5hr,辛苦信安了) --> 塞人(0.5hr) --> 看煙火(0.052hr) --> 塞人(2hr) --> 塞車(1hr,辛苦了我的荷包 =.=) --> 睡覺@@

PS.Angel非常害羞,堅持不肯放本名。。。

請注意看信安邪惡的眼神~

對照組一

對照組二

怕沾到衣服,只好做做樣子

The "Unusual" Suspect

阿宅大合照