更換 Ubuntu 開機過程的佈景主題

Ubuntu 開機過程其實是可以更換圖片的,甚至已經提供了不少佈景主題可以使用:apt-cache search plymouth-theme

plymouth-theme-ubuntu-logo - graphical boot animation and logger - ubuntu-logo theme
plymouth-theme-ubuntu-text - graphical boot animation and logger - ubuntu-logo theme
mythbuntu-default-settings - default settings for Mythbuntu
plymouth-theme-edubuntu - Plymouth is an application that runs very early
plymouth-theme-fade-in - graphical boot animation and logger - fade-in theme
plymouth-theme-glow - graphical boot animation and logger - glow theme
plymouth-theme-kubuntu-logo - graphical boot animation and logger - kubuntu-logo theme
plymouth-theme-kubuntu-text - graphical boot animation and logger - kubuntu-text theme
plymouth-theme-lubuntu-logo - plymouth theme for Lubuntu
plymouth-theme-lubuntu-text - plymouth text theme for Lubuntu
plymouth-theme-sabily - plymouth theme for Sabily (graphical theme)
plymouth-theme-sabily-text - plymouth theme for Sabily (text theme)
plymouth-theme-script - graphical boot animation and logger - script theme
plymouth-theme-solar - graphical boot animation and logger - solar theme
plymouth-theme-spinfinity - graphical boot animation and logger - spinfinity theme
plymouth-theme-text - graphical boot animation and logger - text theme
plymouth-theme-ubuntu-gnome-logo - graphical boot animation and logger - ubuntu-gnome-logo theme
plymouth-theme-ubuntu-gnome-text - graphical boot animation and logger - ubuntu-gnome-text theme
plymouth-theme-ubuntustudio - Ubuntu Studio Plymouth theme
plymouth-theme-xubuntu-logo - graphical boot animation and logger - xubuntu-logo theme
plymouth-theme-xubuntu-text - graphical boot animation and logger - xubuntu-text theme

你可以使用 apt-get install 來安裝,這些佈景主題會被安裝到 /lib/plymouth/themes/ 目錄下,安裝以後,該如何使用呢? 可以用 update-alternative 來替換,在 terminal 輸入 sudo update-alternative default.plymouth 以後,就可以選擇你喜愛的佈景主題了。

網路上也有人自行去修改 theme,調整字的位置、圖形等等的,用 ubuntu plymouth 去找,就可以找到相關的資訊了。

電影流水帳(2014/9/16~2014/9/24)

