Tag Archives: 程式設計

開發wxPython的利器 : PyCrust

一直想做的事 最近我在用wxPython開發某些程式,隨著開發的過程中,難免需要一些直接的測試,改動程式碼來進行測式似乎不是很明智的選擇,即使Python是直譯式的語言,每改一次重新啟動整個程式也是一種浪費,而且狀態每次也會重置,於是我開始想,我是否可以寫一個像Half-Life那樣的一個console整合到我的GUI中,如此一來我就可以在開發時直接進行某些測試,對某些特定的模組操作,如此一來開發的效率可以提升,對於程式而言也會更好除錯,但是雖然寫一個console不是什麼太難的事,但也不是什麼太輕鬆的事,為了早點完成程式,於是我就沒有真的去做 直到某本書的出現 : wxPython in action 當有一天我訂的書: wxPython in action終於來了,這本書要1500元,實在是不便宜,但是我認為卻很值得,我在書中發現我以前一直都沒仔細去注意到的東西,PyCrust,在翻過這章節時我驚訝地發現,這不就是我想做的嗎? 一個控制臺,可以讓我操作、觀察、測試我的GUI,而且整合的方法超簡單,只要一行指令 python pywrap.py main.py 在wx.py的package下的pywarp.py會自動找到app並且將PyCrust整合進去,在我程式中執行的畫面就像這樣 在截圖中我利用pycrust將gui的背景換成了紅色,它不止是一款簡單的GUI,因為他是動態載入模組的name space,和一般IDE不同的是,他的自動完成是動態的,一般的IDE只抓得到靜態的成員,但是即然是動態載入又是在執行中,有什麼成員一清二楚,所以基本上自動完成功能感覺非常地強大,但相對的弱點是對於靜態的部份比較麻煩 它除了可以自動整合到現有的wxPython gui程式中,更可以把裡面各個元件分開來獨立使用 所以它可以幹麻? 對我來說,PyCrust將會是像神兵利器般好用的工具,像是開發遊戲之類需要大量的調校,一個console或是動態的機制是免不了的,而console提供了立即且互動式的環境,有了PyCrust,就等於有了現成的console可以使用,在遊戲的開發過程中,開發者可以利用這個console動態地改變各種參數來觀察反應等等,當然開發遊戲只是其中一個應用的例子,即使在一般的GUI中也會是很好用的工具 順帶一提 wxPython in action真的是難得一見的好書,有別於一般的書,它使用問句來當做標題,但是不會因為這樣而零散雜亂,相反的,你可以很正式地看完一次,也可以很快速地掃過一次,當你需要什麼東西時,那些問句可以幫助你很快地找到你需要的東西,豐富的截圖和圖解更讓人不用費心去猜想到底做出來會是什麼樣子,或是想像到底是如何運作,如果要學wxPython,我覺得這本書真的是非常值得推薦,做為工具書,這本也是必備的一本

Posted in Python, 中文文章, 分享, 遊戲設計 | Tagged , , , | 2 Comments

Google C++ 程式風格指南

介紹Google的 C++ 程式風格指南 Continue reading

Posted in C/C++, 中文文章, 分享 | Tagged , , , , , | Comments Off on Google C++ 程式風格指南

替功能設定優先順序

實作永遠比空想困難 實作所需要花的時間,永遠比單純想而已來得長太多了,再加上有許多在思考過程中難以發現的問題,因此實作通常都追不上想出新點子的速度,在實作的過程中時常很容易又突然想到一些點子,然而先前的點子明明都還沒有完成,我寫過無數個半途而廢的程式,往往就是在實作的過程中太貪心,實作的時間無限制地往後延,然後又想到新點子,於是最後終於受不了丟下目前的程式跑去開發新的程式,週而復始,時間久了,專案的資料夾都快可以改名成為專案塚了,而直到最近我開始明白了一件事情,讓這樣的情況有了很大的改善 替你的專案功能設定優先順序

Posted in 中文文章, 設計 | Tagged , | Comments Off on 替功能設定優先順序

自動抓取無名相簿照片程式範例

