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 究竟是指全域的 tlocal 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)

首頁綁架之怪招

19 Apr 2010 12:16

最近綁架首頁的方式真是無奇不有,即使用 firefox 也未必能倖免於難,以下就是我最近幾天的親身經歷。

| 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)

AVATAR

02 Jan 2010 07:34

看完了最近爆紅的 AVATAR,特效真的做得很棒,不過好看的也只剩聲光效果了,劇情根本亂七八糟。

| Comments (0)

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

receipt.jpg

前幾天去 7-11 買了一罐可爾必思,沒仔細算找回來的零錢對不對,想不到昨天核對帳本的時候發現少了十塊錢,查過發票後發現店員似乎是多算了我十塊。以下是有圖有真相時間:

receipt2.jpg

最好是喝可爾必思還要付健康捐,要是有個可爾必思防治法,規定公開場合不準喝這種白濁色的液體(?)就更有趣了。話說回來,也才十塊錢,我實在很懶得追討,光坐公車去那家小七,來回就要三十塊了,而且我對自以為很正義的消基會實在相當反感。

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)

page 1 of 212next »
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License