2014年12月4日

GitBook + PlantUML 以 Markdown 快速製作 UML 教材


GitBook 是使用 Markdown 編寫電子書的工具及平台。

Markdown 寫書在技術圈已經風行多年,而 GitBook 完美整合了 Git 版本控制,甚至直接串接 GitHub,讓寫作技術書籍更加方便。最近火紅的柯P的市政白皮書也是利用 GitBook 發行。

最近應邀到彰化某科大擔任「系統分析與設計」課程的業師,教材的準備我想拋棄去年的 Slide 作法,直接改用最近長時間投入使用的 GitBook。

使用 Markdown 格式編寫教材講義,最方便之處就是文字和程式很容易修改。所以上課過程還可以隨時增刪講義內容,即時更新發佈給學生。GitBook 平台幫了很大的忙,基本需要的功能它都能做到了(過去為做到自動化的 publish 我們甚至自己開發了 ContPub 平台XDDD)。

GitBook 本身的 off-line editor 用起來效率不佳,我還是習慣用 Vim 或 Sublime Text 編寫文字。

Markdown 的即時 Preview 是很多人在意的功能,GitBook editor 有提供 preview,但是經常遇到 crash 問題,所以我改用 console 下的 gitbook command-line 工具,這是利用 Node.js 開發的 client tool,用來將 Markdown 原始檔轉成電子書格式。

編寫軟工、系統分析的教材,最麻煩的地方就是一些 UML 繪製,每次的修改都需要找到原始檔,做完再匯出成圖片。

我找到一個 PlantUML for GitBook Plugin,這個延伸工具很棒,自動將 Markdown 裡面的 UML code block 自動轉成 SVG 的圖片。

UML code block 看起來像這樣:


轉換出來的結果(利用 gitbook serve 搭配瀏覽器 livereload 即時預覽電子書呈現效果):


原始的 PlantUML Plugin 不好用,而且 commit 到 GitBook 的 source 也無法正常轉檔,所以我 fork 一份 plugin 自己修改成堪用的版本。

GitBook PlantUML Plugin
https://github.com/lyhcode/gitbook-plugin-plantuml

這個版本修正一些問題,讓生成的圖片可以依照 section file name 放置在 .md 的相同路徑下。重要的是重新以「gitbook-plugin-plantuml」發佈到 NPM,讓 GitBook 遠端轉檔也能順利 pass(但真正的轉檔工作只能在 local 進行)。

花了幾個小時才搞定整個流暢的 UML 教材編寫流程,但做好之後真的讓教材開發效率提高不少 : ) 感謝 GitBook 讓我可以吃自己的狗食(Eat my own dog food),自己的教材自己寫,自己的教材開發工具也能自己擴充 : )


2014年11月20日

生產履歷掛保證,來自雲林的新鮮柳丁,由雲端農場產地現採新鮮直送



2014 年的新鮮柳丁開始採收囉,跟大家分享一個採買柳丁的好管道,只要上網訂購就能宅配到府,而且是產地新鮮現採,還有生產履歷掛保證。

雲端農場

在食安疑雲籠罩的台灣,連以前認為吃了很健康的水果,都可能有危險農藥殘留或是為了搶收保鮮而添加防腐或催熟藥劑。雲端農場的柳丁每箱都有附生產履歷,可以讓消費者上網輸入批號就能查詢栽種記錄,透明化的 E 化農場管理流程,更能保障消費者的健康。

----

在食品與農產品安全問題叢生之際,雲科大工管系雲端農業實驗室,多年來嘗試將製造業管理經驗與系統導入田間,開發食品足跡管理系統並上線應用。 實驗室在今年創業成立創毅資訊公司,正式投入農業服務,專職全年追蹤管理農場的進、產、銷、存及檢驗,建立可徵信的農產品足跡。我們的使命在讓消費者以平價購買到安全優質的農產品、讓農民以企業化經營農場得到合理收入、並讓雲科大投入新一代雲端農業的創新創業。

  1. 提升農民收入,協助農民維持生計。
  2. 農場管理電子e化,真實反映農產品原物料使用、栽種過程、農藥檢驗結果。
  3. 推廣農產品生產履歷,提供民眾品質優良且安全有保障的農產品。
  4. 培訓農業管理人才,提供社會創新就業機會。
  5. 擴展工業工程與管理系在農業的藍海應用領域,培養訓練學生解決相關問題的能力。

2014年專用訂購單

讓柳丁活出柳丁的樣子

2014年11月6日

台中・Meet30・點一杯果汁享用WIFI空間・精誠路

Meet30 隱身在精誠路商圈,乍看之下像是一間外帶飲料店,價位是在20~60元的果汁茶飲,也有提供點心。但是和一般飲料店不同的是,Meet30在二、三樓提供舒適的空間,可以坐下來歇腳,也有免費WIFI網路可以上網,而且不像很多連鎖店那樣嘈雜,很適合出差或旅行途中,想找個地方坐下來喝杯果汁、用電腦。

