Continue in Lua
28 Mar 2011 04:09
Lua 是個小巧精美的語言,不過剛上手時,可能會因為它沒有一般語言中的 continue statement 而感到困惑。Lua FAQ 中有做出解釋,考慮如下的 code:
repeat
if cond then continue end
local t = 1
...
until t == 0
由於 continue 會跳過 local t 的宣告,因此後面的 until t == 0 究竟是指全域的 t 或 local t,會顯得語意不明。C++ 也有同樣的問題,因此 C++ 明確規定 do … while() 中的條件式只能參照迴圈外部的變數。
| Comments (0)
Clpp 0.0.2 Released
11 May 2010 08:36
對不起,說好兩三天之內要整理一下放出來的,結果整理了一個月。
總之,我把他弄上了 github,補足了一些有的沒的 function 還有文件與 tutorial,終於可以放出來了…雖然我知道問題還很多。
這邊是他的 project page,對不起我知道 github 的 wiki 很簡陋,不過正好很符合這個 project 目前的情況。
以上,祝大家使用愉快!
| Comments (0)
std::string 的空間是連續的嗎?
12 Apr 2010 03:51
我知道 std::vector 的空間是連續的,但 std::string 是否如此呢?因為我不知道標準是否有確定此事,所以我最近經常寫如下的 code:
std::string GetDeviceName(cl_device_id id) { size_t len; clGetDeviceInfo(id, CL_DEVICE_NAME, 0, NULL, &len); std::vector<char> buf(len); clGetDeviceInfo(id, CL_DEVICE_NAME, len, &buf[0], NULL); return std::string(&buf[0], len); }
clGetDeviceInfo() 是 OpenCL API 中的一個函式,第一次呼叫會把我需要的資訊長度寫到 len 這個變數中,好讓我配置足夠的記憶體來接受資料。不幸的是因為我不確定 std::string 的空間是否連續,因此我必續另外用 std::vector 來開一個暫存區,再用它來產生 std::string。
能不能省掉這個該死的步驟呢?
c++ tips | Comments (0)
OpenCL++!
09 Apr 2010 08:59
嗯,這就是我最近在做的事。
OpenCL 是一套在異質平台 (heterogeneous platforms) 上編寫平行處理程式的一套 API 標準。如果你平常就對什麼 CUDA 啦或是 GPGPU 之類的東西耳熟能詳,那應該也會聽過這個字眼,如果沒聽過的話就去參考一下 wiki 吧。
c++ | Comments (2)
在 Windows 下讓 GVim 完全使用 Unicode
11 Jan 2010 09:02
在中文版 Windows 底下,GVim 預設會使用 cp950 作為編碼方式,而相信許多人都對 cp950 感到厭惡,我也是其中之一。因此在編輯 _vimrc 的時候第一行就是 set encoding=utf-8。然而這樣做有個副作用:導致 GVim 的選單全部變成亂碼。解決的方法其實非常簡單,卻不是看看文件就可以馬上找出這個解決方法,因此在這做個記錄。
tips | Comments (3)
Group Meeting 小感
24 Nov 2009 04:47
最近都會去 group meeting 聽大家報 paper,我覺得對做研究而言,報 paper 真的算是一件很重要的訓練吧。在面對臺下詢問的壓力下,自己自然也會試著去徹底了解它的內容。另一方面,試著把自己的想法傳達給對方知道,也是一件頗浪漫(?)的事。
murmur | Comments (0)
Google Go
12 Nov 2009 09:14
最近 Google 最大的新聞大概就是他們發表了 Go 這個語言。就網站上的說法,Go 的賣點大概是:
- 具有如 Python 般高階語言的特性,例如內建的 hash map、自動記憶體管理等等。
- 編譯及執行速度都很快。
- 在語言層面支援平行運算。
- 不需明確定義類別的繼承關係。
| Comments (0)
autofool
13 Oct 2009 06:21
$ autoconf
' is already registered with AC_CONFIG_FILES.
/usr/src/autoconf/autoconf-2.63/lib/autoconf/status.m4:305 AC_CONFIG_FILES is expanded from...
configure.in:1179: the top level
autom4te: /bin/m4 failed with exit status: 1
$
解決方法極端無腦:
| Comments (0)
Gordon Brown apologises to gay Enigma codebreaker Alan Turing
15 Sep 2009 05:04
經過了數萬人的連署,前幾天英國首相布朗終於在首相辦公室的網站上,撰文代表英國政府對 Alan Turing 公開致歉。經過我的破英文翻譯如下:
| Comments (0)
被小七A了十塊錢!
18 Aug 2009 08:34
前幾天去 7-11 買了一罐可爾必思,沒仔細算找回來的零錢對不對,想不到昨天核對帳本的時候發現少了十塊錢,查過發票後發現店員似乎是多算了我十塊。以下是有圖有真相時間:

