admin

admin

0
golang

為什麼他們最後決定改用 Go 重寫了?

(同步發表於 Cepave) 現今這個時代的網站已經很少單純只用 HTML 完成,為了處理動態資料,除了前端的展現,我們還需要由後端幫忙處理資料,目前主流的網頁語言與框架有: * PHP – Laravel * Python – Django/Flask/Falcon * Ruby – RoR * Node.js – Express/Salt * Go – Beego 沒有一個框架是完美的。但是我們可以發現有越來越多的人/公司逐漸選擇向 Go 靠攏: * From Python to Go: migrating our entire API * How We Moved Our API From Ruby to Go and Saved Our Sanity * Farewell
7 min read
golang

以 Go 語言快速實作 HTTP GET/POST API

(同步發表於 Cepave) 維基百科中提到: 目前在三種主流的Web服務實現方案中,因為REST模式與複雜的SOAP和XML-RPC相比更加簡潔,越來越多的web服務開始採用REST風格設計和實現。 … 符合 REST 設計風格的 Web API 稱為 RESTful API。它從以下三個方面資源進行定義:直觀簡短的資源地址、傳輸的資源、對資源的操作。 那麼我們要如何使用 Go 語言原生的函式庫建立簡單的 Web Server 提供 GET/POST 接口呢?讓我們透過 Hello World 的範例來說明。 建立 HTTP Server 接收請求 1. 透過 http.HandleFunc("/", callback),我們可以定義 callback 函式所要負責的 URI。 2. 呼叫 http.Request.
3 min read
RenderScript

RenderScript 之外的另一個選擇:FilterScript

快速複習,RenderScript 是什麼? 想了解細節可以回顧一下以前的文章。簡單來說,RenderScript(以下簡稱 RS)的作用就如同 OpenCL 一樣,是個可以同時處理計算與繪圖的程式語言。差別在於 RenderScript 是 Android 獨有的,OpenCL 卻與 OS 無相關,根據 PowerVR 的說法,OpenCL 要針對一個新的硬體新增 API 相當不容易,得透過各軟硬體的供應上同意並且投票通過才可以進行。反之,Google 身為純軟體公司的角色就比較中立,目標只有設法減輕應用程式開發者的負擔,所以可以快速地針對各硬體廠商的需求做出反應。 RenderScript 不夠好嗎? The initial top-down approach has led to some confusion among developers regarding the level
4 min read
Others

來看看那些令人稱羨的企業文化與員工福利

尊重研發人員的企業文化? 從一間公司的環境,我們大概就可以推測這間公司的企業文化、以及對於人才的重視程度。舉例來說,到了一間生產線旁辦公室,我們可以預期在這邊工作就是要確保生產線上不出差錯,產品可以順利生產;到了傳統的辦公大樓中,伴隨高高的隔板、獨立的主管辦公室與停車位,我們可以想像這裡是階級化管理的組織,要當的是謹守本分的螺絲釘。 這篇文章中也提供了三個不錯的指標以判斷一間公司是否尊重工程師文化? 1. **公司的決策流程?**欲開發的產品以及開發週期是大家說了才算,而非少數人可以任意決定的。 2. **是否尊重軟體開發文化?**有時候寫程式是需要天時地利人和的,時間很難估算。這一點必須被理解。 3. **是否重視基礎設施?**高生產力來自於優良的基礎設施(如:程式碼架構、通訊/編譯/測試/佈署系統),但這些與產品相比之下,常常容易被認為是不必要且可忽略的。 讓你感覺不像在工作的工作環境 提到令人稱羨的員工福利,多數人第一時間可能會想到 Google, Facebook, 等公認有著最佳工作環境的大公司(註)。不過也不是只有矽谷的網路公司一支
5 min read
Python

Python 函式的參數傳遞方式:Passed by assignment

典型的參數傳遞方式有二種: * Pass-by-value: 複製參數的值傳入,所以原參數內容不會被影響。 * Pass-by-reference: 傳入參數的參考,會影響原參數內容。 還有少數程式語言使用以下兩種傳遞方式: * Pass-by-name: 將傳入的參數視為變數名稱或是字串,概念類似 string evaluation。 * Pass-by-value-result: 又稱 copy-in, copy-out,不直接傳入變數的參照,反而是將其複製一份傳入參照,最後再把結果指派回原先的變數。 如果以上四種就可以解釋完 Python 的參數傳遞方式,那或許也不需要寫這篇文章了(笑)。嚴格來說,Python 並不屬於以上四種傳遞方式,但是觀念上都是互通的,在這之前,我們必須先了解何謂 Immutable/Mutable。 Immutable Object and Mutable Object Immutable 代表物件產生後就不可以被修改,反之 Mutable 則是可以被修改。舉例來說 Python 中 numbers, boolean
3 min read
C