地址:台中市西區精誠路105-3號(接近公益路口)

2014年11月2日

《開箱篇》不斷電系統、在線互動式 APC BACK-UPS PRO 700(BR700G-TW)

IMG_0604
我的工作室搬到台中新家已有段時間,本來覺得全新的大樓,不會像老舊公寓常有跳電問題,但是萬萬沒想到才幾個月的時間,有兩次工作到一半就遇到停電。有次停電的時候,剛好和北部同事進行遠距視訊會議,結果會議討論到一半,連喊一聲「啊」的機會都沒有,就黯然從會議群組中斷線。這才讓我意識到,雖然平常都用筆電不必擔心停電,但是現在平常用的軟體都很依賴網路連線,遇到停電時的網路斷線也是一樣措手不及,讓我又想要重新審視不斷電系統的必要性。
不斷電系統(簡稱 UPS)是預防電力突然中斷的設備,遇到突然停電的時候,它可以緊急切換到電瓶供電,提供電腦多運作幾分鐘的時間,讓使用者來得及將工作存檔、將系統正常關機。
我第一次接觸 UPS 產品,約莫是在十年前開始在家架設 Linux 伺服器時。因為老舊公寓常跳電,尤其是在夏天的時候,經常家人打開吹風機,就要趕緊到電箱將無熔絲開關(breaker)重新打開,再匆忙回去檢查電腦的狀況;水電師傅來家裡檢查過幾次迴路,但是情況一直都沒有改善。為了解決跳電問題,就買了一台千元有找的 500VA UPS,有不斷電系統 hold 住電源,曾有過 Linux 主機超過 150 天不曾關機的 uptime 紀錄。
後來幫桌上型電腦配備不斷電系統成為我的習慣,不只是我自己的每部桌機都有不斷電系統,每次幫朋友開立組裝電腦的清單時,我也會把 UPS 加在預算內,這項產品就像買保險一樣,你永遠不知道自己什麼時候會用到,但總有一天可能會碰到。尤其是外頭颱風天、閃電打雷、施工挖馬路、⋯,或者自己不小心拔錯插頭、路人踢到電線,只要有不斷電系統守護,就可以繼續安心使用電腦。
筆電和平板已取代許多家用電腦的需求,有內建電池就不需要外加 UPS 設備。不過對於科技產品的玩家,還是有許多設備需要用到不斷電系統。
清點一下手邊的資訊產品,目前會需要用到不斷電系統的設備大概有:
  • 伺服器主機
  • 桌上型電腦
  • 網路儲存設備(NAS)
  • 電視遊樂器
  • 音響及投影設備
家用版的 NAS 有平價化的趨勢,搭配 100M 以上的頻寬,構建超過 2TB 的個人雲端儲存,方便隨時存取個人資料,只要不到一萬多元的預算就能達成。不過很多朋友在選購 NAS 時,只注意到要搭配 RAID 避免硬碟毀損流失資料,卻常忽略 NAS 遇到停電時,需要搭配 UPS 才能確保資料正常寫入、關機。電視遊樂器也同樣需要不斷電系統,這樣才能保障遊戲進度能順利存檔,在主機執行系統更新過程中,也可以避免因為停電而發生中斷。
最近剛好有機會試用一款不斷電系統,來自 APC 施耐德的產品「APC Back-UPS Pro 700」。這幾年 APC 的市佔率有亮眼的成績,也加深我們對這款產品的期待。

2014年10月3日

Mac OS X 必備,好用的 Homebrew Cask 軟體安裝工具


在 Mac OS X 安裝軟體,除了某些有上架到 App Store 的程式之外,通常需要先 google 找到軟體官網,然後下載安裝,如果日後遇到更新,就必須再一次下載更新。如果軟體安裝的數量一多,就會覺得很麻煩。

Mac OS X 有兩個好用的安裝工具,分別是 Homebrew 與 MacPorts Project,但是這兩種 tool 可以裝的軟體,大多是 command-line 的 Unix-like 程式,大部分 Desktop 軟體就無法用這兩套工具安裝。

Homebrew Cask 是延伸自 Homebrew 的安裝工具,它可以用來安裝許多常用軟體如 Google Chrome 或 VirtualBox 等。

像是 VirtualBox 的更新提示就經常讓筆者困擾,因為將檢查更新功能關閉,會擔心沒跟到重要的更新,但是每次看到更新提示顯示有新版本,它又無法自動更新,就必須手動打開網站下載,這樣實在很浪費時間。

所以我也將 VirtualBox 交給 Homebrew Cask 統一管理,如此一來省事不少,未來重灌 Mac OS X 也可以快速將這些常用工具恢復安裝。

