Dev-C++ 的前世今生

Dev-C++ 是一套 Windows 上免費(且開放原始碼)的 C/C++ 整合式開發環境 (IDE)。它的 GUI 部份基本上是使用 Delphi 寫成,而背後的編譯器則是使用 Mingw 版本的 GCC。因為可以免費取得,而且安裝、使用上又方便(跟原始 Mingw GCC 比較的話),所以不少學校在教 C++ 的時候,都建議學生使用這一套 IDE。

但 Dev-C++ 在網路上有幾個常見的分支,常常看到初學者使用非常舊的版本,不但編譯器不支援新的 C++ 語法,而且 Dev-C++ 本身還可能有尚未修正的 bug。在此稍微聊一下 Dev-C++ 常見的幾個版本,並且提出給 C/C++ 初學者的建議。

Continue reading  

[Exercism][Rust] Parallel Letter Frequency

題目網址(需登入 Exercism)

簡單來說,就是要用 concurrency 的方式,將「計算文章中每個字母(數字和標點不計)出現的次數」,分配給 worker_count 個 thread 去做,最後再整合在一起。

輸入的資料,第一個是 &str 的 array slice,第二個是 worker_count

Continue reading  

[Exercism][Rust] Diffie Hellman

題目網址(需登入 Exercism)

這個題目在 Rust 語言方面,沒有什麼太困難的地方。所以重點都是在 modular arithmetic 的運算上。

use rand::Rng;

pub fn private_key(p: u64) -> u64 {
    let mut rng = rand::thread_rng();
    rng.gen_range(2..p)
}

pub fn public_key(p: u64, g: u64, a: u64) -> u64 {
    modular_exp(g, a, p)
}

pub fn secret(p: u64, b_pub: u64, a: u64) -> u64 {
    modular_exp(b_pub, a, p)
}
Continue reading  

Wizardry 開發史 (3) – Wizardry

當 Robert Woodhead 完成 Galactic Attack 時,其實他腦中已經有下一部遊戲的想法了。

他繼續從 PLATO 系統上找靈感。當時 PLATO 系統上有幾個類似 D&DDungeons and Dragons,《龍與地下城》)系統的角色扮演遊戲,像是 dnd(看名字就知道)、Moria(這個名字就是《魔戒》中的「摩瑞亞坑道」)、Oubliette(即「地下城」的法文),以及 Avatar 等。這些遊戲在大學校園中相當受歡迎,而家用電腦的領域中卻沒有類似的遊戲。Robert 思索著該如何將這樣的遊戲系統轉移到 Apple ][ 上。他將這個遊戲計畫的名稱暫定為 Paladin

巧的是,在康乃爾大學中,也有個主修資訊的研究生在做類似的事情。那個傢伙就是 Andrew Greenburg(傳說中的 Werdna)。

Continue reading  

Wizardry 開發史 (2) – Galactic Attack

不同版本的 Galactic Attack 使用手冊。左邊舊版的公司名稱還是 Siro-tech。

Siro-Tech 成立後,Norman 和 Robert 就開始討論在 Info-Tree 之後的第二套產品要做什麼。Robert 在電腦展時注意到,遊戲軟體特別吸引人的目光,於是就提議來做遊戲。Norman 一開始不是很贊成,因為他覺得一台電腦這麼貴,應該沒什麼人會專門拿來玩 game 吧?還是做些商業軟體比較實際。不過最後,Norman 還是接受了 Robert 的意見(這人腦波好像特別弱? XD),讓 Robert 開始開發遊戲軟體。

Continue reading  

Wizardry 開發史 (1) – Sir-Tech 的誕生

Sir-Tech 重要人物合照。由左至右分別為 Frederick Sirotek, Janice Woodhead, Robert Woodhead, Robert Sirotek, Jean Bromley, Peter Bresett, Lynn Dupree, Norman Sirotek, 以及 Linda Sirotek。Linda 後來嫁給 Ian Currie,冠夫姓成為 Linda Currie,也就是 Wizardry 8 的製作人。
(圖片來源:http://www.softalkapple.com/content/exec-sir-tech-wizzing-top

讓我們從 Sirotek 家族的故事開始談起。

Sirotek 家族原本住在捷克(當時為捷克斯洛伐克的一部份)。在戰間期的那段時間,捷克斯洛伐克的經濟快速發展,為全球十大經濟體之一。當時 Bedrich Sirotek 是一名建築師,因為一戰過後各地建設需求高,他的生意做得不錯,賺了不少錢。

有了錢當然繼續投資。Bendrich 開始買地,其中最特別的,是買下一棟 12 世紀落成的羅馬式古堡!雖然古堡在被 Bendrich 買下前已經荒廢了數十年,但 Bendrich 很喜歡它,將它視為他建築事業王國的王座。買下這座城堡後,Bendrich 馬上帶著家人搬進去,然後自己親手逐步翻修。

Continue reading  

新版 WP 程式碼測試

對於技術文章來說,程式碼是很重要的。接下來就讓我們測試一下吧!

這一段是 C++(使用 Markdown 區塊):

#include <iostream>

using namespace std;

int main(void) {
  cout << "Hello, world\n";
  return 0;
}

這一段是 HTML(使用 Markdown 區塊):

<body>Hello, world</body>

簡單的 Python 範例(使用 Prismatic 區塊):

def new_function(p):
    p = p + 1
    return p

所以,如果要插入程式碼(而且有 syntax highlight)的話,有兩種方法:

  1. 插入 Markdown 區塊,然後使用 ```lang 語法插入程式碼。
  2. 使用 Prismatic 區塊。

如果要在上述的兩種區塊中顯示程式碼的行號,點開「區塊」中的「進階設定」,然後在「附加的 CSS 類別」中輸入 line-numbers

Rock You 10 歌詞英譯 (English Translation)

這是多麼的幸運                How lucky it is
我們剛好在一起                We happened to be together
製造吵鬧的噪音                Making some loud noises
唱著搖滾的歌曲                Singing rock'n roll music
筋疲力盡的喘息                If you're worn-out and panting
請你記得我的聲音              Please recognize my voice
在為你加油鼓勵                I'm here cheering for you

[A]                         [A]
送你一句  堅定的誓言          Please accept my steady promise
我永遠陪著你                 I'll be with you forever
帶我一起  挑戰全世界          Bring me to challenge the world
牽著我  走下去(這是必須)     Hold my hand and go ahead (that's a must)
不管經歷多少的風雨            No matter what difficulties we have to face
別怕一時失去了勇氣            Fear not losing courage sometimes
我會看著你                   I'll be looking after you

[B]                         [B]
Let's go crazy 讓我們一起    Let's go crazy and be together
Rock you 10, ya             Rock you 10, ya
Don't say maybe 永遠不分離   Don't say maybe, never be apart
Rock you 10, oh             Rock you 10, oh
Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh
期待未來每天的美麗            Hoping to share beauties of each day
都有我和你                   With you and me

有時嘻鬧的開心               Sometimes frolicking happily
有時嚴肅的呼吸               Sometimes breathing seriously
累積點點的默契               Accumulating our team chemistry
舉起征戰的大旗               Holding our flag to proceed
太多煩惱在壓抑               If you have too much to worry
請你記得我的聲音             Please recognize my voice
在為你加油鼓勵               I'm here cheering for you

(重覆 A)                  (Repeat A)

[C]                         [C]
Let's go crazy 讓我們一起    Let's go crazy and be together
Rock you 10, ya             Rock you 10, ya
Don't say maybe 永遠不分離   Don't say maybe, never be apart
Rock you 10, oh             Rock you 10, oh
Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh
創造屬於我們的勝利            Create our own victory
非常可以                     Surely say yes
Don't you worry 就算會哭泣   Don't you worry, even with tears
Rock you 10, ya             Rock you 10, ya
I’m so happy 當我們一起      I'm so happy when we're together
Rock you 10, oh             Rock you 10, oh
Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh  Oh, oh oh oh
期待未來每天的美麗            Hoping to share beauties of each day
都有我和你                   With you and me

這是新的世界                 This is a whole new world
迎接新的視野                 Openning a whole new view
加入我們的行列               Join us as a team
創造新的永遠                 Creating a new legend of eternity
睜開雙眼  你會發現明天        Open your eyes and you'll see
有希望無限                   A future with endless hope

(重覆 C)                   (Repeat C)

(重覆 B)                   (Repeat B)

詞/Lyrics: 昌哥 Vinc Cheng, 林雍恆 Hanz Lin
曲/Music: 林雍恆 Hanz Lin, 米菲 Mify Chen
英譯/English Translation: Kenneth Lo

Lamigo與我有猿 – 我們的猿份

(原文張貼於 PTT https://www.ptt.cc/bbs/Monkeys/M.1571754227.A.BF7.html

2019 年 10 月 17 日,台中洲際棒球場。我跟著數千名的十號隊友們,一起拋下了藍色的彩帶。終於,我們親眼見證了 Lamigo 王朝的誕生。手上拿著印著「劉玠廷」的毛巾,聽著領隊講話,一向被老婆笑說沒有眼腺的我,眼眶也忍不住濕了。

劉家經營這支球隊 16 年了,而我也當了 15 年的熊/猿迷。我想,是時候整理一下這十多年來的回憶了。


Continue reading  

UTF-8 與 BOM

Unicode 簡介

Unicode(中文翻成「萬國碼」或「統一碼」)是一種文字編碼方式。主要的目的,是希望能提供一套統一的標準,以數字的方式表示全世界人類使用的文字,方便利用電腦、網路儲存及傳輸文字資訊。詳細的歷史沿革,網路上可以找到很多文章,在此不再贅述。

關於碼點 Code Point

每一個被 Unicode 規範定義的文字,都有一個獨一無二的數值,我們稱之為「碼點 (Code Point,亦翻作「代碼點」)」。通常我們會用 U+xxxxxxxx 代表 16 進位的數字)這樣的格式來表示碼點。

Continue reading