func(void):C 與 C++ 函式宣告的小差異

最近編譯遇到一個錯誤訊息 warning: function declaration isn’t a prototype,程式碼大概是像這樣: hello.h 1 2 3 4 void foo() {     printf("Hello World!\n"); } hello.c 1 2 3 4 5 int main(int argc, char**argv) {     foo();     return0; } 這樣的程式碼應該再單純不過了,怎麼會說我的函式宣告(Declaration)並不為一個原型(Prototype)呢? 深入了解 ANSI C 才知道原來這與語言的發展史有關。 函式的宣告(Declaration)
4 min read
Essay

白手起家,不到 25 歲成為千萬富翁的感覺是什麼?

在 Quora 上有上問道:「白手起家,不到 25 歲成為千萬富翁的感覺是什麼?」,這個問題沒想到真的吸引了不少千萬、億萬富翁匿名回覆。回答非常精采,我們或許無法年紀輕輕就成為千萬富翁,但至少可以看看他們成為千萬富翁後的感受。 註一:原文中是寫百萬富翁,但文中以台幣換算,故為千萬富翁。 註二:以下部分內容使用原回答的第一人稱描述。 富有後的改變? 年輕時賺到大錢是個很特殊的感覺。 瘋狂購物不會因為價錢而汗流浹背,可以買棟豪宅、買台名車、大啖美食,或是選個高級飯店好好度假,甚至可以招待那些無法負擔這些消費水準的朋友一同享樂。不必擔心要存多少錢才足夠負擔小孩的教養費、退休後的生活以及昂貴的醫藥費,如果從這些角度來看,成為千萬富翁的確是一件很棒的事情。 除此之外,開始花錢做自己想做的事,例如:學習義大利語,跳騷莎,像專業攝影師學習攝影,學習烹飪。最後驚覺原來這些事情只需要比平均略高的薪水就可以完成了,而千萬的財富對他們而言,其實也不多。有了錢,就會發現原來自己的財富無法擁有私人飛機,而生命才是人生中最重要的,擁有得越多,越是害怕失去,而這樣的財富也沒有辦
11 min read
Essay

時數的迷思

回憶起以往聽上榜學長們分享心得時,多數都會強調他每天讀多久多久的書,台下學弟們聽得熱血握拳,好似只要跟學長花一樣多的時間讀書,最後就可以考取自己心目中的名校。工作後,大家改為談論工時。當聽到他人薪資福利比自己好,難免會以工時自我安慰。花很多時間最後卻名落孫山的,總是抱怨那是別人運氣比較好;花很多時間卻得不到相對報酬的,總委屈地認為他該領得比別人多。 在我看來,比較這些時數完全沒有任何意義。一天讀書 12 小時,但你不知道他打盹、分心、發呆佔了多少時間;一天讀書 4 小時,但你不知道他大學四年來打下的基礎有多深厚。工作到凌晨二點才下班,但你不知道他幾點上班、下班前有沒有其他業外活動;工作到晚上六點就下班,但你不知道他六點上班且工作時心無旁騖。 強調讀書時間的在我看來無非是想炫耀自己天資聰穎、或是告訴大家他不是靠運氣上榜的。而常常把工時掛在嘴巴上的,大概也真的只剩工時可以說嘴。當效率好的人被迫長時間工作,代表工作量分配不均、不然就是苦力活居多得用時間來換。最慘的情況就是當主管無法分辨部屬的績效時,導致效率較好的人也只好為了考績而留下。 工作時數長容易讓人產生倦怠感。文化與風
2 min read
Encoding

深入了解 Unicode 文字與符號的編解碼