安裝 Homebrew 只要在終端機(Terminal)下執行兩個指令。

步驟一、先安裝 Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

步驟二、再安裝 Homebrew Cask

brew install caskroom/cask/brew-cask

接下來就能用 Cask 安裝需要的軟體:

brew cask install macdown
brew cask install virtualbox

延伸閱讀

2014年9月23日

書評: "Learning Responsive Web Design" A Beginner's Guide By Clarissa Peterson, O'Reilly

Clarissa Peterson 是一位 UX 設計師與 Front-end 開發者,她也是顧問公司 Peterson/Kandy 的共同創辦人,專注於 Responsive Website 設計的領域。

Responsive Web Design 中文大多譯為響應式網頁設計,市面上能找到的書不多,近來總算有幾本中文書可以參考。網頁開發者在掌握 HTML5/CSS3 技術之後,下一步就需要學習 Responsive 的概念及方法。

許多前端開發框架諸如 Twitter Bootstrap 或是 Foundation,就是非常強調 Responsive 的框架,內建的 Grid System 能夠讓開發者更容易打造跨裝置的網頁。

瞭解 Responsive 的原理及實作方法,才能使 Programmer 與 Designer 的合作更順暢,彼此都知道什麼樣的設計才適合不同裝置。

儘管有很多框架可以幫忙,但是做出“好”的 Responsive 網頁,需要仰賴很多經驗的累積,畢竟終端使用者瀏覽的裝置類型眾多,沒有經驗的開發者,要走過漫漫長路才能學習成長。這本書將作者的經驗濃縮,讓讀者用最短的時間汲取她的設計經驗。

----
Learning Responsive Web Design
A Beginner's Guide
Publisher: O'Reilly Media
Final Release Date: June 2014
Pages: 412

Deliver an optimal user experience to all devices—including tablets, smartphones, feature phones, laptops, and large screens—by learning the basics of responsive web design. In this hands-on guide, UX designer Clarissa Peterson explains how responsive web design works, and takes you through a responsive workflow from project kickoff to site launch.
Ideal for anyone involved in the process of creating websites—not just developers—this book teaches you fundamental strategies and techniques for using HTML and CSS to design websites that not only adapt to any screen size, but also use progressive enhancement to provide a better user experience based on device capabilities such as touchscreens and retina displays.
  • Start with content strategy before creating a visual design
  • Learn why your default design should be for the narrowest screens
  • Explore the HTML elements and CSS properties essential for responsive web design
  • Use media queries to display different CSS styles based on a device’s viewport width
  • Handle elements such as images, typography, and navigation
  • Use performance optimization techniques to make your site lighter and faster

Buy this book from O'Reilly

2014年9月12日

提高在家工作戰鬥力 100% 的露西椅揭秘

(圖片來源:LUCY電影宣傳)
(圖片來源:LUCY電影宣傳)
盧貝松導演的新片《露西 LUCY》在台灣取景,台北101等地標出現在大螢幕,相信有不少畫面帶給大家一種熟悉的感覺。

但是對阿宅來說,電影裡面最令人感同身受的畫面,其實就是片尾露西開啓100%腦力時,坐在上面旋轉穿越時空的人體工學電腦椅。這可是多年來許多熱血工作者開啓100%戰鬥力的不為人知秘密,沒想到就在電影中公諸於世了。

說到人體工學椅,相信大家對 Herman Miller 一定不陌生,這個品牌旗下最有名的兩張經典電腦椅 Aeron 與 Mirra 早有許多開箱報導,也是許多專業電腦工作者必備的生財工具。

經典的人體工學電腦椅 Herman Miller Aeron Chair
獲得美國「紐約現代藝術博物館」列入永久典藏的榮耀
Aeron Chair 是在 1994 年問世的經典款,而 LUCY 電影中使用的電腦椅,則是 2008 才設計出來的新款 Embody Chair,材質和功能性都隨著時代而進步。在台灣代理商販售的 Embody Chair 一張價格不便宜,但是讓屁股一坐就上癮的魅力,仍然擋不住心中小惡魔的邪惡勢力,這幾年陸續有不少朋友帶它回家。

露西電影採用的黑色款式 Embody Chair
許多人初次看到 Embody Chair 會覺得它其貌不揚,接著被售價嚇到,但是屁股坐上去就會陷入敗家的深淵

坊間很多上萬元的人體工學椅,但是很少像 Herman Miller 一樣敢提供十年保固,而且備受專業工作者的喜愛,質感的差異在現場比較也會覺得相當明顯。

第一次入手 Herman Miller Embody 電腦椅,是在 2012 年某次嚴重的背痛,因為經年累月久坐在電腦前長時間工作,造成有段時間每天都要到骨科報到接受物理治療,苦不堪言的經驗讓我決定換張好椅子。

