2009年1月20日 星期二

對上對下的至理名言

當然,付錢的是老大,所以好像理所當然的上面一定是對的,除非你走人。

不過站在客觀立場上,還是有分所謂的對與錯,至於何謂「客觀立場」,我想那些著名的書籍應該可以「勝任」這樣的角色。

這些書籍有分好幾種角度來思考,有下看上,也有上看下。

如果每天上面與下面都拿一篇文章分別要求彼此照著客觀規則來走,不知道是上面要改的多還是下面?

2009年1月16日 星期五

組合語言的環境建置

可以參考這個網站,他講的非常詳細,讓我這個菜鳥也可以上手。
http://home.educities.edu.tw/wanker742126/index.html

說實在的,這網站詳細到目前我還沒有必要在這邊多紀錄些什麼 ... 等有哪些是我自己的心得再紀錄吧 ...

2009年1月4日 星期日

windows 上讀寫檔案會遇到的問題

這是我在一個論壇裡面 post 的文章,其實我也常常忘記為什麼會被置換,每次都要重想一遍 =P ,所以貼來這邊作紀錄。




若不使用 binary mode 讀取寫入檔案,在 windows 上讀取與寫入分別會遇到的問題有:

讀取:
對 windows 來說,Ctrl-Z(1A) 也算是檔案結尾,因此只要遇到 hex 1A ,就會看到它停止讀取。

所以可以看到本來陋陋長的檔案變成只有一點點大

寫入:
我們一般在撰寫 python 程式的時候,標準的換行字元都是 \n(0A),所以如果我們要排版一個 string,我們都會做這樣的動作


>>> str = '老師您好:\n我是bmcool'
>>> print str
老師您好:
我是bmcool
>>>


但我們都知道 windows 的標準換行字元為 \r\n(0D0A) ,跨平台的腳本語言都會有這種自動偵測與轉換的能力,因此當你沒有交代你即將寫入的資料為 binary 時,python 為了讓你排版美美的字串在 windows 上有一樣的排版效果,就會很雞婆的幫你把 \n 轉換成 \r\n ...

也就是圖片中只要含有 hex 0A,全部都會變置換成 hex 0D0A ... 可以把上述範例的 str 寫入檔案,並用 16 進制編輯器打開來看看,就會發現是怎麼回事了。



Mac 的標準換行字元為 \r,對 python 來說也會有一樣的影響,它會把所有的 \n 都換成 \r ...

Linux 的標準換行字元與 python 相同,都為 \n,因此不會有任何轉換。

抓取某網路遊戲中的血量、魔法力與耐力

這邊並不會提到太多實作的方法,只能算是個人的紀錄罷了 ...


BB 01 98 23 BB 01 73 00 00 00 4A 00 00 00 5C 00
00 00 73 00 00 00 4A 00 00 00 5C 00 00 00 ...


粗體的部份,前三個分別為血量、魔法力與耐力現有數值,後三個為最大值。

2009年1月3日 星期六

分解條件式 (Decompose Conditional)

這是一個由名字判斷是否為會員的程式片段。

global membersName

...

if {[lsearch $membersName "Jacky.Lin"] != -1} {
    
puts "歡迎 Jacky.Lin 會員"
} else {
    
puts "歡迎 Jacky.Lin 訪客"
}

...


Refactoring ...


...

if {[isMember "Jacky.Lin"]} {
    
puts "歡迎 Jacky.Lin 會員"
} else {
    
puts "歡迎 Jacky.Lin 訪客"
}

...



雖然最後的結果都一樣,但下方的程式碼可以清楚的知道條件式的作用。