Gwyneth Paltrow Gwyneth Paltrow ,近年最讓人有印象的應該就 Iron Man 裡的 Pepper 了吧。在 1998 年她以 Shakespeare in Love 取得奧斯卡金像獎最佳女主角,嗯,我沒看過這部電影,有機會再來看看。這次放她的照片,是因為 Se7en,她在這部電影裡出現的次數並不多,算是配角,但是把警眷的無奈演的很好。孤身跟著丈夫離開熟悉的環境來到這個大城市,肚子裡有了小孩,身邊沒有朋友,丈夫又忙於工作,心裡有些煩惱不知道該向誰說。後來被 John Doe 找上,領了便當。後來,跟 Brad Pitt 談了兩年戀愛。

  • Se7en (IMDB, Wikipedia),台譯:火線追緝令。很棒的電影,之前不知道為何,每次都是看到 Mills 殺了 John Doe 那段,大概知道 Mills 為什麼要殺 John Doe,並沒有整部電影看完過。
    只剩下一星期就要退休的警探 Somerset 與剛上任的警探 Mills 遇到了一樁詭異的謀殺案,  Somerset 認為這不會只有一樁,就跟長官說不想接,並且也請長官不要讓 Mills 接這案子。Mills 不諒解 Somerset 的舉動,認為是 Somerset 的偏見。果然,案子接二連三發生,而且都有關聯,Somerset 依據線索判斷兇手有宗教偏執狂熱,所以才以聖經裡提到的七宗罪來作為犯案的手法。兇手 John Doe 本來隱藏的很好,警探們怎麼查都查不到,後來 Somerset 透過特殊的關係才查到,CIA 有長期監控圖書館的借閱紀錄,依此來掌握常借書的人的偏好,就是透過這個,循線找到了 John Doe 的住處,並展開追捕。很可惜這次沒有逮到 John Doe,Mills 在追捕過程裡受了傷。在 John Doe 的住處裡找到了更多的線索,這都確定了 John Doe 就是兇手。
    John Doe 逃走之後,又犯下兩起案子,接著就自首了。這讓 Somerset 跟 Mills 很錯愕,因為案子算一算,才犯下五件,照 John Doe 的劇本,應該還有兩件才是,這讓兩人有點擔心。John Doe 自首後,跟他們說,我是有條件的自首,讓 Somerset/Mills 帶我去一個地方,我才願意坦白自首,否則,我可以假裝精神錯亂,讓你們沒辦法定我罪。警方在多番考量後,決定答應他。John Doe 帶著兩個警探到了荒郊野外,然後快遞來了,Somerset 去查看快遞送了什麼,當他看完包裹以後,急忙跑向 Mills,要他放下槍。John Doe 在 Somerset 跑過來的同時,告訴 Mills 說,我今早去了你家,你太太很漂亮,我很嫉妒,強姦未遂的情況下,我殺了他,所以我犯了嫉妒的罪。Mills 很生氣,等到 Somerset 過來時,問 Somerset 看到什麼,Somerset 只是讓 Mills 放下槍。Somerset 的表情動作與口氣,其實早已證實了 John Doe 說的是真的。最後在 John Doe 的挑釁之下,Mills 殺了 John Doe,這是忿怒,John Doe 死了但也完成了他的計劃。
    在查案的過程裡,Somerset 與 Mills 的誤會早已冰釋,在電影後半段,兩人一起去酒吧喝酒,Mills 問 Somerset 為什麼要退休,Somerset 說,因為他對人性感到失望。然後 Mills 說了,「I don’t think you’re quitting because you believe these things you say.  You want to believe them, because you’re quitting.」這句話讓我開始在想事情的因果有時候往往不是自己所以為的那樣,或許正好相反也不一定。
  • The Expendables 3 (IMDB, Wikipedia),台譯:火線任務三。這次有找了新生代演員與更多前動作明星一起來演,一方面是給觀眾新鮮感,帶來活力,一方面也是幫忙引領這些新演員。不過,我得說,電影裡想說的新舊衝突表現的並不好,劇情小牽強,覺得沒有前作來的好。
    故事相當簡單,出任務,看到之前應該死卻沒死的壞蛋,然後回去找人,因為 Barney 哥不想老伙伴涉入,就找了新人一起。本來任務還算順利,結果是壞蛋故意被抓,中了計的結果是新人都被抓,Barney 僥倖逃走。Barney 哥回去以後就抄傢伙,準備自己去救人,老伙伴出現要求加入,Barney 被感動,就大家一起去。最後把新人救出來,打趴了快三個連的人,也消滅了壞蛋,然後就其樂融融這樣。
    題外話,看了 Antonio Banderas 的出場以後才發現他有小駝背~

git 不能加空目錄的變通方法

git 沒辦法加空目錄,沒有任何選項可以用。Stackoverflow (How do I add an empty directory to a Git repository? – Stack Overflow) 上提到的變通方法就是為這些空目錄添加一個空白的檔案,檔名看是要用 .gitignore 或是 README 之類的就可以。

那要找所有空目錄的話,該怎麼找?find 就可以做到這點 (參考 bash – finding empty directories unix – Stack Overflow) :

find . -type d -empty -print

那麼,要為每個空目錄加上空白檔案的話,再利用 -exec 參數就可以了:

find . -type d -empty -exec touch {}/README \;

電影流水帳(2014/9/1~2014/9/15)