(圖片取自維基百科) 1987 年 Unicode 誕生至今已經高達近八成的普及率(若包含 ASCII)。跟文字有關的都得處理編解碼問題,設計 Unicode 的野心就是要能表示含全世界的文字符號。(如:Chinese (中文) 到 Russian (русский) 以及 Arabic (العربية) 與其他表情符號)。 在 Unicode 誕生之前的世界 電腦是在美國被發明的,自然而然最初只需要簡單的符號、數字、以及二十六個英文字母,因此最初被普遍使用的字符集就是 ASCII。而 7-Bit 的 ASCII 隨著電腦的普及逐漸發現有些符號與文字無法表示後,加上電腦並不需要有第八位元的錯誤檢查碼,所以 IBM 將其擴展為 8-Bit 的 EBCDIC。 但這始終停留在英美國家,東方世界所使用的漢字系統 CJK(Chinese, Japanese, Korean) 完全只能使用自己定義的字符集,而歐洲國家也同樣如此。
6 min read
Android

iPhone 5 與 Galaxy Note3,誰高誰下?

使用 iOS 以來算算也差不多五年了,難免有點膩(尤其是 iOS7 用久了還容易頭暈)。最近剛上市的 Galaxy Note3 不論功能或外觀皆非常吸引我,對一直以來都是用小螢幕手機的我,也算是一個突破性的嘗試吧!因此就決定把小弟我的第一次開箱->評測->關箱文就獻給 Note3 了!(部分圖片來自 mobile01 上圖文並茂的開箱文) 機如其名:高質感的筆記本 151.2 x 79.2 x 8.3mm 加上 168g 的規格徹底推翻了我們對於大螢幕手機的刻板概念,實際拿在手上不但一點負擔都沒有,還因為表面積大,所以有很輕的錯覺。除此之外,Note3 的可拆換背蓋終於一改以往廉價的塑膠感,改用合成皮革,這皮革背蓋不但耐彎質感還很好!搭配那窄邊框與大螢幕,彷彿手上就真的拿著一本筆記本。 美得令人讚嘆的面板! 5.7吋 1920×
10 min read
Others

為什麼好的學歷總是容易獲得主管們的青睞?