自動抓取相簿相片 為了示範WebChuan的威力,我寫了一個簡單的範例,可以下載無名小站的某個相簿裡的所有照片 範例 它會一頁接著一頁抓下去,舉個例子,例如這個相簿,只要輸入相簿第一張相片的網頁連結,它就會一頁一頁接著抓下去,然後圖片都存到相同的目錄下 包裝好的程式 為了方便沒有安裝Python和WebChuan也能使用這個簡單的小程式,我把它打包成.exe的執行檔,可以從這裡下載 自動抓取無名相簿照片程式 執行download_photos.exe再貼上相簿裡第一張相片的網址連結就可以開始下載相片 請注意,如果抓太凶可能會遇到一個錯誤 999 Unable to process request at this time 似乎是Yahoo把你抓照片當成攻擊,換個IP繼續抓應該就可以了

Posted in Python, 中文文章, 分享 | Tagged , , , | 1 Comment

簡易Compiler(其實是Interpreter) : Micro 實作

昨天 花了一個晚上的時間把Compiler作業Micro直譯器寫出來了,為啥說它是直譯器,因為光寫文法解析實在很無聊,它的語法又太簡單,反正讓它能執行也多沒幾行程式,就順手讓它可以直接執行,還蠻有趣的,第一次寫比較正規的語法解析器,我想起很久很久以前我寫過一個滑鼠鍵盤的巨集程式 就有解析自創的簡單語法,可是方法實在很暴力很蠢 XD,用了一些五四三的方法硬湊出來,現在我寫完這個作業覺得scanner和parser這樣才是比較正規的做法,我還用了Interpreter Pattern來實作 Micro 課本上的Micro語言實在有點簡單過頭了,只有輸入、輸出、運算而已,運算也只有加和減,本來想修改的,可是又要設計BNF和考慮運算優先順序等等麻煩的問題就打消念頭,只寫了兩個簡單的程式 begin read (a, b, c); sum := a + b + c; write (sum); end begin read (f1, f2); f3 := f1 + f2; f4 := f2 + f3; f5 := f3 + … Continue reading

Posted in C/C++, 中文文章, 分享 | Tagged , , | 7 Comments

設計才是王道

最初 我第一次接觸程式語言,是在國一的時候,學習的是VB6.0,在一開始,我什麼都不懂,大概讀懂簡單的程式,然後靠著剪剪貼貼拼湊出我想要的程式,我還留著我的第一個程式 Private Sub Command1_Click() If A.Text > B.Text Then Label1.Caption = “a大” End If If A.Text < B.Text Then Label1.Caption = “b大” End If If A.Text = B.Text Then Label1.Caption = “一樣” End If End Sub 我還記得第一次它正確如我預期地運作時的感動,如你所見,當時我連什麼是縮排都不知道,隨著程式越寫越多,野心漸漸地也越來越大,當時有款很紅的線上遊戲叫天堂,我想要寫出那樣的遊戲,於是就在國中時埋頭苦幹式地硬寫出了一個遊戲的雛形,我把它叫做夢想線上(Dream On Line) … Continue reading

Posted in 中文文章, 設計 | Tagged , | Comments Off on 設計才是王道

抓取網頁的最佳語言 : Python

最初 最早我用C/C++語言慢慢寫抓網頁的用它來抓網頁真的是程式,一開始甚至打算自己寫抓取網頁的函式庫,想說當做練習,可是HTTP協定 雖然不難,可是煩,要處理的細節太多了,後來受不了,轉而使用現成的Library : cUrl,但是C/C++語言開發這類東西的效率實在太慢了,我的程式不停的修改、不停的修改,光是編譯的時間就吃掉了不知道多少,字串的處理C/C++ 沒有內建正規表示法或一些好用的字串函數之類的,處理起來也礙手礙腳,當時,我想將我寫好的函數庫寫成能讓Lua呼叫的形式,或著甚是C/C++來呼叫Lua,因為C/C++有很多細節要處理,Memory leak有的沒有的雜事,我想要的只是專注在寫抓取網頁的程式,因此用Lua包裝似乎是不錯的選擇,但是開發時間太久了,事情一直沒有變好 直到

Posted in Python, 中文文章 | Tagged , , , | 43 Comments

測試的好幫手: 虛擬機器

麻煩的測試 今天當我要把demo程式送到客戶手中前,我煩腦要如何測試demo程式,確保不會因為我少了某樣程式依賴的東西,但是我的開發環境因為都已經裝好了,但客戶的電腦未必是如此,因此最好找另外一台電腦來測試,我第一個想到就是用我的筆電來做測試,可是為了測試我還得裝好網路,又得花不少時間,於是我想到,為什麼我不用虛擬機器? 虛擬機器不正就是用來測試用的嗎? 我居然忘記有這樣好用的工具存在

Posted in 中文文章, 測試 | Tagged , , , , | 6 Comments