Premiere Inception - Ellen Page Ellen Page,最早看到她是在鴻孕當頭這部電影裡,後來又在 Inception 裡看到她,演技真的沒話說,很厲害。

  • X-Men: Days of Future Past (IMDB, Wikipedia),中譯:X戰警-未來昔日。跟金剛狼二的片尾彩蛋接不太起來,時間點不太對。
    在未來世界,變種人被 Sentinels 計劃裡的機器人追殺,接近全滅,Professor X 跟 Magneto 找了 Wolverine 來,讓 Kitty Pryde 送他回到過去,去說服年輕時的 Professor X 跟 Magneto 合作,讓他們阻止 Mystique 不要去殺 Trask,因為這個事件會導致 Mystique 的細胞被拿去應用在 Sentinels 計劃的機器人上,而引發未來的變種人滅亡。然後,Wolverine 就說服了 Professor X 跟 Beast,找了 Quicksilver 救了 Magneto ,一起去阻止 Mystique 這樣。最後是在千鈞一髮之際,改變了未來,大概就這樣。
    坦白說,第二集的劇情比較沒那麼吸引我。然後,沒看到片尾彩蛋。
  • 八日目の蟬 (IMDB, Wikipedia),中譯:第八日的蟬。感人的故事,看到最後野野宮希和子跟薰告別並束手就擒的那段時,我眼淚流下來。故事本身有爭議性,孩子是無辜的,從整個故事看起來,也難以判定誰對誰錯,只能說每個人的作為都會巧妙的影響日後的事件。
    故事從惠津子的控訴與希和子的自我認罪開始,惠津子的丈夫-秋山丈博有了外遇,對象是希和子。希和子一直被丈博欺騙,以為他會離婚跟她在一起,甚至在懷孕以後,為了他而打掉孩子。打掉孩子的結果是造成子宮沾粘,以後沒有機會懷孕了,懷孕的惠津子知道有希和子這第三者,也知道她無法懷孕,三番兩次去羞辱她。之後,希和子很難過,打算就此離去,離去之前,他想見丈博最後一面。去丈博家的那天下著大雨,希和子看著惠津子開車送丈博去車站,她走進房子裡,看到了四個月大的嬰兒,原本哭泣的嬰兒看到希和子不但沒被嚇到,反而笑了,她被嬰兒的笑容融化了,下定決心帶著嬰兒走掉。就這樣,希和子跟孩子一起生活了快樂的四年,直到某次被拍到照片,被選為攝影比賽的佳作,才被警方循線找到。法庭最後,法官詢問希和子有沒有什麼話想說的,希和子明白的說,自己不會後悔,同時也謝謝秋山一家人。
    惠理菜(薰)在莫名其妙的狀況下,跟以為是自己親生媽媽的媽媽分開,然後到以為是陌生人的親生父母家裡住,整個家庭都錯亂了。錯亂了十幾年,惠理菜慢慢遺忘四歲前的事情,直到大學,惠理菜搬出來自己住。很巧妙的,惠理菜重蹈希和子的覆轍,愛上補習班老師,並且有了身孕。確定有了身孕,在跟補習班老師吃飯的時候,試探性的問了他關於孩子的問題,她聽完補習班老師的話以後,非常確定他跟自己的父親是同類人,於是決定跟他分手,自己把孩子生下來。接著跟認識了沒多久的安藤一起旅行,追尋著以前跟希和子的足跡,慢慢想起了以前的事情,並且也鼓起勇氣要撫養小孩。最後在電影裡,算是一個和解的結局,惠理菜說,從來就沒想過要恨任何人。

在 Ubuntu 上使用最新的 mono/monodevelop

Ubuntu 上的 mono/monodevelop 都不是很新,一般來說,用 openSuSE 或 archlinux 是比較恰當的,因為 mono 早期是依托在 Novell ,而 openSuSE 又是由 Novell 維護的關係。而 archlinux 則是有強大的 repository 可以選用。

當然,要自己編譯也不是不行,真的試了之後,你會發現 mono 倒是還好,但要編譯 monodevelop 的話就是挺痛苦的事情了,因為相依性太多、太麻煩。

早期 mono 是不太管其他 distro 上的,但後來 openSuSE 推了 build service 之後,mono 就利用這個服務來提供套件給幾個知名 distro (CentOS, Debian, Fedora, openSuSE) 使用。在 Ubuntu 安裝的說明可以參考這個網頁,套件名稱是 mono-opt 跟 mono-xsp-opt ,版本是目前最新的版本。安裝以後的目錄是在 /opt/mono ,主要是要跟原來預設的 mono 區隔開來。在 terminal 下使用,可以用 source /opt/mono/env.sh 來變更必要的環境變數,以確定使用到對的 mono runtime。

monodevelop 的話,可以利用 Eberhard Beilharz 的 ppa,套件名稱是 monodevelop-5、monodevelop-database-5、monodevelop-debugger-gdb-5,這個 ppa 也同時提供了 mono 3.4 ,但沒有 xsp 套件。在 monodevelop 裡有設定可以指定要使用哪個版本的 runtime,這可以在 [編輯(Edit)][Preferences] 裡的 專案(Project) > .NET 運行時期(.NET runtime) 裡找到。

基本上 openSuSE 的 build service 應該是不太會無緣無故消失,mono 會持續維護這裡,但 Eberhard Beilharz 的 ppa 就不一定了,這點在安裝、使用的時候,請多留意。

編譯 gcin (Ubuntu 14.04)

在 Ubuntu 14.04 編譯 gcin,需要安裝這些套件:

  • libgtk-3-dev
  • libgtk2.0-dev
  • libanthy-dev
  • libqt4-dev
  • libqt4-dev-bin
  • qtbase5-private-dev
  • libxtst-dev
  • libappindicator3-dev
  • libchewing3-dev (Optional)
  • qt5-default (Optional)
  • qtchooser (Optional)

gcin 的原始碼可以在這裡取得,在 2.8.2 裡,新酷音的支援被關掉,可以自己修改 configure 來打開設定。qt5-default 跟 qtchooser 是可以不用安裝的,這是 QT5 使用的標頭檔與工具。

docker 小記

最近試著寫 Dockerfile,遇到了一些問題,也順利解決了,所以紀錄在這裡:

  1. 使用 apt-get install 時,會因為某些套件的安裝設定而跳出對話方塊,這會導致安裝被阻塞住。這可以藉著 debconf 來避免:
    ENV DEBIAN_FRONTEND noninteractive
    ENV TERM linux
    RUN echo ‘debconf debconf/frontend select Noninteractive’ | debconf-set-selections
    其中那兩行設置環境變數似乎不起作用的樣子,主要還是第三行。
  2. 找不到 add-apt-repository 指令。這是因為基礎的 image 裡沒有的關係,得使用 apt-get install python-software-properties 來安裝,在 Trusty ,也就是 14.04 裡,得再多安裝 software-properties-common
  3. 用 14.04 時,無法安裝 ia32-libs 。到 13.10 以後,ia32-libs 被移除了,改以 multiarch-support 替代,同時,得用 dpkg 聲明要使用 i386 architecture 才能使用 :i386,例如:
    RUN dpkg –add-architecture i386
    RUN apt-get install multiarch-support gcc-multilib g++-multilib libncurses5-dev:i386
  4. webupd8 的 Java installer 實際上是個安裝的腳本,會詢問是否同意 Oracle 的 license,才開始下載並安裝。同樣,詢問時也會阻塞住,得用下列指令事先回答同意:
    RUN echo oracle-java6-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
    RUN apt-get install -y oracle-java6-installer
  5. apt-get install 時,都加上 -y 選項以避免詢問。
  6. 不要更動 sources.list,原因是我有試著更換為台灣的替換來源,但卻會出現無法下載某些套件的情況。
  7. 如果是要搭 Android 開發環境,下面是我在 14.04 裡試出來該要裝的套件:
    RUN apt-get install -y build-essential openjdk-7-jdk multiarch-support
    RUN apt-get install -y vim ctags cscope id-utils curl gnupg flex bison gperf zip curl libc6-dev libswitch-perl libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev gcc-multilib g++-multilib mingw32 tofrodos dialog python-markdown libxml2-utils xsltproc zlib1g-dev:i386 zlib1g-dev
  8. 清理 container 與 image 的步驟是先刪除 container,再刪除 image。用 docker ps -a -q 可以看 container id,然後用 docker rm 刪除 container,最後再用 docker rmi 去刪除 image,要砍光光,可以這樣用:
    docker ps -a -q | xargs docker rm
    docker images -q | xargs docker rmi
  9. Dockerfile 最後最好是來個 apt-get clean,可以減少 image 空間。
  10. 由於 docker 特性,image 是一層一層疊上去的,只要有指令更動,就會多一層,這有點像 git/svn repository 的概念。在用 docker build 做好 image 以後,你會想只要一個 image 就好,這時候你需要的關鍵字是 flatten 。使用的指令是 export 跟 improt:
    docker export red_panda | docker import – exampleimagelocal:new

關於 Docker push/pull

  1. 首先需要有 server,在安裝上非常簡單,你可以參考這篇 How to use your own Registry,但我發現不用那麼麻煩,有 python virtualenv 在手,可以很快裝好。
    virtualenv docker-registry-env
    cd docker-registry-env
    source bin/activate
    pip install docker-registry
    cp ./lib/python2.7/site-packages/config/config_sample.yml ./lib/python2.7/site-packages/config/config.yml
    打完上面指令就裝完了。啟動的話,接著打 docker-registry 就可以。上傳以後的 image/repository 會放在 /tmp/test ,使用的資料庫是 sqlite3 ,則是放在 /tmp/docker-registry.db。如果要調整位置,可以改 ./lib/python2.7/site-packages/config/config.yml 裡的 sqlalchemy_index_database 與 dev/test/prod 區段的 storage_path 。
  2. push 的方法,就我感覺是有點隱晦。要 push ,得先為 image 加上 tag,例如:
    docker tag 06a3d360b8e2 localhost:5000/myrepo
    docker push localhost:5000/myrepo
  3. pull 的話,就這樣用:
    docker pull localhost:5000/myrepo

資料來源:

電影流水帳(2014/8/22~2014/8/31)

Génesis Rodriguez, en El Hormiguero Genesis Rodriguez ,在 Hours 裡飾演男主角 Nolan 的妻子。

  • Hours (IMDB, Wikipedia),中譯:搏命關頭。據說是 Paul Walker 的最後一部電影,這是部跟風災有關的故事。Nolan 有身孕的妻子在颶風來臨前進了醫院的急救室,可是運氣不好,只救回了孩子,妻子走了。早產的孩子需要依靠體外呼吸器輔助呼吸,可是颶風來了,整個醫院的人幾乎都走光光,醫生允諾他會回來救人。這次的風災很慘,外面淹大水,交通中斷,也有許多人被困住。所以 Nolan 就一個人在醫院裡照顧他的孩子,停電就找了手搖發電機,沒食物只能靠販賣機的零嘴跟飲料,就這樣苦撐。電影裡的時間感有點奇妙,醫生說大約兩天後,孩子應該就可以自行呼吸不必依賴體外呼吸器,照理來說,Nolan 就可以設法帶著孩子逃出去,不必守在病房裡,但事情就是沒這麼簡單,經過的時間感讓人覺得很長。在這段期間,Nolan 經歷孤獨,回憶妻子,有看到趁火打劫的人,有看到知恩回報的狗,最後,運氣很好的得救了,孩子也開始自主呼吸,一個充滿希望的結局。
  • Lost in translation (IMDB, Wikipedia),中譯:愛情不用翻譯。又是一個寂寞感破錶的電影。Bob 是個電影明星,隻身去東京拍廣告,可他並不是很想去。到了那兒,語言雖然有翻譯幫忙,但就是有格格不入的感覺。在這時候,他在飯店電梯裡看到跟自己一樣有同樣寂寞神情的 Charlotte。之後,他們相遇認識,還一起出去玩,兩者發生了小小的情愫與小爭吵,但並沒有發生什麼。
    最後,Bob 搭車離開飯店,在路上看到 Charlotte,雖然在離開時,已經說過再見,可是 Bob 還是讓車停了下來,跑去追 Charlotte。追到以後,他抱住 Charlotte,並在她耳邊不知說了什麼,Charlotte 從本來寂寥的神情轉變為笑容,接著再次說了再見離去。到底 Bob 跟 Charlotte 說了什麼?故事沒有交代,這點讓我很好奇。
  • 麒麟の翼 (IMDB, Wikipedia),中譯:麒麟之翼。小說改編的電影,我沒看過小說,但整部電影的節奏跟營造出來的氣氛相當的好。
    故事是從東京的起點-麒麟之翼開始的,巡警在這裡發現了一個受重傷的人 – 青柳武明,趕緊叫了救護車,但青柳已經傷重不治。值此同時,附近也發現了一個可疑的人 – 八島,在追捕的時候,八島卻被卡車撞到,陷入昏迷。警方開始調查,一開始是懷疑八島就是兇手,但加賀仔細調查與推敲,認為八島並不是兇手。於是就開始調查青柳為什麼會去日本橋附近走動,八島為什麼會在那兒,還有青柳的兒子 – 攸人退出游泳社團的事情。到最後,終於把整個事情串聯起來,找到真正的兇手。