![](http://www.expressuniversitydegree.com/content/images/2013/05/79194190-portrait-of-a-mid-adult-man-holding-an-ace-gettyimages.jpg) [三種工程師](http://st-threath.blogspot.co.at/2013/06/an-engineer.html?m=1)這篇文章提到了第一類的工程師:*寫程式的人*:> 這種類型的人單純的只是為了工作、功課、任務而寫程式,雖然職務名稱叫做工程師,但是寫程式對他們來說只是獲取成績、金錢的工具,寫程式對他們來說枯燥無味,但為了生活,他們繼續產出他們的程式碼。他們喜歡簡單的任務,最好是一看到就知道要怎麼做,最好有別人的程式碼可以直接套用。而當他們的程式可以過關,他們就開心的回家睡覺去,連一秒都不想看到程式碼。 根據我自己的感覺,大公司裡頭大約有 80% 是屬於這類的工程師(看看微軟自己人怎麼說)。對於他們來說,寫程式這件事除了工作以外不具備任何意義,工作後還會繼續鑽研的少之又少。份內工作完成就好,其餘的
4 min read
iOS

2013 WWDC 心得後記

這是第二個沒有 Jobs 的 WWDC,但是開始售票後 71 秒門票就通通售罄!今年比起去年真的精采許多!整理一下今年特別吸引我的部份: OS X Mavericks OS 10.9 不再用動物命名而改為加州地名:Mavericks,此次改版最主要的更新就是以下省電機制: 1. **Timer Coalescing:**CPU 運算是非常耗電的,Mavericks 中將許多頻繁的低階處理匯集一起一次做完,避免 CPU 頻繁動作。 2. **App Nap:**大家在使用電腦時,通常是多個視窗同時被開啟,如果這些視窗包含了動態網頁或是影片,就只針對最上層的視窗做運算處理,畢竟使用者永遠只會看見最上層的畫面。 3. **Safari Power Saver:**在 Mac OS 上 Flash 相對更耗費資源,所以預設就先不載入。 4. **Compressed Memory:
5 min read
Others

非自願性干擾 - 在辦公室工作效率低落的主因

![](http://www.cartoonstock.com/lowres/bve0221l.jpg)自從看過 [Rework](http://talk.ernestchiang.com/2010/10/rework-part-1.html) 之後,Jason Fried 幾乎就變成我的偶像了,非常欣賞他提出的許多看法,一針見血卻相當中肯實用。這已經是多年前的影片了,工作後再看一次感觸更深了,以下整理出影片重點,有空的話還是極力推薦花個十五分鐘把影片看完。 辦公室的目的 老闆為了讓大家努力工作,以及「看不到人如何知道他在工作?」「在家充滿誘惑容易分心」這類的理由要求大家在同一個地方工作,所以才有辦公室的存在。即使如此用心良苦,但當你問起這些人想把事情作好,第一個會想到的地方是什麼?通常他們的回答都不是在辦公室中,這跟辦公室的目的不是相背而行嗎?為何會導致這種狀況? 非自願性干擾 現在社群網站非常發達,所以有些公司甚至會屏蔽掉 Facebook 這類的網站,但這很荒謬,逛了就不會想工作?!因為上社群網站其實就跟十幾年前的 Smell Break
3 min read
Git

使用 Git 管理 SVN Repository

說了再多 Git 的好處,如果開發團隊依舊繼續使用 SVN 的話,也只能望之興嘆? Git 最大的特色就是分散式系統,因此可以離線操作,再借助 git-svn 的幫助,我們開發的時候就可以完全的使用 Git,只有在 Check in/out 才需要使用 SVN。以下整理出我個人常用的指令: Check-out SVN Repository 1. git svn init http://svn/trunk/ProjectName 2. git svn fetch -r REV_NUM 3. git gc 因為 SVN Repository 可能非常龐大,如果不是需要全部的歷史提交資訊,我們可以直接指定從哪版 revision
2 min read
C

好的設計是取得適當的折衷 - C# 語言特色淺探

好的程式語言必須讓程序員專注在功能上的開發,而不是被程式語言給制約。這是我個人的感觸,使用 MFC 開發 UI 實在是太過痛苦了,常常得查線上文件 API 的使用方式,光是字體跟字串就可以搞得很複雜。我實在很不喜歡心至碼不至的感覺,所以下定決定轉換到 C#,來看看 C# 有什麼特別吸引我的功能: LINQ(Language-Integrated Query) (C# 3.0) 一般我們只能對資料庫下 SQL 的語法,但是 C# 中我們可以透過 SQL-like 的方式直接對 List, Array 等常用的 LINQ-enabled 資料結構直接做查詢取值的動作!功能很強大,使用起來卻毫無負擔! 1 2 3 4 5 6 int[] scores =[new](http://www.
4 min read
Others

易讀易學的標記語言:Markdown

Markdown 在目前算是個隨處可見的標記語言,如:Github, StackOverflow 這些開發者必訪之地都支援 Markdown 語法。 讓我們來看看 Markdown 如何可以這麼普及: 一、 可讀性高: 網路上最常用的標記語言當然非 HTML 莫屬,但是大家都很清楚 HTML 的可讀性真的很差,通常得借助編輯器縮排過後才比較方便閱讀。但是 Markdown 中其實都是我們平常編輯純文字檔時就很自然會使用的語法。換句話說,如果部落格文章使用 Markdown 原始碼發佈也絲毫不影響閱讀。 引用自 markdown.tw: Markdown 的語法有個主要的目的:用來作為一種網路內容的寫作用語言。 二、 附帶的好處:的簡單易學 既然可讀性高,自然語法也不能太過複雜,以下就是 Markdown 最常使用的語法: *italics* **bold** CODE snippet * Unordered list item 1 * Unordered
2 min read
Essay

下班吧!加班並不會提昇你的產能

最近讀了「笑談軟體工程」(推薦!)後,對於加班這件事突然很有感觸,網路上也已經不少人批評過台灣責任制的亂象,我也來說說自己的看法。 引述一下書上所說的,很白話卻深刻地描述了大家可能經常遇到的情境: 老闆要做夢,鄉民們也犯不著吵醒他,但是又要保護自己在夢醒時分不會遭遇不測。 因此,雙方發展出一套遊戲規則 --- 加班。 老闆內心獨白:我的員工好認真,每天加班到凌晨12點,假日也來上班,統一大業指日可待。 員工內心獨白:我每天都加班,假日也來加班,東西做不出來也不能怪我。 有了「加班」這個方便法門,老闆不用傷腦筋去提昇管理績效,員工也不用傷腦筋去改善做事方法。 反正,「這是主流」啊,順著潮流走就對了。 這段內容提到了很重要的觀念:效率。我們應該想辦法在有限的黃金時間內做最多的事,而不是盲目的投入更多的時間冀望可以因此得到更多的產出。 如果我們的體力不會隨著時間減少,那倒好辦,大不了犧牲掉自己的娛樂時間罷了。但人不是鐵打的,尤其是知識工作者,工作效率會隨著工時拉長的遞減,以工程師來說,可能就因為這樣而不知不覺的在自己的程式中埋下臭蟲,每天睡覺時間不足,到了
4 min read
Programming

為什麼你不該滿足於 SVN 而該改用 Git?

先講答案:因為 SVN Branch 維護非常麻煩(就我個人維護六七個以上 svn branch 的經驗…)。 常常做這些 code merge 動作都比寫程式本身還花時間,更可能一不小心就許多未知的錯誤。 以下是我推薦的改使用 GIT 來管理程式碼的理由: 1. **不只是 SVN 加強版:**GIT 跟 SVN 的根本架構跟概念完全不同,絕對不只是 CVS 到 SVN 這種躍進而已。 2. Branch:對 Git 來說,所有指令都是以 repository 基本單位,切換 branch 只要下個指令,你當下的程式碼就會變換(snapshot)。但對於 SVN 來說它先天上的弱點就是 Branch 的支援度不高,所以我們才需要 LABEL,
2 min read
Essay

事情永遠做不完,怎麼辦?

今天在 Quora 看到了這個回答,心有戚戚焉,這答案真好! Q:「在職涯中學到最重要的一課是什麼?」 A:「專注在可以提高你生產力的事情上。」 就如大家所熟知的 Pereto 80-20 法則一樣,工作永遠不可能做完,按照這個理論,在職場的 80% 貢獻或影響都來自於我們 20% 的工作時間,如果一個禮拜工時以 40 小時計,大概就是 8 小時。關鍵在於,有沒有辦法只用 10%(4-Hour) 的時間造成最大的影響? 想要達到 4-Hour Week,我們必須: 1. 減少完成單一工作項目上所必須的時間 2. 增加自己在該工作項目上的影響力 Edmond Lau 舉了幾個很不錯的例子: **指導新人:**為了避免耽誤到自己的工作進度,通常大家只願意花 1% 的時間去指導新人。但是卻沒有想過你浪費了新人 99% 的時間。
3 min read
Wordpress

留言系統大翻修,為什麼我使用 Livefyre?

不知不覺部落格也設立超過兩年半了,對 WordPress 這系統很滿意,比起無名好上太多了!美中不足的就是它的留言系統。留言如果不想留資料可以,但是也因為這樣帶來許多垃圾訊息,但是留資料還是解決不了頭像跟使用者問題,雖然頭像可以透過 Gravatar 解決,但實在還是不好用啊… 在今天以前,我最滿意的就是 Facebook Comment 了,透過外掛的幫助,甚至還可以把 Facebook Comment 上所有留言整合到近期迴響。但是還是有著以下缺點: * Facebook 改版太為頻繁:光是留言系統就好幾版,API 拿資料的方式也常變動,導致外掛過段時間可能就無法支援。目前的外掛就已經不再支援近期迴響,也會跳出目前是在相容模式的警告視窗… * 迴響數無法整合:因為迴響數主要還是根據 WordPress 內建的迴響數。當然,一定有辦法可以做到,但不是件容易的事。 * 留言帶不走:假設哪天不想用 Facebook Comment 呢?很抱歉,目前不提供匯出/匯入的功能。 總結的說,相依性太高是這個解決方案的致命傷啊! 今天恰巧看到了「
3 min read
LaTeX

LaTeX 常用語法及論文範本

又到了大家趕論文的時間,離我寫論文居然已經過一年了,趁記憶猶新之際,趕緊接著之前的教學繼續做個完整的收尾。 環境設定 以我在 MacOS 為例,你可能需要: * MacTex (Texlive):包含編譯環境、轉換工具、套件管理等。 * BibDesk:用來處理 BibTeX 論文參考。 * XeTeX:多種編譯器之一,論文中有中文字體的話就少不了它,除非你偏愛 CJK。 * Tex Live Utility:包含於 MacTex 之中,可以用來管理 Latex *.sty 巨集套件。 (特別強調的原因是因為本文章中的論文範本可能會需要額外裝一些巨集套件) * 可以畫 *.eps 向量圖的軟體:如 OmniGraffle。 下載範本測試 台大論文格式的範本(也可以參考這篇文章),可於此連結自行取用。完成上述設定之後,直接透過 Makefile 編譯。 因為我採用的是 XeTeX,所以可以省去很多
3 min read
Essay

Evernote CEO:請不要創業

(圖片引用於五斗米靠腰) 「請不要創業,至少不要因為錯誤的動機而創意」,Evernote CEO(Phil Libin) 在一場演講中提到。 錯誤的動機? * **金錢:**95%-99% 的創業者最後都是失敗收場的,透過創業賺到的錢期望值是遠比你去一家大企業,乖乖的當好一個好雇員還低的。所以如果你想賺錢,透過你的天份跟才能好好找份工作吧! * **權力:**有些人創業的原因就是不想被人管,想要自己當老闆掌握權力管人。這是個誤解,事實上對創業家而言,除了自己以外,大家都是你的老闆。沒錯,除了客戶、股東、合作夥伴、與使用者外,就連員工都是你的老闆!畢竟你只是個新創公司的 CEO,你能提供的只有願景,實際上對員工來說,外面有著更多更好的工作選擇。所以,討好你的使用者之外,別忘了討好員工。如果你想要真正的權力,Phil 建議你從軍或從政(笑)。 * **無聊:**這可以是個創業的理由,但遠不足夠。單單只是因為無聊,希望創業可以改變現狀的話,建議你冷靜下來仔細想想創業後所有可能的開銷。收集多一點薪資條等到你真正決定好創業的目的吧! * **自由:
5 min read
Essay

學習新事物必經的四個階段

Four stages of competence,無意間看到了這心理學中的學習模式,深有同感。似乎沒有標準的中文譯名,就用比較白話的方式翻譯好了:) 第一階段:不自覺的不勝任 (Unconscious incompetence) 想學習新事物最難也最痛苦的莫過於 “You don’t know what you don’t know."。要學什麼都不知道,連個著力的點都沒有。這也就是為什麼學校教育有其重要性:至少師父引你進門了。大部分的人在學習新事物往往因為無法突破這個階段而放棄。就好像要從零開始學習一個程式語言之前,至少得知道該參考哪本書或是哪些網路上的資源,否則,你連語言本身長什麼德性都不曉得,又該從何學起呢? 第二階段:自覺的不勝任 (Conscious incompetence) 在這個階段,雖然能力不足,但已經有個努力的方向。舉例來說,買了參考書籍來學習寫程式,你當然知道首要任務就是把內容讀懂,接著就是不斷再不斷地努力練習。 第三階段:自覺的勝任 (Conscious competence) 當你讀完了一本基礎程式語言入門,你可能會想找些進
3 min read
Programming

同步機制比較:Spinlock v.s. Mutex

Spinlock 與 Mutex 都是很常用的同步機制,今天來看看這兩者在 Windows 上有什麼樣的不同!(推薦 MSDN 上的 Locks, Deadlocks, and Synchronization,寫得很不錯!) Spinlock 我們可以簡單的從中文翻譯「自旋鎖」看出一點端倪,基本上就是個 Busy waiting 的動作,得一直等待指定的鎖被釋放之後,才可以繼續進行下一步動作。概念上非常簡單,實作上就不是如此了。例如:如果鎖還沒被釋放這個執行緒就被 swap-out 而進入 sleep 狀態怎麼辦?兩個執行緒同時要求取鎖的同步該怎麼處理? Mutex 事實上 Mutex 是一種抽象概念:透過一個變數或物件確保 Critical Section 內的資料同一時間內只會有單一存取。所以文章標題本身就不是個很精確的命題。根據 MSDN 上的說明,Mutex 約可分為以下三類同步機制: * (Interrupt/Queued)
2 min read
Windows

UnxUtils: 讓你更輕鬆打造 Unix-like 的環境

一個不小心,竟然就是四個月沒更新了(汗)。 如果有看我之前的文章,可以發現從工作需要的關係移轉到 Windows 平台之後,我一直試著在 Windows 上嘗試尋找 Linux/Unix 編程體驗。最後結果雖然沒有令我十分滿意,但是對於工作上的需求也算堪用了。直到前幾天無意間發現了 UnxUtils ,驚為天人,真的是相見恨晚啊!為什麼這麼好用的東西卻沒有人推廣過呢?! cygwin 很棒,但畢竟還是一個模擬出來的環境,要跟 Windows 完全無縫的協同工作還是有點困難,特別是當你只是想用一些簡單的 shell 命令時(如: grep, find, …)。當然 Windows 也有提供相對應的功能(FINDSTR),但我個人還是比較偏好 Unix 的命令輸入方式。於是就有人把 Unix 中常用的指令全部都實作成 Native Windows Executable,概念很簡單,但卻很強大啊! 使用體驗幾乎是完全跟 Unix 終端機下感覺一模一樣,
1 min read