最好是喝可爾必思還要付健康捐,要是有個可爾必思防治法,規定公開場合不準喝這種白濁色的液體(?)就更有趣了。話說回來,也才十塊錢,我實在很懶得追討,光坐公車去那家小七,來回就要三十塊了,而且我對自以為很正義的消基會實在相當反感。
murmur | Comments (1)
Wikidot 終於開始廣告了
16 Jul 2009 02:04
一開始會用 Wikidot 當然是因為他很強,再加上「號稱」沒有廣告。其實用了這麼強大的 wiki,若是要加上廣告,我也不會太過反感,只不過…
只不用現在這樣真的很醜。
上面那個 toolbar 實在太大了,明顯是在喧賓奪主,調整成像 blogspot 那樣的大小不是很好嗎?(才過一天,馬上就縮小了,看來有太多使用者因為這個 toolbar 而抓狂)而最下面,要幫忙 promote 其它的 wiki site 並不是不行,可是用縮圖也太占空間了吧?
還有,好久以前就說要 open source,到底什麼時候才 open 啊?
murmur | Comments (0)
mysqltuner.pl
01 Jul 2009 02:22
為了讓公司的 MySQL server 支援更高的連線數量,我找到了 MySQLTuner 這支 script。MySQLTuner 可以分析目前的 MySQL 設定並提出一些改善效能的建議,算是一支滿有用的小程式。
不過最有趣的地方倒不在這裡,而是下載這支程式的方法,根據網站上的說明:
Quick Start
wget mysqltuner.pl
chmod 0700 mysqltuner.pl
./mysqltuner.pl
乍看之下覺得有點怪,wget 後面應該接上一串 URL 才對,怎麼直接把 script 的檔名放在後面呢?原來是他們註冊了 mysqlruner.pl 這個網域,讓它重新導向到 script 所在的位置,真是非常有趣的做法。這類程式碼副檔名和 country code 相同的例子還有 .cc(科科斯群島) 和 .py(巴拉圭)等。
| Comments (0)
趕跑客戶的業務
19 Jun 2009 05:59
最近因為要幫公司的網站服務加上 SSL,因此看了幾家 CA 的報價。大部份的 CA 都直接在網站上公佈價格,唯一的例外是 TWCA 這家號稱台灣最大的憑證機構。
murmur | Comments (0)
持續發展中的 D 語言
17 Jun 2009 10:07
距離 D 1.0 正式發表已經過了兩年半,儘管 D 的使用者依然是小眾,但其設計者 Walter Bright 以及整個社群並沒有閒著,而是持續不斷地對新版本的規格:D 2.0 進行改良。而最近 Modern C++ Design 的作者 Andrei Alexandrescu 就針對 D 語言發表了一篇文章:The Case for D,提到許多他們在 D 語言中新加入的功能。D 已經逐漸脫離「比較好用的 C++」,而開始走出自己的方向。
| Comments (0)
在 Java 中使用系統換行字元
12 Jun 2009 02:34
由於一些歷史因素,在不同的作業系統上,習慣使用不同的字元來表示換行符號:
| Windows | \r\n |
| Unix-like | \n |
| Mac OS 9 | \r |
在 C/C++ 中,只要用預設的方式(非 binary)來開檔,標準函式庫會自動幫你把 \n 轉換正確的換行字元:
ofstream asc("ascii.txt"); asc << "hello\nworld\n"; // 在 Windows 上會輸出 "hello\r\nworld\r\n" ofstream bin("binary.txt", ios::binary); // binary mode 會關閉轉換功能 bin << "hello\nworld\n"; // 不管在任何平台皆輸出 "hello\nworld\n"
不幸的是,Java 沒有這個功能:
PrintStream out("output.txt"); out.print("hello\nworld\n"); // 不管任何平台皆輸出 "hello\nworld\n"
java | Comments (0)
關於 C++ Exception
08 Jun 2009 10:21
這是為了回應 Ptt C_and_CPP 討論板上一篇關於是否應使用 exception 的問題而發表的文章,算是就目前自己了解 exception 的程度做一個整理。原問題如下:
作者 os653 (allstar)
標題 [問題] 例外處理
時間 Sat May 30 18:33:43 2009
想請問,一般而言,比較大的程式都用什麼方法處理錯誤呢?
之前曾用 winsock 寫過下載網頁的程式
當時處理的方法是,所有錯誤一概印出相關資料後 exit
結果就是,如果沒有連接上網路,程式就完全不能執行
想想好像不太對的樣子,雖然自己用是沒啥差啦 …
其他常見的方法好像就 return error code 跟 throw exception
可是這兩種方法的問題也實在蠻多的
所以想請有經驗的人解說一下,一般大程式的處理方式是什麼
我個人是傾向 error code 多一些啦,畢竟 exception 很難寫
附帶請教一下,有沒有網站可以查詢 STL 可能丟出的例外?
我找到 http://www.dinkumware.com/manuals/default.aspx
不過他只有寫出哪些 function 保證不丟出例外
還是說,實際上必須要將所有 functino 都當成會丟出例外來處理?
c++ | Comments (0)
奇怪的 SWT GC
02 Jun 2009 03:36
SWT(Standard Widget Toolkit)是 Eclipse 所使用的 GUI toolkit,算是非常知名,也有眾多使用者的函式庫。在 SWT 中,大部份的使用者會用 GC(Graphics Context)這個物件來完成 2D 繪圖的各項操作。然而 GC 的介面實在有點奇怪…
java murmur | Comments (0)
Cohesion
25 May 2009 10:39
知名的 C++ 經驗書 Exceptional C++ 中,有一個準則是這樣講的:
儘量內聚(cohesion)。盡力給予每段程式碼 –每個模組、每個 class、每個函式– 單一而明確的任務。
Herb Sutter 在書中提到了使用 C++ 來實作 Stack 的例子,這邊舉出另一個出現在 Java 中的例子。(會舉這個例子,是因為我有切身之痛了)
java | Comments (0)






