2013年12月29日

"Head First Programming" by David Griffiths, Paul Barry - O'Reilly Blogger Review

寫程式是有趣的事,能從小小的螢幕在虛擬世界創造大大的樂趣。不管從事什麼樣的工作,會寫程式代表著比不會的人,更能有效率地「當電腦的主人」,能把很多瑣碎的事情交給二十四小時不辭辛勞的機器代勞。

人人都該學程式設計」正在流行,小學、中學生是學寫程式最好的階段,就因為年紀夠小,很容易就會產生濃厚的興趣,從發掘自己創造力的過程中獲得成就感。

認識程式設計的「第一個語言」很重要,學習程式設計的「第一本書」也非常重要。

O'Reilly Head First 向來以圖文並茂淺顯易懂的風格聞名,我常推薦這系列的書給剛入門的朋友,通常也能得到不錯的評價。

「Head First Programming」是一本適合程式設計初學者的書。

這本書使用 Python 語言進行教學,Python 很適合當作入門程式設計的第一個語言,介面精簡易用的 Python IDLE,作為初學者的工具,只要將範例依樣畫葫蘆輸入一次,就能立即看到執行結果。

IDLE 可以很容易在 Windows、Ubuntu Linux 或 Mac OS X 等系統上安裝使用,甚至一台千元有找的微型電腦 Raspberry Pi(樹藍莓)就能執行 Python IDLE。

對程式設計新手來說,阻礙學習的猛獸來自四面八方,複雜的開發工具、看不懂的錯誤訊息或無法修正的BUG,都會不斷累積挫折感。

Python 的語言設計,讓初學者有個良好的規範可以依循,例如在 if-else statement 的區塊中,必須有清楚的縮排,而且程式碼也較為乾淨,少了許多符號的干擾。

Python 可以很容易處理字串,也可以輕易存取網路資料,所以在第二章的內容,作者就安排了取的網頁原始碼加以處理文字的範例。這是相當實際的範例,學會之後也是經常能夠派上用場。

對於一本入門書來說,需要讓學習者用最少的成本,就先學會重要的程式基本邏輯,判斷式、迴圈及函數(副程式)⋯等;但範例又必須讓學習者感覺到「真實」。使用 Python 豐富的套件庫,很多功能可以用簡易的幾行程式碼完成,例如使用 sqlite3 就能示範一個相當真實的資料庫使用範例,也能輕易打造 GUI 視窗程式,或是完成一個互動的小遊戲。

Head First Programming 有將近 400 頁的厚度,但是大量圖片及範例程式碼已占去不少篇幅,以輕鬆的方式閱讀,大約三天就能讀過且實際練習一個章節,總共十個章節大約只要一個月內就能讀完。

如果您想學習程式設計,或是身邊有朋友剛開始入門,不妨試試閱讀這本書吧。

*本文為 O'Reilly Blogger Review Program 新書推薦專欄,若您對此書有興趣請參考線上商店「Head First Programming」。

備註:台灣歐萊禮曾出版本書中文翻譯「深入淺出程式設計」。

2013年12月26日

Web 開發者專用 Internet Explorer 瀏覽器測試虛擬機器,支援 VirtualBox, VMWare Fusion, Hyper-V, Virtual PC, VMWare Player

關鍵字:modern.IE

modern.IE 提供十多種 pre-built virtual machine images,支援的虛擬機器平台包括:
  1. Windows + VirtualBox, Hyper-V, Virtual PC, VMWare Player
  2. Linux + VirtualBox
  3. Mac OS X + VirtualBox, VMWare Fusion, Parallels Desktop
作業系統包括:
  1. Windows XP
  2. Windows Vista
  3. Windows 7
  4. Windows 8
  5. Windows 8.1
瀏覽器包括 IE6, IE7, IE8, IE9, IE10, IE11。

可以幫開發者省下不少建立虛擬機器的時間。

參考資料

2013年12月16日

七款支援即時預覽的線上 Markdown 文件編輯器

