本來想說週末就可以完成的,結果拖到剛剛,我寫程式的能力真是有待加強。

novus 發表在 痞客邦 留言(0) 人氣()

大概兩週前有位網友在調查有多少人了解下面這個宣告式:

unsigned int n = -1;

我看到這個問題的時候,已經有不少人實驗得出結果,並且也開始討論這段程式碼的風格問題。以上程式碼的作用在於將 n 所有 bit 設為 1,這是一個非常可靠的行為 -- C 和 C++ 語言標準中對由 signed 到 unsigned 的轉型有段謎語般的詳盡敘述,事實上在採用 2 補數的環境中,所謂轉型的實質行為就只是把位元照搬過去而已(至於採用其他數字系統的平台太罕見,以下不討論)。

novus 發表在 痞客邦 留言(2) 人氣()

http://youtu.be/XVxJuBgE0ic

novus 發表在 痞客邦 留言(0) 人氣()

在程式中通常有若干種方法將資訊串成字串,一些可能的寫法如:

msg = format("Do you want to delete %s from %s?", user.name, group.name);

msg = "Do you want to delete {1} from {2}?".format(user.name, group.name);

msg = "Do you want to delete " + user.name + " from " + group.name + "?";

msg << "Do you want to delete " << user.name << " from " << group.name << "?";

對於多數應用來說,以上並沒有其中一個做法比其他具備壓倒性優勢,所以在使用上有很大程度取決於個人喜好。有些比較具有經驗的人可能會覺得 formatter 風格比較容易閱讀,不過當插入的資料太多時一樣會造成畫面破碎,而且資料和插入位置不容易對起來。

novus 發表在 痞客邦 留言(0) 人氣()

使用 tkFileDialog 取得多個檔案名稱有個惱人的小問題,即 tkFileDialog 並不會回傳 python list,而是傳回多個檔名串成的字串。當檔名不包含空白的時候,這個字串會以空白分隔各個檔名;否則各檔名會包含於 {} 當中。


filenames = tkFileDialog.askopenfilename(...)
    
# Example result:
#  D:/file1.txt D:/file2.txt D:/file3.txt
#  {C:/My Document/file1.txt} {D:/My Precious/file2.txt}

網路上很多範例都是直接用 split 之類的分解 tkFileDialog 回傳值,這個作法的問題在於,空白和 {} 都是合法的檔名字元,split (或其他無狀態的分割函數)不可能正確拆解。雖然我知道這樣問題很多,但通常我寫 Python 的時候都只是臨時需要某個功能而已,所以沒想太多就直接照著做。

novus 發表在 痞客邦 留言(0) 人氣()

今天看到一篇介紹 Matthew Albanese 的文章,感覺這位仁兄實在太強了。
http://www.amusingplanet.com/2013/08/magical-miniature-worlds-by-matthew.html

novus 發表在 痞客邦 留言(0) 人氣()

I borrow this color scheme from Tango palette. It's much easier to read than the default console color scheme. Should work under Msys, Cygwin and Git-bash.

Paste following text to '~/.minttyrc', create the file if it doesn't exist. Then restart Mintty.

novus 發表在 痞客邦 留言(0) 人氣()

長期以來 Windows 上的命令列工具一直不太好用,使得在 Windows 上使用命令列工作效率不彰。我自己一直是使用 Msys、Cygwin 搭配 Mintty,取代了絕大多數需要 cmd 的場合,所以並沒有很關注 Windows 上第三方命令列工具的發展。雖然也試過像 Console 2 之類的實作,但總覺得可用性還有待加強。

novus 發表在 痞客邦 留言(0) 人氣()

找到這一個 firefox/palemoon 的 add-on:Blank Your Monitor + Easy Reading。 簡單來說就是把頁面變成黑底白字,在閱讀維基百科這類文字多且潔白的網頁很好用。有這方面需求的人可以裝來試試看。

最近看了一些 HTML5 的範例之後,讓我想起某些在幾年前還很困難的任務,現在似乎變得輕鬆多了。現在我使用的電腦必裝 flashblock ,不知道未來會不會出現 HTML5 block 之類的東西,因為有些白爛的多媒體真的很惱人。

novus 發表在 痞客邦 留言(1) 人氣()

使用 Linux Mint + MATE 桌面有一個小小的缺點,那就是無法用快速鍵搬移視窗貼齊左/右半螢幕。這個功能我在 Win7 和 Ubuntu 上已經用慣了,一時之間不太順手。連 Cinnamon 桌面在這方面都相當齊全,我不太清楚為什麼 MATE 沒有這項功能。

網路上好像有很多人建議直接裝完整的 Compiz 桌面管理器,但我希望有一些比較輕量級的作法,畢竟我現在的工作環境恐怕沒有多餘的力量在一些花俏沒營養的事情上。以下是在 Linux Mint 討論區上找到的 可行方案

novus 發表在 痞客邦 留言(0) 人氣()

http://youtu.be/q8DiOthAKek

novus 發表在 痞客邦 留言(0) 人氣()

假設程式需要用到三個演算法,分別是 Foo、Bar、Qwerty,每個演算法可能會有 64-bit 整數、32-bit 整數、SSE2、SSE3 等四種實作方式。

在 32-bit 編譯環境上,通常 32-bit 版本會比 64-bit 版還快,且 SSE 版還會比原生整數更快;反過來說,在 64-bit 編譯環境應當優先使用 64-bit 整數版。基於懶人因素以及現實考量,大部分的演算法在一開始並不會有 SSE 版,只有當現有演算法還有顯著改善空間時,才有足夠的誘因去實作 SSE 版。最後,並非所有平台都支援 SSE,因此必須適時關閉這部份實作。

novus 發表在 痞客邦 留言(0) 人氣()