發表文章

目前顯示的是 2015的文章

簡單就是美

今天在網路上看到一篇跟程式設計師有關的文章,標題是: 不廢話!五組程式碼,道盡 Coder 10 年幽幽練功路 。內容就真的是五組程式碼,看了真是很有感想。 一開始寫程式時就是簡單、笨笨的寫,後來有經驗了,就開始想要展現自己的能力,簡單的東西就寫得開始有點複雜了。又過了一些日子,經驗累積更多了,最後才領悟到簡單又可以達到目的的才是最美的。真所謂是反璞歸真啊。 的確,真正有能力的人不會把事情搞得很複雜來展現自己的能耐,反而是能切中要點,用最簡單的方式處理才是最厲害的。 這又讓我想到了最近看到的Bjarne Stroustrup C++之父在youtube上的一段演講,標題是: Make Simple Tasks Simple !"完整內容我還沒有時間看完,但我想大意應該是差不多的。 另外前不久也才剛看完Clean Code的中譯本: 無瑕的程式碼 。的確,寫程式寫到最後,真的是要用最簡單易懂的方式來處理,這樣未來自己再回頭看時,或是交接給後來的人維護時才不會太吃力。例如有關程式碼中註解的撰寫,如果是程式碼真接就容易看得懂的意思就不用再寫成註解了。因為這樣不但是多餘的,而且未來如果程式碼變更時而忘了去改註解的話,那真的會讓後來的接手維護的人不知這段到底是程式碼是正確的,還是註解是正確的。當然,前提是你的程式碼本身就可以明確地表達自己的意圖才好。

[讀書] Docker入門與實戰

不久前就經常在網路上看到有關 docker 的相關消息,只是一知半解的得知它是一種很類似虛擬機器的工具,但是算是輕量級的。因為它不用再跑在一份OS上,只要用現有的OS即可。但又可以實現「容器」的概念。 近日在逛書店時正好看到有相關的書籍--「 Docker入門與實戰 」,內容正好是適合我這種剛入門的讀者。 書中一開始當然就是先介紹一下docker的概念。它可以不用再另外用像是virtualbox這類的虛擬工具就可以執行一份完整且獨立的linux os環境。而且它的出發點是希望write once run anywhere,只要做好一份影像檔,就可以拿到各種OS中執行成一份獨立的容器,並且可以使用容器中的功能。 接著就是介紹了一些有關docker的操作指令,像是如何由公開倉庫取得可用的影像檔,如何執行指定的影像檔成為一個容器。接著就是容器裏變更的內容如何儲存下來待後續再使用。 容器要安裝及執行所需的服務到此為止看來是沒問題了,接著是因為都是執行在同一個OS層中,使用的網路卡也是一樣的,那有些服務所要使用到的port該如何設定才好呢? 原來在執行容器時可以利用命令列的方式將本機上的某個port對應到所執行的容器中的指定的port上。例如在容器中如果有提供ssh的服務,且ssh平用的是port 22的話,那可以指定將本機例如port 10122映射到port 22上。這樣任何外部的用戶端都可以利用<本機IP>:10122的方式來存取到容器中的ssh服務了。 學了這麼多,最重要的還是要能透過實作的方式來測試實際的用途。所以接著就是來到了實作的章節。第一份實作就是利用docker官方的ubuntu影像檔,安裝並啟用ssh服務來給外部人員使用。可是依書中的步驟就我測試下來都是失敗的。安裝ssh及執行服務看來是沒問題,但就是在要用ssh client端登入時,就一直會詢問密碼。可是不論使用什麼密碼都無法成功登入。 後來查了一下,原來 官方網站中也有相關的實作應用 ,參考了一下才知道,原來是書中少了設定root密碼的部份,難怪都無法登入。 後來在利用Dockerfile自動建立影像檔中,自行加入了修改root使用者帳號的密碼,並且也自行加入了幾個預設會用到的登入帳號及密碼後,目前看來就可以正常的產生一份可以使用ssh服務的容器了。