Markdown 是易讀易寫的純文字格式,在這些線上編輯器的幫助下,可以呈現預覽精美的文件,甚至可以發佈到部落格或儲存至雲端硬碟。

Markable.in
http://markable.in/

支援 Dropbox 與 Evernote

Dillinger
http://dillinger.io/

支援 Dropbox、GitHub 與 Google Drive

馬克飛象(马克飞象)
http://maxiang.info/

 支援 Evernote

InstantMark
http://jrham.es/instantmark/

Online Markdown Editor
http://www.ctrlshift.net/project/markdowneditor/

StackEdit
https://stackedit.io/

支援 Dropbox 及 Google Drive 儲存、可發佈至 Blogger、Wordpress、GitHub 及 Tumblr

Online Markdown Viewer
http://www.markdownviewer.com/

2013年12月12日

記錄 2013 Retina MacBook Pro 15" 規格攻頂開箱,同場加映 Speck SmartShell MBPR Cover、Befine Keyboard Skin Big

2010 年的 MacBook Pro 13",已陪伴我走過不少風雨,不管上山下海或是在外頭流浪的日子,都少不了這顆蘋果陪伴。雖然規格是很低的 MBP 入門機,處理器是古老的 Core 2 Duo;但是使用上算相當穩定耐用,陸續將記憶體升級至 8GB加裝 SSD 硬碟,也把電池更新,已經算是升級到極限了。

經過三年每天長時間工作的重度使用,這台筆電還是操不壞打不死;但是效能已經完全不敷使用。

最近的工作需要在 IntelliJ IDEA 13 / NetBeans 7.4 環境下開發專案,老筆電不斷哀嚎。大概寫三行程式碼,跑一次 Build 到可以開始執行,要等上三分鐘這麼誇張。這種經驗不是第一次,以前每次幫電腦升級記憶體,都是為了開發 Java 的專案。

年底推出的新款 Retina MacBook Pro 有比較漂亮的價格和更好的規格,終於喚醒心中沈睡已久的小惡魔,開始打著迎接新蘋果筆電的算盤。

在選擇 MacBook Air 或是 Retina MacBook Pro 之間猶豫好一陣子,新款 Air 有超長的待機時間和速度提升的硬碟,超級輕薄的優點也是無可取代;最新款的 RMBP 則有新一代架構的處理器,待機時間有提高一些,效能則有極致的 16GB 記憶體及 1TB PCIe 硬碟。

新筆電至少又會陪伴我下一個三年,為了不要在這三年內又遇到效能瓶頸,我決定盡所能讓它規格到位。於是開始清算手邊僅存的$$,並且先買好整箱泡麵⋯⋯

「MacBook Pro 15 吋:2.3 GHz,配備 Retina 顯示器」只剩兩項硬體規格可以升級,所以攻頂變得很容易,只要點兩下滑鼠左鍵。


順便加購 AppleCare 延長保固,線上商店下單可以自動登記省麻煩;在網拍可以買到價格更低,但是如果有學生或學校教職員身份,從教育商店下單的價差就會比較少。


2013 年的頂級規格 Retina MacBook Pro 15" 筆電,其實能升級的硬體規格只有紅字的兩項啊!

  • 2.6GHz 四核心 Intel Core i7
  • 16GB 1600MHz DDR3L SDRAM
  • 1TB PCIe 快閃儲存
  • Intel Iris Pro Graphics
  • NVIDIA GeForce GT 750M
  • 配備 2GB GDDR5 記憶體
  • 電池 (8 小時)
  • AppleCare 全方位服務專案(保固延長至三年)

保護殼是和筆電一起從蘋果線上商店訂購的 Speck SmartShell。



花好幾天才搞定訂單付款流程。

這筆訂單金額要六位數字,信用卡一直刷不過,兩次收到蘋果來信通知信用卡授權失敗,來回打了好幾通電話,請銀行幫忙調高臨時信用額度,並且人工備註最後才能通過這幾筆海外刷卡交易。


