2013年3月30日 星期六

輸家競標

    網路上有種競標方式,它的特性是每次下標都要付錢,我不知道到該怎麼稱呼這種競標方式。姑且叫他輸家競標。

    為什麼我要叫他輸家競標呢? 因為你一下標你就輸了(輸了錢和時間),在這種競標模式下,只有兩個贏家,賣家、平台提供者。

    在一般的競標模式下,競標者為了確保自己的最大利益,通常不會一次加碼太多錢。直到沒有人願意再加碼,此時競標就成立,買家確定。

2013年3月26日 星期二

單一職責原則 ( Single Responsibility Principle )

    在寫 django view 的時候,如果你是在寫列出該使用者所有文章,或是列出該使用者所有評論、活動之類的 view。 你會發係每個 view 基本上做的事情都差不多,不外乎就撈資料 -> 排列資料 -> 做分頁 - > 丟給 template 去呈現。像下面程式碼(以下程式碼都省略很多東西,所以請看 function name、call function 與 function doc 部分)

2013年3月25日 星期一

source code tag system

    因為最近要開始看很長很長的 source code。想說找個方便的 tag 工具。就想起從前有用過一個很好用的 tag system。叫做 gnu global 。他看中他的特色是這一點
support C, C++, Yacc, Java, PHP4 and assembly. (definition and reference)
    這意味著我可以很快的從一堆 source code 中找出物件在哪裡定義,有哪些程式碼參考他。

    要使用 global 前,要先用 gtags 作索引。做完索引後就可以開始使用了。下面是我常用的用法。

2013年3月22日 星期五

無法安裝星海爭霸 2

星海爭霸2 的安裝程式大概是寫得太爛了,很容易陷入在一直更新畫面,卻無法完成更新。爬文找了結果,只要上次安裝失敗就會導致這個結果。解決辦法就是把上次安裝失敗的暫存檔案全部刪除,即可安裝了。

2013年3月20日 星期三

callback function 與 decorator ( 以 python 為示範 )

    在網路上看到有人問 callback function 和 decorator 有何不同。 基本上,他們兩個完全是不同概念的東西。 callback function 是指 A function  呼叫 B  function 時,傳入 C function 作為參數。B function 在做一些事情後,可能會呼叫 C function。 C function 在這個情境下就是 callback function。


2013年3月18日 星期一

比較c++、python、go、與javascript的 lambda語法

C++11 算是出了一段時間了,而最近編譯器對 C++11 的支持也越來越完善了。 C++11 有一個新特性,就是支援 lambda 的語法,所以就把一些語言的 lambda 語法拿來做比較。首先是python。

map(lambda s: s * s, [1, 2, 3])
python 的 lambda 語法很好理解,冒號前是參數,冒號後是程式碼。lambda   的限制就程式碼只能夠一行。lambda 可以存取外部變數,但是不能使用 assignment statement。

2013年3月9日 星期六

EZ430-Chronos 運動手錶介紹

 
    這是一隻你可以寫程式在上面的手錶,德州儀器出的。使用 msp430 系列的晶片。 內建溫度、氣壓、電壓感應器、蜂鳴器、三軸加速器、RF收發器(就可以無線溝通,不太確定中文怎翻)。

2013年3月7日 星期四

dict literal 與 dict constructor 的比較

    基本上, dict literal ( 使用{}建立物件 ) 和 dict constructor ( 使用 dict() 建立物件 ) 結果一樣。 只是他們之間仍有些許的差異。

    首先是速度上的差異,當 interrupter 執行到 {} 時,interrupter 會知道是要建立 dict 物件。 然而,當 interrupter 執行到 dict() 時,他會認定執行 function call。因此多個函數呼叫與參數傳遞。不過這兩者間的效能差異不算大,也可能會被最佳化。我用下面程式碼做簡單測試

2013年3月1日 星期五

在 python 中較快的字串加法

在 python、java 中,字串都是不可變的(immutable)。意味著,字串被建立後就不能夠被修改。因此,當你在做 n 個字串加法時,它會產生 n - 2 個暫時字串物件。 為了避免在做大量字串加法時,產生過多的暫時物件。 java 中有 stringbuffer 可以使用。用法如下: