Showing posts with label 程式語言. Show all posts
Showing posts with label 程式語言. Show all posts

Wednesday, April 22, 2009

PhoneBook 讀取 VCard (*.vcf) 格式檔案

繼上次vNote Reader 0.1推出後,好評不斷。(← 完全沒有的事 XDD) 上次是讀*.vnt,這次換讀*.vcf。從手機裡傳出來的電話簿,大概都是 *.vcf 這個格式。「瘋布可」功能基本上相當簡陋,反正現在流行極簡風,勉強可以用就好啦。建議在Java 1.5以上的環境上執行,「瘋布可」,無毒、環保、免安裝,但小心bug出沒。

PhoneBook下載



‧解壓縮後,點PhoneBook.jar檔案直接執行。
‧範例檔案(vCard.cvf)
  1. 這個小東西可以讀取 *.vcf 的檔案。檔案是BEGIN:VCARD開頭,END:VCARD結尾,但是請不要亂偽裝成這樣的檔案來餵我,「瘋布可」會哭給你看。
  2. 第二個功能是可以把原本的 *.vcf 裡面的某些欄位轉換成 XML 格式,轉換成功後,會自動用計事本彈出,膽小者小心使用。不過,不知道…如果電腦沒有計事本,它會怎樣…
  3. 當檔案成功載入後,滑鼠右鍵有複製的功能。
  4. 本玩意,效能頗不佳。

Tuesday, February 24, 2009

ANTLR (4) - Simple Lexer/Parser Example

上篇介紹一個簡單的Lexer範例後,接著我們把Parser也拿進來一起講。在下面的例子中,我們會讀進一個文字檔,讓這個文字檔根據我們想要的格式再做一次編排。如下圖所示。



大概想一下要怎麼把上面的data轉換成下面的格式?先前的Lexer可以幫我們辨識文件裡的組成元件,分辨什麼是數字,分辨什麼是字母。但就原始data來看,我們還必須讓程式知道每一筆資料,到底以什麼樣的順序包含了這些小元件。換句話說,我們必需分析一下這份資料檔案的結構,是如何由這些元件組成的。要分析一份資料,以top-down的思考方式為佳。

Wednesday, January 14, 2009

ANTLR (3) - Simple Lexer Example

下面是一個簡單的Lexer例子,用來判讀字串中的數字和英文字母。

simple.g
class SimpleLexer extends Lexer;

options { k=1; filter=true; }

ALPHA : ('a'..'z'|'A'..'Z')+
{ System.out.println("Found alpha: "+ getText()); }
;

NUMERIC : ('0'..'9')+
{ System.out.println("Found numeric: "+ getText()); }
;

EXIT : '.'
{ System.exit(0); }
;

接著我們一行一行解釋這段程式的意義。

Wednesday, December 31, 2008

ANTLR (2) - Lexer和Parser的文件格式

有了上一篇的基本概念,接下來看ANTLR Lexer和Parser的文件格式。

*ANTLR的lib可以在ANTLR的官方網站下載。
*以下資料參考:ANTLR by Ashley J.S Mills

一份ANTLR的文件,是由幾個部份所組成的,有些是必要,有些則是選擇性寫或不寫。一份基本的ANTLR文件(*.g)大概如下圖所示。如果能馬上理解下面的格式,想必閣下是神人等級的人物,就直接祝你新年快樂了,哈。反正大概有個印象就好,下面會慢慢解釋。

Sunday, December 28, 2008

ANTLR (1) - 概念介紹

ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.

根據ANTLR官方網站的介紹,ANTLR是一個能提供辨識文章結構、語法的語言工具,根據使用者定義的文法結構,把資料讀入處理過後再輸出。而ANTLR算是一個中介語言,他能把使用者自訂的文法結構轉換成使用者指定的程式語言,例如:Java, C/C++, C#...等。(支援語言列表)

簡單來說,ANTLR就是一個parser的製造機。什麼是parser,感覺就像灌香腸,把原料絞肉(input data)放進去,經過機器(parser),就變成肥肥的香腸(data output)。

ANTLR主要由兩樣東西組成:LexerParser

Saturday, December 13, 2008

Java GUI的恩怨情仇

第一次接觸Java的GUI是在大一,掐指一算,六年前...計事本無敵,硬摳都可以寫出Swing介面,不過實在不是個有效率的開發方法,但不得不承認,這樣硬幹上來,內心覺得踏實無比。看著一堆英文字,竟然可以搞出個活生生的介面,不但可以按它、拖它、戳它,它還會乖乖照著你的指示動作,這太好玩了。一直覺得Swing的介面東西很可愛,雖然有人覺得他很醜...

vNoteReader出生前,只隱隱約約記得,參加SOA比賽時,Sigma有用過SWT,他說用SWT來開發GUI介面很方便。前幾個禮拜,在網路上看到一篇Java GUI的歷史發展,雖然跟程式開發沒啥直接關係,但SWT的輪廓卻慢慢的在腦海中成形。那種感覺就像是藉由一個人的成長背景,來瞭解這個人;藉由歷史的演進,瞭解現有的一切都其來有自。

參考資料:AWT, SWT, Swing: Java GUI Clean Up



Sunday, December 7, 2008

vNote Reader 0.1


下載版本:Windows

vNote Reader 自我介紹
  • 我的名字:vNote Reader 0.1
  • 我的生日:2008年12月6日
  • 我的媽媽:陳小白
  • 生存環境:作業系統Windows、JVM版本1.5
  • 最喜歡吃:*.vnt的檔案,又稱vNote,吃其他怪東西,我會壞掉 ><
  • 聽媽媽說:我只能吃QUOTED-PRINTABLE編碼的東西,不然我會吐出奇怪的東西
  • 食物來源:從手機裡傳出來的便簽檔(*.vnt)
  • 我最討厭:亂餵我吃奇怪的東西,我會哭給你看喔
  • 怎麼用我:點兩下,然後自己看著辦。不然不要急,等下媽媽會告訴你
自行開發的乞丐版vNote Reader,穩定度與適用範圍未知,系統因為執行這個小東西葛屁不負責。因為本來就只是要寫來自己方便用,實在是在網路上翻了很久,都沒找到合用的...真的很奇怪。暫時應該不會有其他更新版本,除非哪天又太衝動,想幫它多加功能。如果有bug要回報,也是很歡迎 XDDD 至於要不要改,看心情、看時間、看天氣,謝謝,科。

Saturday, April 12, 2008

Processing

首先,感謝強哥推薦使用Processing來做為迷宮遊戲的實作語言,真的節省了很多很多很多時間,也把原本自己認為沒有足夠能力寫出來的東西,硬是在短短一個晚上就孵出雛型,還有時間跑去和同學吃宵夜。這玩意兒,真的是太強大了。

根據官方網站的說法,Processing是一個open source的程式語言,適用在圖像、動畫、或是人機互動的程式設計上。一般程式語言,如Java或c/c++之類的,要寫和user互動的介面,說有多痛苦就有多痛苦。雖然也斷斷續續寫了將近六年的程式,但平常很少寫這類的application,寫網頁系統佔大多數。這次竟然還要寫可以讓使用者玩的迷宮,救人喔...

但是,Processing真的把不可能變成可能...。接獲可用Processing的線報後,從下午開始讀官網上的Basics範例,到晚上九點已經把迷宮的雛型整個做出來了,真的是史上超快速成班,現在回想起來都覺得不可思議,三個多小時就寫出一支小遊戲....姑且稱它Tony Maze好了 XD。(不包含畫面美化的後製時間)

Tony Maze試玩版