TNT的貨件追蹤顯示從上海寄出,從收到發貨通知到入手只等四天。


新筆電和週邊到齊。


開箱。


盒子納入收藏品倉庫。。。


等待十幾天終於看到新筆電,持續感動。


兩個 Mini DisplayPort 讓這台筆電可以接兩組桌上型螢幕,完全可以取代桌機的工作。


咦⋯居然內建 HDMI 輸出耶!手邊的轉接線可以回收了。


嫁妝。


為了外出工作保持低調,減少旁人前來搭訕⋯筆電,讓 MacBook Pro 與 SmartShell 合體。說真的,加上外殼真是不好看吶!


裝上保護殼還是有必要,尤其是每次爬山露營都還要帶著筆電工作,總會用各種意想不到的角度撞到。


在台灣蘋果線上商店沒辦法客製全英文鍵盤,算是一大敗筆。


只能靠 BEFINE BIG 系列純英文大字母的鍵盤保護膜,除了減少灰塵和食物碎屑掉進鍵盤的實用性,也減少中文鍵盤那些從來不看的注音與倉頡符號干擾。


Speck SmartShell 和機身的密合度非常高。


長時間工作時佩戴的 GUNNAR 光學眼鏡,加上高解析度的 Retina 顯示器,盯著螢幕看文件和程式碼的舒適度提升不少。


工作室的新成員報到,這是我人生中的第五部筆電、第十部電腦。


看到四核八執行緒和用不完的 16GB 記憶體,感動得快哭了。


打開 IntelliJ IDEA 13 的速度,跟舊筆電跑 Sublime Text 3 差不多耶!再次淚崩。。。


就跟人生至少要爬過次玉山、騎過單車環島、看過嘉明湖或當過背包客出國流浪⋯一樣,有些事情現在不做,這輩子就再也不會做了!!!

所以買 MacBook Pro 規格要攻頂也是人生至少要體驗一次,至少在入手的當下和接下來的半天時間是非常開心的啦!

但是在激情過後,就要開始認真工作償還卡債了!這就是現實人生~~

2013年12月11日

IntelliJ IDEA 13 on Ubuntu Linux 13.10 字型美化


Perfect Font Rendering: IntelliJ IDEA 13 on Ubuntu Linux 字型美化指南

Anti-Aliasing Font

(1) Ubuntu FreeType 字型系統 Patch

看習慣 Mac OS X 的字型,再回到 Ubuntu Linux 桌面總會不習慣。主要的差異是 Font Rendering 的效果,讓 Ubuntu 預設的字型看起來過於銳利。裝上 fontconfig-infinality 即可改善。

sudo add-apt-repository ppa:no1wantdthisname/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install fontconfig-infinality
sudo bash /etc/fonts/infinality/infctl.sh setstyle

最後一道指令要選擇風格,建議用 2 或 4 這兩種其中一個。

Select a style:
1) debug       3) linux       5) osx2      7) win98
2) infinality  4) osx       6) win7      8) winxp

(2) OpenJDK 系統字型 Patch

上個步驟改善 Ubuntu 桌面的字型效果,但是 JDK 並不會乖乖就範。需要加裝 openjdk-fontfix 強制 Java 應用程式採用系統原生字型。

sudo add-apt-repository ppa:no1wantdthisname/openjdk-fontfix
sudo apt-get update
sudo apt-get upgrade

先檢查裝好的 JDK 路徑。
ls -al /usr/lib/jvm

經過 Patch 的版本是 OpenJDK 7,需要找到正確的 JAVA_HOME 路徑。

default-java -> java-1.7.0-openjdk-amd64

可以用 default-java 這個路徑自動連結最新 OpenJDK 版本:

JAVA_HOME=/usr/lib/jvm/default-java

執行 IntelliJ IDEA 之前,先設定 IDEA_JDK 指定開發工具專屬 JDK 路徑。

export IDEA_JDK=/usr/lib/jvm/default-java

