2013年4月18日 星期四

用Writer就可以開PDF

知道嗎? 可以用 Libre Office Writer直接開啟 PDF 檔編輯。
http://www.geektips.info/2011/05/convert-pdf-to-odt-ubuntu/

但是呢,實際用了之後發現,每一行都變成獨立的圖文框物件。這不是我要的啊!


2012年7月20日 星期五

(Python)在ABC前重複4個空白

您如何用程式語言實現「在ABC前重複4個空白」?
看看Python可以這麼做:
print( ' '* 4 + 'ABC' )
我想替這個功能按「I like」,不知道要在那邊按。

2012年1月27日 星期五

從 Play framework 的 controller 看物件導向的優點

學習了不少的 frameworks, design patterns,我想簡單的描述它們的優點,
以讓團隊成員,甚至長官能夠瞭解,並支持 refactoring 和 test 的必要性。
很多 design patterns 的目的都不是在減少打字量,甚至還會增加程式行數。
剛好我從 Play 的官網中看到這一段,讓我想要記下來。

同樣功能的程式,分三階段演進:

public static void show() {
    String id_str = params.get( "id" );
    Integer id = Integer.parseInt( id_str );
    System.out.println( id );
}

public static void show() {
    Integer id = params.get( "id", Integer.class );
    System.out.println( id );
}

public static void show( Integer id ) {
    System.out.println( id );
}

最後的程式碼最精簡,但不代表整體的程式碼最少。事實上,是有些程式碼被隱藏起來了,
被隱藏在父類別。但是,實際應用時,程式碼確實變少了。

這是我認為 design patterns 的好處-讓物件/開發人員彼此分工。或許負責處理架構的
物件/人員,工作量變多了,但換來的是應用端的輕省及彈性,因此值得。

參考資料:
http://www.playframework.org/documentation/1.2.4/controllers

2012年1月25日 星期三

Scala Groovy and Xtend

今天看完這篇Groovy的簡介

雖然資料是舊的,但原理應該一樣。很容易懂的文章。
之前在評估要學Scala還是Groovy時,看到Scala的評價比較高,而且連Groovy的作者都推薦。所以,就選擇了Scala開始學。Scala非常有趣,令我期待它能得到大廠的支援,廣為使用。但是版本間不相容和其它的問題,對正式專案來說相當不利,只能期待它更成熟。

之前我就發現SpringCore選擇Groovy而非Scala,雖然當時我不知道原因。現在,看來是因為Groovy更簡單易懂。而且,先前學Scala的經驗沒有白費,因為它們的理念非常相同。應該說Groovy用到了部份Scala的特性,而它們的用法幾乎一致。

Xtend的立意也很好,語法和Scala也很像,不同的是,它會先產生Java的原始碼(.java),而Scala和Groovy是直接編譯成.class。但我發現它會用自己的套件,取代JDK的原生套件,這點對我要用在專案中卻是減分。因為,要說服長官讓我使用新技術的前提,通常是我得保證不會影響專案的時程和穩定性。最好就是和原來一樣。

也因此,我自己在專案中寫了一些仿Scala, Groovy或是仿Python的功能,而不能直接使用.scala, .groovy。目前我還是只能將Scala/Groovy用在自己有興趣的專案上。


其它好文章:

    Java輕鬆玩 - 陣列與水果盒之間的關係

    這篇對已經熟悉Java的我來說很有幫助

2012年1月22日 星期日

Java YAML

今天在學習Play的時侯,發現了YAML的存在。
看來真是個好東西,我迫不及待要用在JUnit裡面了。
可以彌補Java沒有"""(Scala/Python有)的缺點。
初步看到有JYAML和SnakeYAML,因為Play內建的就是SnakeYAML,
而且到Google code上去看,是活躍的專案,所以決定用SnakeYAML。