現實生活中的 Embody Chair,無法讓你開啓100%的腦力;但確實能夠提高工作效率達100%,因為分期六個月、每期還要繳款8000元的壓力,坐在上面的每分每秒都會催促你專心工作提升效率。

Joel on Software 有篇《A Field Guide to Developers》告訴讀者為什麼買 Herman Miller 的椅子比較划算,雖然一張好椅子不便宜,但是以十年保固能坐十年來算,其實平均一天也才 $15 元的負擔,卻可以換來舒適的坐感,讓頂級的椅子陪伴你工作。

人體工學椅其實只是設計比較用心的椅子,每個環節都能依照個人身材調整到位,並減輕久坐帶給身體的傷害,如果沒有調整得宜,就會浪費了一張好椅子。

再來談談工作桌椅選購搭配的心得吧!

桌上型電腦的工作空間,在坪數有限的房間,使用系統傢俱量身打造,桌面高度可以依照個人需求客製,也能加上鍵盤抽屜,方便使用機械式鍵盤,寬度足夠的桌面可以輕鬆擺放雙螢幕。系統傢俱的好處是可以結合書櫃的收納空間,充分利用寸土寸金的空間。

有扶手的 Embody Chair 搭配系統桌面的鍵盤抽屜,高度升降調整到定位就能舒適工作

如果擁有 Herman Miller Embody Chair 還不能滿足,就要考慮加購 Envelop Desk 讓人體工學神器一次到位。這張工作桌配合 Embody 的後仰傾斜角度設計,桌板可以往前拉調整角度,桌面也有一個內凹設計使得身體可以更貼近,讓雙手能輕鬆靠在桌板上,同時也減輕肩膀的負擔。除了可以升降桌面高度外,Envelop Desk 還提供收納電線的設計,可以維持桌面的乾淨整齊。

Herman Miller Embody Chair 與 Envelop Desk
配合 Embody Chair 後仰的 Envelop Desk,可以用舒適的角度操作 MacBook Pro

看過露西電影,就快帶張露西椅回家陪伴你工作吧!


PS. 本文純好物推薦無廠商贊助,購買管道請自行上網搜尋。

2014年9月10日

台中東區。高麗屋平價韓國料理。美食推薦。新光重劃區


高麗屋位在台中東區十甲東路與東英十一街口,雖然店面外觀簡陋,但是每到用餐時間排隊人潮就絡繹不絕,幾乎每次前往用餐都要先拿號碼牌。價位便宜、分量多且合台灣人的胃口,使得高麗屋的韓國料理成為附近一帶馳名的美食,平均一個人消費大約只要100~200元就能飽餐一頓。

地址:台中市東區十甲東路與東英十一街口。



無所不在的 JavaScript,從前端技術到後端應用開發漫談...就在今年的 JSDC 2014 技術盛會

JSDC 2014
今年的 JSDC 邀請國內外講師,企圖打造高質量的大型技術研討會,雖然一張票不算便宜但早鳥票還是迅速被搶光,證明台灣還是有不少支持開源社群自辦研討會的熱血開發者。平均一天只要15元,相當於少吃一支蛋捲冰淇淋,就能參加 JavaScript 開源社群的年度盛會,與眾多開發者共襄盛舉度過美好的週末,投資自己創造美好未來,⋯

先別說這個了,你(妳)報名 JSDC 2014 了嗎?

引述自 JSDC 活動網站:
今年 JSDC 2014 研討會,我們希望打破所有以往的藩籬,提高每一場議程的標準,首先從 JavaScript, 知名 Node.js module 作者,國際大廠 Sencha, Netflix 甚至是大陸百度,淘寶 JavaScript 架構師來臺,分享對於『企業內部架構』,『框架構思概念』,『未來趨勢分析』三大方向進行。
透過獨立開發者,企業應用,框架原理,架構分析,實戰分享,希望透過  JSDC 與世界接軌,促進與會者思考體制內架構與體制外的現況,從各種不同面向瞭解 JavaScript ,進而優化架構,強化團隊,調整開發步伐流程。

JSDC 2014 Speakers
  • Casear Chu - SlideNow founder
  • clkao - Socialtext, g0v
  • Fred Chien - Chief Geek Officer
  • Hsiaoming Yang - founder of yuehu.io
  • Huge Huang - mobile developer at Netflix
  • Jessica Lord - Developer at GitHub 
  • Jonathan Ong - Author of Koa, Express.js
  • Jeremy Lu - Founder - visual-marks.com
  • Maxwell ogden - founder of Dat
  • Mathias Buus - Author of peerflix
  • Mu-An Chiou - Designer at GitHub
  • othree - open source developer & F2E
  • Ruben Tan - Javascript Wrangler at MyTeksi
  • 袁锋 (苏千) - 支付寶技術專家
  • 吳亮 (月影) - 奇虎 360 前端高級技術經理
  • 閃光洽 (Hina Chen) - full stack Engineer