上面的設定可以加到 /etc/profile.d/java_home.sh 檔案,日後可以自動套用到每次執行。

(3) 修改 IntelliJ IDEA 字型設定

再來需要修改 JAVA_OPTS 參數,使用 IDEA 的 vmoptions 設定檔是最好的作法。

設定檔位於:

bin/idea64.vmoptions

或(32位元系統):

bin/idea.vmoptions

設定內容範例(紅色字體是字型部份):

-Xms2048m
-Xmx2048m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=96m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dawt.useSystemAAFontSettings=lcd
-Dswing.aatext=true
-Dsun.java2d.xrender=true

修改完成後,就可以看到 Ubuntu 13.10 + IntelliJ IDEA 13 的字型效果幾乎跟 Mac OS X 上執行的水準相當接近。

從下面兩張對照圖,仔細看應該可以看出字型效果的不同之處。對於長時間盯著編輯器工作,一點點差異可是會影響工作的心情呢!

BEFORE


AFTER



使用 IntelliJ IDEA 13 與 Gradle 打造下一個 Java 專案!


對於 Modern Java Development 的需求,例如使用 Spring、Scala、Groovy、Grails、Gradle 或 Maven,以及開發 Android App 等;Eclipse 或 NetBeans 已經顯得有些老態,跟不上時代變化快速的腳步。

IntelliJ IDEA 13 是非常值得一試的 Java IDE,它的開發商 JetBrains 相當具有 Sense,相當瞭解開發者的需求是什麼。

Google 最新的 Android Studio 開發工具,已經捨棄 Eclipse 改用 IntelliJ IDEA。未來我們可以期待 IDEA 成為最強大的 Java IDE 工具,事實上它現在就已經很接近最強大。

IntelliJ IDEA 有分商業付費版與免費社群版(CE)。

要付費一直對喜歡用免費工具的開發者,造成一種心理上的不安。

近年來,拜先進的建置工具如 Maven 及 Gradle 所賜;免費的 IntelliJ IDEA CE 版本,已經足以滿足多數專案的開發需求。

原因是 IntelliJ IDEA CE 對 Maven 與 Gradle 有相當良好的支援,所以在專案中只要使用 Maven 或 Gradle 定義 Build Configuration,不管專案類型是 Android、Spring、Java EE、Java Swing/SWT 等,都可以輕鬆在 IDEA 獲得全面的支援。

這一點跟過去的 Java IDE 很不一樣,從前很多開發者依賴 IDE 提供特殊專案類型的直接支援,例如直接建立一個 Spring MVC 專案,然後依賴 IDE 內建的自動化建置設定。

現代的 Java 專案已經交由先進的建置工具如 Maven 及 Gradle 管理,所以舉凡 Compile、Test、Dependency Management、Package 或 Deploy 等流程,都必須被明確定義在專案的建置設定檔,而不依賴開發工具提供的專屬設定。

這種不依賴開發工具的建置流程,雖然捨棄了一點便利性(無法直接用圖形介面設定);但帶來更多的好處。例如需要加入 Jenkins CI 的持續整合,使用 Maven 或 Gradle 可以得到更一致性的建置流程管理。

最新發行的 IntelliJ IDEA 13 提供更好的 Gradle 支援,以下是一段摘自 JetBrains 官方網誌的說明。

Another key enhancement in IntelliJ IDEA 13 is refined Gradle support, including improved project synchronization, code completion for dependencies and plugins, quick documentation, and code generation. IntelliJ IDEA 13 is even able to configure Web facet and WAR artifacts automatically based on Gradle files. You can take a look at the Gradle support in this video.


關於 Gradle 的教學,推薦閱讀 CodeData 網站由 qrtt1 發表的「認識 Gradle」系列文章,有很精采且易懂的說明。

認識 Gradle」系列文章懶人包。

關於如何用 IntelliJ 開始建立 Gradle 自動建置的 Java 專案,請參考:
lyhcode by lyhcode
歡迎轉載,請務必註明出處!