JSDC 2014 技術盛會於 9/20 截止報名,購票速洽 KKTIX 報名網頁

Buy Ticket http://jsdc-tw.kktix.cc/events/jsdc2014

2014年4月29日

Book: "Java 8 Lambdas" By Richard Warburton, O'Reilly

Java SE 8 帶來全新的 Lambda 語法,也是這次新版最重要的新功能,Lambda 讓 Java 語言更容易開發平行運算應用程式碼,充分利用現代電腦多核心處理的威力。Lambda 語法可簡化過去採用匿名類別(Anonymous Class)的設計,更簡潔的語法能提高可讀性。

比學習新語法更重要的事情,就是先熟悉函數型程式設計(Functional Programming)的觀念。函數型介面(Functional Interface),例如常見的 Runnable 與 Comparator 等,在 Java 8 可以改用 Lambda 的語法,取代過去匿名類別的寫法,以 Runnable 介面為例:

new Thread(new Runnable() {
    public void run() {
        System.out.println("Run!");
    }
}).start();

可以用 Labmda 語法改寫:

new Thread(() -> {
    System.out.println("Run!");
}).start();

Comparator 類別改用 Lambda 語法改寫,更容易看出語法的簡潔。

Collections.sort(users, (User u1, User u2) -> u1.id.compareTo(u2.id));

如果只把 Java 8 的 Lambda 當作語法糖衣,那麼也許不需要大費周章學習它,但是作者 Richard Warburton 仍寫一本專書介紹 Lambda,目的是幫助有這些需求的學習者:
  1. 想撰寫更簡潔的程式碼,特別是針對集合(Collections)的處理。
  2. 用平行處理的做法提升效能。
  3. 建立更好的 DSL 領域描述語言。
  4. 學習 Lambda 語法的測試與除錯。
Lambda  本身只是一種新的語法,即使不用它同樣能完成 Java 程式功能。但是過去的經驗中,不難發現 Java 程式碼在平行世界變得複雜難懂,造成維護的不易,函數型程式設計的觀念也不容易妥善實踐。

程式語言帶給設計者不僅止語法,而是包含蘊含的觀念。支援 Lambda 語法的 Java 8,可以說是正式將函數型程式設計的觀念,一步步傳遞給程式設計師。

作為一本 Lambda 入門書, 這本 Java 8 Lambdas 擁有接近五顆星的高評價,透過清楚的程式範例與易懂的說明,可以幫助學習者省下不少時間花費。

Buy Java 8 Lambdas from O'Reilly

Update:

中文版「Java 8 Lambdas 技術手冊」在 2014/11/20 出版囉!強力推薦 : )

2014年2月28日

Book: "Java EE 7 Essentials" By Arun Gupta, O'Reilly

Java Platform Enterprise Edition(簡稱 Java EE)的最新版本 Java EE 7 增加不少新功能,例如:
  1. Java API for WebSocket(WebSocket 1.0)
  2. Java API for JSON Processing(JSON-P 1.0)
  3. Batch Applications for Java Platform(Batch 1.0)
  4. Concurrency Utilities for Java EE(Concurrency 1.0)
  5. Java API for RESTful Web Services

為滿足新的 Web 開發需求,我們需要先認識 Java EE 7 有哪些合適的功能,在未來適當時機可以應用,如此才能儘早讓手邊的專案做好準備。

例如 Java EE 7 開始提供 WebSocket 的支援,這也是許多現代 Web 開發必要的支援,看起來新版本很美好。

很多專案仍停留在古老的 Java EE 5 階段,開發者甚至還來不及瞭解 Java EE 6,也可能還沒開始使用 Tomcat 7.0。

現在又要認識新的 Java EE 7,開始試用支援 Servlet 3.1 的 Tomcat 8.0,我們需要一份好的指南,介紹 Java EE 7 帶來哪些新功能?要如何使用?最好還能有些實際範例,這本書可以減少學習所需的時間,用較快的方式瞭解 Java EE 7。

作者 Arun Gupta 是 Oracle 的技術傳道士,他曾寫過「Java EE 6 Pocket Guide」,新書比較起來厚度更多(頁數增加近80%),內容也談得更詳細。

在 GitHub 取得這本書的範例程式碼

Buy "Java EE 7 Essentials" from O'Reilly。

2014年2月25日

使用 youtube-dl 備份 YouTube 影片,解決 1080p 高畫質影片無法下載問題

YouTube 近期有些改變,有許多影片備份軟體,無法正常下載 1080p 解析度以上的高畫質影片。這個問題並不是 YouTube 增加防堵措施,而是新的高畫質影片採用 MPEG-DASH 格式,影片與聲音檔案分開提供,所以過去的下載方式已不管用。

為了解決影片備份的問題,本篇介紹用「youtube-dl」與「mencoder」兩個工具來達成任務。

Mac OS X 可以使用 HomeBrew 安裝需要的軟體(mplayer 內建 mencoder 工具)。

brew install youtube-dl
brew install mplayer

Ubuntu 使用 APT 安裝:

apt-get install youtube-dl mencoder

假設要備份的 YouTube 影片網址是:

http://www.youtube.com/watch?v=VIDEO_ID

使用 youtube-dl 工具

先使用 -F 參數查詢有哪些格式可下載。

youtube-dl -F http://www.youtube.com/watch?v=VIDEO_ID

清單範例如下:

Available formats:
22 : mp4 [1280x720]
18 : mp4 [640x360]
43 : webm [640x360]
5 : flv [400x240]
36 : 3gp [320x240]
17 : 3gp [176x144]
137 : mp4 [1080p] (DASH Video)
136 : mp4 [720p] (DASH Video)
135 : mp4 [480p] (DASH Video)
134 : mp4 [360p] (DASH Video)
133 : mp4 [240p] (DASH Video)
160 : mp4 [192p] (DASH Video)
140 : m4a [128k] (DASH Audio)
171 : webm [128k] (DASH Audio)

可以看到 1080p 高畫質影片僅有 DASH Video 格式,代碼是 137,128k 的聲音檔(m4a)代碼則為 140。

先下載 1080p 的影片檔。

youtube-dl --no-playlist --max-quality 137 http://www.youtube.com/watch?v=VIDEO_ID

再下載 128k 的聲音檔。

youtube-dl --no-playlist --max-quality 140 http://www.youtube.com/watch?v=VIDEO_ID

直接下載的影片檔,某些播放軟體可以開啟,但是聲音檔需要另外指定,這樣並不方便。

使用 mencoder 合併影片與聲音

使用 mencoder 工具可以合併影片與聲音檔案,輸出成大多數播放軟體可以支援的 MP4 格式。

mencoder -oac copy -ovc copy -fafmttag 0x706d -of lavf -lavfopts format=mp4 VIDEO.mp4 -audiofile VIDEO.m4a -o VIDEO-MERGED.mp4

搭配 ffmpeg 自動合併影片與聲音

(感謝 Grey Lee 補充這個更簡單的方法)

先安裝 ffmpeg 工具。

brew install ffmpeg

使用 -f 137+140 下載 mp4 及 m4a 後自動使用 ffmpeg 合併檔案。

youtube-dl -f 137+140 http://www.youtube.com/watch?v=VIDEO_ID

暫時不用煩惱 YouTube 高畫質影片無法備份的問題了 : )

2014年2月19日

支援 Mac OS X 的 Web ATM 硬體與驅動程式

愈來愈多重視客戶服務的銀行,陸續開始支援 Mac OS X 系統,可以用 Chrome 或 Firefox 登入 Web ATM,可以在 Mac 輕鬆使用線上匯款功能真是太棒了!

首先推薦兩台支援 Mac OS X 的晶片讀卡機,是我自己實際測試過沒問題的型號。

推薦一、便宜好用的 EZ100PU

EZ100PU 系列已經推出非常多年,也是許多銀行送客戶的讀卡機型號,使用者很多且相容性很好,廠商很負責任,除了支援 Windows 各版本外,也提供 Linux 與 Mac OS X 的驅動程式。

下載 EZ100PU 的 Mac OS X 驅動程式


推薦二、功能完整的 EasyATM PRO2

舊款 EasyATM PRO 並不提供 Mac OS X 驅動程式,而且相容性似乎有些問題。但是二代已有改善,內建安全密碼輸入功能,支援銀行的OTP動態密碼機制,也提供 Mac OS X 的專屬驅動程式。

下載 EasyATM PRO2 的 Mac OS X 驅動程式



推薦一、玉山銀行 Web ATM (Mac Friendly No.1)

玉山銀行首創 Web ATM Plugin 支援 Mac OS X,並且相容 Google Chrome、Firefox 與 Safari 瀏覽器,真是太貼心了!瀏覽器的 Plugin 需要先下載安裝,安裝後重新開啟瀏覽器,選擇信任外掛元件,就能開始輕鬆使用 Web ATM 服務。

玉山銀行 Web ATM

安裝瀏覽器 Web ATM Plugin


推薦二、國泰世華 Web ATM

國泰世華的 Web ATM 使用 Java 技術開發,目前也支援 Mac OS X 系統。在安裝新版 Java SE 7 之後,會造成 Google Chrome 瀏覽器無法開啟網頁中的 Java 元件,目前測試在 Safari 瀏覽器也無法使用讀卡機,只有搭配 Firefox 瀏覽器可以正常使用。

國泰世華 Web ATM (建議使用 Firefox 瀏覽器)


其他支援 Mac OS X 的網路銀行 Web ATM 服務:
  1. 台新銀行
  2. 上海銀行
  3. 合作金庫

2014年2月12日

啟用 O'Reilly 線上書店的 Kindle 與 Dropbox 支援

O'Reilly 的線上書店提供 Kindle 與 Dropbox 整合功能,只要幾個設定,就能讓購買的電子書,輕鬆同步自己的各種閱讀裝置。

先使用個人帳號登入 O'Reilly 網店。

瀏覽「Account Info」頁面的最下方,就可以看到相關設定。


Dropbox

需要連結到個人的 Dropbox 帳號,並授權 O'Reilly 網站將電子書同步至雲端硬碟;設定完成後,選擇哪些電子書格式的檔案需要被同步。

購買新的電子書,檔案就會自動被同步到 Dropbox;若要手動同步之前已購買過的電子書,可以到「Your Products」找到清單上方的「Send All Ebooks to: Dropbox」功能。



在 iPad / iPhone / Android 閱讀裝置,也使用相同帳號打開 Dropbox App,就可以閱讀電子書。

Kindle

註冊 Kindle 帳號,就會得到一組 NAME@free.kindle.com 的信箱,將這組信箱填入 O'Reilly 網站的 Kindle 帳號設定,日後購買新書,就會自動將電子書的 MOBI 格式檔案自動傳送到 Kindle 閱讀器。

O'Reilly 的 DRM Free 真的很方便,購買的書可以在各種裝置上閱讀,不會受到限制,而且書籍內容若有更新,也可以隨時取得更新過的電子書檔案。

2014年1月24日

使用 git-svn 工具管理 SVN 專案

只要熟悉 Git 版本控制,就很難再回到過去...SVN;不是 SVN 不好,只是 Git 和 SVN 本是不同世代的工具,如果硬是要比較,就太為難 SVN 了。

不過在開發專案時,難免還是會碰到,許多專案必須使用  SVN 的困境,還好先進的 Git 提供 git-svn 的橋接工具,讓你可以在自己的電腦上使用 Git 管理,但是專案的遠端版本管理仍繼續維持 SVN 伺服器。

我們就別談 Git 哪邊比 SVN 好,先來看看使用 git-svn 有哪些好處吧?
  • 使用 Git 做 diff / merge 比較輕鬆容易又方便
  • 在 Local 端可以多次 Commit,不必每次的 Commit 都要 Push 到伺服器
  • 離線狀態仍然可以繼續 Commit... Commit...
  • 和支援 Git 的 IDE 完美合體
  • 在 Local 端可以輕鬆開 Branch 做實驗性的程式修改
  • 除了發佈到一份 SVN Repository,還可以同時 Push 到其他"多份" Git Repository 分散式保存(備份!)
  • ... 以及更多的好處請自行體驗。

以下是我自己使用 git-svn 的 SOP,目前用了兩個月過程還算沒啥大問題。

新建專案

在建立 Local Repository 的時候,建議是以 SVN 為主,利用 git svn 從 SVN 主機取出程式碼。

git svn clone https://SVNSERVER/svn/trunk/ git-svn-test-only

如果是已經很老的陳年 Repository,上面的指令可能執行到天荒地老還沒跑完,可以指定只取出最後的 Revision。

git svn clone -r HEAD https://SVNSERVER/svn/trunk/ git-svn-test-only

進入專案資料夾(不解釋)。

cd git-svn-test-only

新建一個檔案(測試ONLY)。

echo hello > readme.md

加入新檔案(測試ONLY)。

git add readme.md

建立一個新的 Commit(只是在 Local 做 Commit,不會送出給 Server,事後還可以反悔)。

git commit -a -m 'first commit'

每次 Commit 到 SVN 之前,要先做 rebase 保平安。

git svn rebase

看到以下的訊息就可以鬆一口氣。

Current branch master is up to date.

放心地將 Commit 發送到 SVN 伺服器,這個指令會真的做 Push 喔(不能反悔)!!!

git svn dcommit

增加遠端 Git 伺服器

只靠 SVN 伺服器,萬一哪天好死不死 Local 資料誤刪,然後伺服器也剛好掛點,程式碼就會從地球上消失。

增加多個遠端 Git 伺服器,除了在大型的多團隊協作專案可能會有需要外,也可以拿來當專案程式碼的異地備援,求個永保安康。

以 GitHub 建立的 Git Repository 為例,利用 git remote add 加入專案中。

git remote add github git@github.com:GITUSER/git-svn-test-only.git

先從遠端取得已經存在的資料(如果有)。

git fetch github

先在 Local 端做一次 Merge 合併 SVN 和 Git Repository 兩邊的檔案。

git merge github/master

將異動提交給 SVN。

git svn rebase

git svn dcommit

也送一份到 Git。

git push github master

每次改程式的事後指令

就像平常使用 Git 一樣加入新增的檔案。

git add src/*

就像平常使用 Git 一樣先做 Commit。

git commit -a -m 'some comments'

記得先做 svn rebase。

git svn rebase

將 Commit(s) 送給 SVN 伺服器。

git svn dcommit

將 Commit(s) 送給 Git 伺服器。

git push github master

OpenJDK - Java 7 Update 60 Early Access Release (Developer Preview)

jdk7.java.net

OpenJDK 計劃目前已經提供 Solaris, Linux, Mac OS X 或 Windows 不同作業系統的安裝程式,開發者可以更輕鬆獲得最新---尚未正式發佈的 JDK 版本。

以目前的 JDK 7 版本來說,Oracle 正式發佈的版本到 Update 51,但是在 OpenJDK 的下載頁面,已經可以取得 Update 60 build03 版本。

Download Latest Early Access JDK 7

https://jdk7.java.net/download.html

Download Java SE 7 Development Kit form Oracle

http://www.oracle.com/technetwork/java/javase/downloads/

2014年1月3日

自動化管理 RDS 資料庫連線IP授權,使用 Amazon Command Line Interface

這份範例說明使用 AWS 的 CLI 指令工具,可以自動管理 RDS 連線的來源 IP 存取授權。考慮到出外或使用行動上網分享器時,需要自動偵測實際對外的 Public IP,所以這個範例也加上利用 curl + ifconfig.me 的說明,在分享器後方也能自動辨識出正確的 IP 位址。

安裝 AWS Command Line Interface (AWSCLI)

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo python ez_setup.py

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py

pip install awscli

設定 AWS Credentials

$ aws configure
AWS Access Key ID [****************]:
AWS Secret Access Key [****************]:
Default region name [southeast]: ap-southeast-1
Default output format [None]:


增加IP授權

aws rds authorize-db-security-group-ingress --db-security-group-name GROUP --cidrip `curl ifconfig.me/ip`/32

解除IP授權

aws rds revoke-db-security-group-ingress --db-security-group-name GROUP --cidrip `curl ifconfig.me/ip`/32

2014年1月1日

使用 Markdown 寫文件、寫書、做筆記的經驗分享

上個月分享一篇介紹 Markdown 線上編輯器的文章,有不少瀏覽點閱次數,表示還是不少朋友關注這議題,所以想再多談一些使用經驗。

Markdown 目的是易讀易寫,讓純文字文件的撰寫有個基本的規範。

有些網站使用 Markdown 貼文,像是 GitHub 或 StackOverflow,為了更多功能就加上很多語法。

但是原始的 Markdown 很單純,能做到的大概就是標題、原始碼區塊、粗體、斜體、引言、項目符號、圖片及超連結。

Markdown Syntax http://markdown.tw/

任何一款文字編輯器,都可以拿來編輯 Markdown,像是最近很紅的 Sublime Text。


但是畢竟大量的敘述文字和程式碼不一樣,在撰寫文件的過程中,如果不能「即時預覽」是件痛苦的事情。

Sublime 有許多 Markdown 延伸套件,可以稍微改善文字編輯的問題,例如引言和標題會有較好的視覺效果。


但是目前最好用的 Markdown 編輯器,個人認為還是 Mou.app (Mac OS X only)好用,它可以在右邊即時預覽轉成 HTML 的文件,編輯器和預覽文件的佈景也可以切換或自訂。


使用 Markdown 寫文件,只要利用 GitHub 建立 Repository,就可以輕鬆做到版本控管,可以更放心刪改文字,從 Diff 結果很容易就能看出異動。


使用 GitHub 管理 Markdown 文件,也同時得到 HTML 版本的預覽,相當方便隨時用平板或手機檢視閱讀文件。


Markdown 文件的資料夾,保留了圖片原始檔案,比起夾帶在 PDF 或 WORD 檔之中更容易處理,並且圖片的語法也明確指出使用哪個圖檔。

Markdown 只是「原始文件」,我們可以利用 pandoc 工具將它轉成其他格式。

Markdown to HTML5

pandoc -f markdown -t html5 FILENAME.md -o FILENAME.html

如果使用 Wordpress 或 Blogger 網誌發表文章,配合「pbcopy(Mac OS X only)」,就可以把轉換格式的輸出直接儲存到剪貼簿。

pandoc -f markdown -t html5 FILENAME.md | pbcopy

如果要把 Markdown 文件製作成 PDF 或 EPUB 電子書,也可以利用 pandoc 做到。

Markdown to EPUB3

pandoc -f markdown -t epub3 FILENAME.md -o FILENAME.epub

Markdown to PDF

pandoc --template=default.latex --latex-engine=xelatex -V fontsize=13pt FILENAME.md -o FILENAME.pdf


lyhcode by lyhcode
歡迎轉載,請務必註明出處!