星期五, 8月 28, 2015

電影流水帳(2015/8/18~2015/8/23)

Abbie CornishAbbie Cornish,算是 Limitless 的女主角,戲份不多。在維基百科上看到她有演過 A good year、 Sucker Punch 等片,但是對她真的沒什麼印象耶~
  • 等一個人咖啡 (IMDB, Wikipedia)。說真格的,這是一部鬼片。
    故事是這樣子的,一開始思螢在社團聽到傳說,得知了有阿拓學長這個人,因緣巧合之下,在一個人咖啡裡遇到並且相互認識。值此同時,思螢也開始看到一個帥哥 澤于,發現他一直坐在咖啡廳同個位子。思螢透過在咖啡廳的打工與阿拓,認識了許多人,也得知了這些人身上的故事,有些很感人,有些很搞笑。發生在老闆娘身 上的故事很感人,老闆娘年輕的時候找到了對的人,就老闆,畢業後決定一起開咖啡廳,在老闆研發出適合老闆娘喝的咖啡後,發生了意外,被車撞死。老闆娘傷心 欲絕,自己一個人苦苦把咖啡廳撐了下來,當作是睹物思人。思螢拿到社團學長姊筆記本後而看到的澤于,其實就是老闆,透過老闆,思螢跟阿拓被湊成了一對。到 了後面思螢向老闆告白的時刻,才知道老闆等的是一個能看到他的人,於是決定幫助老闆,讓老闆娘能走出喪夫之痛。最後,阿拓跟思螢在一起了,老闆娘也走出傷 痛,就此收尾。
    電影前面半小時,我覺得還蠻有趣動人,但中間的一個小時,就開始悶了,直到最後才又帶來驚喜,嗯,我指的是澤于是鬼的這件事情,整體來說,普普。
  • テルマエ・ロマエII (IMDB, Wikipedia),台譯:羅馬浴場2。又是一個典型續集比初作差的例子。
    基本上沿用第一集的橋段,這次多了一個雙胞胎的戲,就是未來繼任者其實有個雙胞胎哥哥,元老院想利用這個替身,掌握權力,主導羅馬帝國繼續去征服週邊國 家。後來就還是透過路西斯才順利解決這次的叛亂。故事裡跟漫畫有些不同的地方是女主角,漫畫裡沒有女主角,電影裡的女主角是讓他作為漫畫作者本人,她因為 遇到路西斯,想出整個漫畫而出名。
  • Limitless (IMDB, Wikipedia),台譯:藥命效應。其實已經在第四台看過不少片段,這次算是比較完整的看完。電影是改編自 The Dark Fields 這本小說,小說在台灣好像沒譯本。
    Eddie 是個江郎才盡的作家,這天意外遇到前妻的弟弟,得到了一種神祕的藥物,吃下去以後,發現心思敏捷,突然聰明了一百倍,於是神速的寫完小說交稿。接著開始炒 股票、賺大錢。可是後來發現這藥不是一直有效的,要持續服用才行,跟前妻聯絡以後,前妻也勸告他,要他慢慢戒斷才不會死掉。之後,一邊跟企業家 Carl 合作,一邊被黑道勒索,一邊又要克服斷藥危機,他認識到必須解決藥的問題。後來,在跟黑道衝突與跟 Carl 的決裂以後,更加速了 Eddie 的動作。一年以後,他出了書,準備參選議員,Robert De Niro 飾演的 Carl 悄然出現,以藥物作為代價,要求合作。豈料 Eddie 根本就不鳥他,因為已經準備好了,藥物已經戒斷,同時克服了副作用,Carl 只能悻悻然離去。
    我覺得故事本身不錯,還蠻好看的。
另外紀錄一下「特工卡特」, 主要就卡特跟 Jarvis 的故事,原來 Jarvis 是 Howard Stark 的管家,短短八集的影集就是交代他們兩人幫忙洗刷 Howard Stark 罪嫌的故事,最後發現是蘇俄方在搞鬼,他們也順利解決,讓 Howard Stark 恢復無罪之身。
截至目前為止,含本篇,共看完 41 部電影。

星期三, 8月 26, 2015

pyenv, IronPython 與 pip

會去追 code 主要是試著解決 Linux 下的 pip 不能用 IronPython 的問題,後來是沒解,但這是在去年年底時看的,我不知道現在是不是已經解決了。
pyenv install -l 這指令,大致做下面幾件事情:
  • 呼叫 .pyenv/plugins/python-build/bin/pyenv-install
  • pyenv-install 又呼叫 .pyenv/plugins/python-build/bin/python-build --definitions
  • python-build --definitions 實際上是把 .pyenv/plugins/python-build/share/python-build 下的資料夾都列出來
因 為 IronPython 2.7.5 才支援 pip,想要用 IronPython 2.7.5 (或更新的版本) ,可以這麼做:複製 .pyenv/plugins/python-build/share/python-build/ironpython-2.7.4 為 ironpython-2.7.5,把裏面的下載位址改為 https://github.com/IronLanguages/main/releases/download/ipy-2.7.5/IronPython-2.7.5.zip
這樣子,pyenv install -l 就會列出 ironpython-2.7.5,而且也可以下載安裝。
安裝 2.7.5 以後,用 pyenv shell ironpython-2.7.5 切換為 IronPython 2.7.5。
依照 2.7.5 的 release note 裡去執行 python -X:Frames -m ensurepip 時,卻出現以下的錯誤:
OSError: IronPython.Runtime.Exceptions.OSException: cannot load library 
  at IronPython.Modules.CTypes.LoadLibrary (System.String library, Int32 mode) [0x00000] in :0 
  at IronPython.Modules.CTypes.dlopen (System.String library, Int32 mode) [0x00000] in :0 
  at Microsoft.Scripting.Interpreter.FuncCallInstruction`3[System.String,System.Int32,System.Object].Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) [0x00000] in :0 
  at Microsoft.Scripting.Interpreter.Interpreter.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) [0x00000] in :0
會有這樣的錯誤,最主要是因為 ironpython-2.7.5/bin/Lib/ctypes/__init__.py 裡的 436~441 行,這裡是這樣寫的:

if _os.name in ("nt", "ce"):
  pythonapi = PyDLL("python dll", None, _sys.dllhandle)
elif _sys.platform == "cygwin":
   pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2])
else:
   pythonapi = PyDLL(None)

這邊傳了 None 到 PyDLL,而 PyDLL 裡 (就 353 行) 的 _dlopen() 無法開啟 None ,才丟出這個 exception,有試著加程式處理掉這個 exception,但是,後續會因為這行
memmove = CFUNCTYPE(c_void_p, c_void_p, c_void_p, c_size_t)(_memmove_addr) 而出現 SystemError: LocalAlloc 錯誤
結論,Linux 下,IronPython 還是沒辦法用 pip ,另外就是,我不知道現在修正了沒。

星期四, 8月 20, 2015

電影流水帳(2015/5/21~2015/8/17)

Bryce Concentrating轉眼差不多三個月過去... (遠目)
Bryce Dallas Howard 是侏儸紀世界的女主角,最讓人津津樂道的,就是她穿著高跟鞋跑完整部電影。
  • Spy (IMDB, Wikipedia),台譯:麻辣賤碟。雖然大致的劇情已經從預告得知了,但這並沒有減損看片的樂趣,故事相當好看。
    Susan 是 CIA 探員,主要負責的是後勤與提供資訊。與 Susan 配合的是 Fine ,Fine 在一次任務中疑似陣亡。Susan 就自告奮勇出任務,局裡另外一個特務 Ford 跟上面鬧翻,自己跑出去跟 Susan 一起調查。調查的過程裡鬧出許多有趣的事情,然後調查的結果也出人意料之外。最後 Susan 還是把這件事情解決了,順利走出她個人生命的新旅程。
  • Jurassic World (IMDB, Wikipedia), 台譯:侏儸紀世界。原本以為是重開機的作品,結果故事是延續前三集。遺傳科技公司在事件發生之後,繼續發展,並且把島發展為主題公園,吸引了許多遊客來參 觀。但是為了創造話題性,公司持續改造基因,以創造出新品種的恐龍。這次他們用了烏賊、迅猛龍、暴龍等的基因,創造出了帝王暴龍。故事應證了莫非定律,事 情永遠發生在你認為不會出事的時間點,突變的帝王暴龍非常聰明,應用自身的特質,突破人類的監控,逃出柵欄。整個島上一片混亂,女主角 Claire ,同時也是島上主題樂園的管理者,她的兩個姪子正好來到島上度假,所以 Claire 很緊張的找了男主角 Owen 來幫忙,一方面想救出姪子,一方面想控制住這個混亂的情況,但事情很難盡如人意,慢慢走向最糟糕的情況,帝王暴龍發現在島上根本可以橫著走,然後朝著人群 最多的地方去了。跟 Owen 有關係的軍火販這時候跳出來說可以阻止帝王暴龍,並且想利用這次機會取得 Owen 馴養的迅猛龍,不過,帝王暴龍也有迅猛龍的基金,牠們反而變成同伙,帝王暴龍也殺到人群最多的地方了。至此,事情看起來完全無法控制了啊!!!
    Owen 再次面對迅猛龍,迅猛龍回心轉意,幫忙 Owen;Claire 也放出了島上的暴龍,暴龍與迅猛龍一同對抗帝王暴龍;最終,帝王暴龍被逼到海邊,讓滄龍給吃了。
    這部電影的票房不錯,但我覺得故事普普,而且有蠻多不合理的地方,就當爽片來看就好。侏儸紀系列還是第一集最好看,Tim 爬上高壓電柵欄被電下來那幕永遠讓我膽顫心驚。
  • 道士下山 (IMDB, Wikipedia)。忘了在哪裡看到這部電影的名字,感覺上蠻好看,就看了,看完蠻後悔。
    故事大致分成三個段落,第一個段落是何安下下山遇到崔道寧,並且讓崔道寧收留,在崔道寧這兒,他看到崔道寧的老婆玉珍跟小叔偷情的事情,後來崔道寧被毒 死,何安下為崔道寧報仇。這段的問題是玉珍的形象不夠具體,我看不到玉珍偷情的理由,也看不到為什麼她非要聽小叔的話的理由,不過好像也沒有必要一定要一 個理由。
    第二段跟第三段是太極門的恩怨,何安下遇上趙心川,趙心川說要打藥酒,隔天在跟師父打鬥後要送給師父。何安下偷偷跟著去看熱鬧,卻發現趙心川師父彭乾吾用 了不光明的手段殺了趙心川。之後又遇上彭乾吾兒子彭七子,兩人去某個道觀胡鬧,遇上了師叔周西宇。周西宇是彭乾吾師弟,原本應該繼承太極門的,但為了師門 之內的和氣,遠走他鄉,想避開師兄彭乾吾,但不可避免的命運終究無法避免,彭乾吾為了師父秘傳的猿擒術不願意放過周西宇,展開衝突。經過一番決鬥,彭乾吾 受了重傷,其子七子拿了槍打了周西宇,周西宇因此受了重傷、傷重不治,臨終前,讓何安下去找他的好友查老闆。跟查老闆見面以後,交代了前事,查老闆決定為 周西宇復仇,就婉拒了當地軍閥趙笠人,表明自己不唱戲了。趙笠人是個小氣鬼,因為查老闆不給面子,就跟彭乾吾搭成一伙打周西宇。最後周西宇與查老闆的決 鬥,因為父子的親情,查老闆放下了仇恨,收了何安下當弟子,趙笠人被丟到河裡。
    這兩段用了大量的武打特效,看起來是蠻精彩,但其他就....不怎麼樣....

星期三, 8月 19, 2015

consul server 的啟動方式

要使用 consul 這個軟體必須要有 server,server 啟動的方式有三種:
  1. 先有 bootstrap server,然後其他 server 再加入,這同時也是 0.4 版以前的作法。所以在啟動 consul 時,必須要指定 -bootstrap 與 -server 參數,或是在設定檔裡指定 {"bootstrap": true, "server": true };接著在每個 server 的設定檔裡指定 {"server": true, "start_join": ["your_bootstrap_server_ip"] }
  2. 先 啟動數個 server,然後手動用 consul join 加入,這是 0.4 版以後提供的方式。官方是建議最好使用 3~5 台的 server,這幾台 server 會在 join 之後,自行投票選出誰當 leader 。啟動 consul 時,要指定 -bootstrap-expect expected_server_number 與 -server,或是在設定檔裡指定 {"bootstrap_expect": expected_server_number, "server": true },等到啟動之後,再用 consul join server_1_ip server_2_ip server_3_ip 來加入 cluster。
  3. 用 Hashicorp 提供的 atlas 服務,啟動 server 以後,會透過 atlas 服務,自動做 join 的動作。要使用 atlas,必須先到 atlas 註冊,取得 token。啟動 consul 時,要指定 -server, -atlas, -atlas-token 與 -atlas-join ,或是在設定檔裡指定 {"server": true, "atlas_infrastructure": "xxx/yyy", "atlas_join": true, "atlas_token": "your_atlas_token" }
這裏面當然是用 atlas 最方便,除了有提供 Web UI 可以做監控之外,還可以使用 vagrantup 跟 terraform 等來做管理,只是使用這項服務是有代價的,超過 10 個 node 每個月收費 40 美金。
參考資料:

星期二, 8月 18, 2015

Golang and GVM

Ubuntu 14.04 預載了 Golang 1.2 ,如果想要其他版本的呢?到官方網站去找,會發現根本找不到下載連結。用 ppa 去找,是可以找到這個 golang 1.4 : Jay R. Wren
為了安全起見,還是用 Version manager 好了,Golang 的 Version manager 在網路上可以找到兩個:govm 跟 GVM,目前看起來比較常見的是 GVM。GVM 的安裝可以參考這篇:7 Easy Steps to Install Go (Golang) on Ubuntu
摘錄安裝步驟如下:
  1. bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
  2. 在 .bashrc 或 .zshrc 裡加入 [[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
  3. 新開或重開終端機
使用方法:
  • 看能下載的版本:gvm listall
  • 列出目前有的版本:gvm list
  • 安裝指定版本:gvm install desired_version
  • 使用指定版本:gvm use go1.4.2
  • 其他指令說明,執行:gvm

星期一, 8月 17, 2015

OpsWork / Terraform / Vagrant 小感

Vagrant 其實不太能拿來跟 OpsWork 或 Terraform 相比,不過有了 push 之後,算是有個堪用的 deploy 方法...
前一陣子看到 Terraform ,只要寫好腳本(或者該說是計劃),這工具就會自動幫你把環境佈署到雲端,比如說,你有 Web application、Web Server、Database、HAProxy ... 等等,在腳本描述好關係之後,Terraform 可以自動幫你佈署到 AWS 、DigitalOcean、CloudStack、Docker、Google cloud 、OpenStack、Heroku ... 等地方,非常的方便。但如果要用在內部的環境,可能就沒辦法 (除非內部自架了 CloudStack 或 OpenStack)。
OpsWorks 是在 DevOps gitter 裡看到的,Google 了一下,這是 Amazon 提供的服務,做的事情其實跟 Terraform 蠻相近的,跟 Amazon 的服務整合度更高。我是還沒試用過,不知道好不好用。
Vagrant 本身是操作虛擬機器的好幫手,在 Google Altas 時,看到 Vagrant 有提供 push 這子指令,這可以用來做 deploy 。比如說,你在 Vagrantfile 裡描述了 Web application server、Web Server、Database server ... 等等,在本地端可以用 vagrant up  啟動,進行驗證,那要實際佈署到遠端時,就可以用 push 來做。push 的對象(或者該說是方式?)可以是 Altas、FTP/SFTP、Heroku 或執行自訂的腳本,所以看起來或許適合我現在的情境。
順便記一些連結:

星期六, 8月 15, 2015

golang 起手

環境是 Ubuntu 14.04 trusy,14.04 預載的 go 版本是 1.2.1 。
先安裝 golang :sudo apt-get install golang golang-go golang-go.tools ,然後設定環境變數,看是用 bash 或 zsh,bash 就是改 $HOME/.bashrc,zsh 就是改 $HOME/.zshrc,加入:
export GOROOT=$(go env GOROOT)
export GOPATH=$HOME/.go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然後 mkdir -p $HOME/.go ,$GOPATH 這路徑裡,放的是 go get 所取得的原始碼。
接著就可以照 golang 环境配置建议 裏面的建議來安裝工具,裏面的 oracle 可以跳過,這已經包在 golang-go.tools 裡。另外這篇裡的編輯器是介紹用 Github 的 ATOM,所以該找時間來找一下 vim 的好用 plugin 來用。
要安裝比較新版本的 golang ,除了可以找 ppa 之外,也可以用 govm 或 gvm 來安裝:
govm 看起來顯然是小很多,gvm 在網路上的介紹文比較多,自己目前是還沒試過。

星期五, 8月 14, 2015

Packer

是 HashiCorp 釋出的一個工具,它可以依照寫好的設定檔,打包各種格式的 image,像 Amazon Machine Image (給 EC2 用)、Virtualbox iso/ovf、digital ocean、docker、openstack、vmware iso/vmx、Vagrant box …. 等等。安裝很簡單,就下載 zip ,解壓縮 (Linux 下要改權限) 放到路徑裡就可以使用了。
第一次撰寫可以參考 https://github.com/shiguredo/packer-templates 這裡的設定檔範例。指令的使用也蠻簡單,例如:只要做 virtualbox 用的 ovf ,packer build -only=virtualbox-iso template.json
一口氣 build 不同格式的 image:packer build -parallel=true template.json
在 provision 的部份,可以用 shell、chef、puppet... 等,也可以用 ansible https://www.packer.io/docs/provisioners/ansible-local.html
打包好的 image ,會自動放在或推到對應的地方,例如 AMI 就會放到 Amazon 那邊,docker image 可以推送到 docker registry,digital ocean 就是 droplet 或者是推送到 vagrant 等等。

星期六, 7月 18, 2015

Terminal 下的複製與貼上

複製與貼上是透過 xsel 指令,例如:
    • 複製到剪貼簿:xsel --clipboard < your_file
    • 將內容輸出到指定檔案: xsel --clipboard > your_new_file
    • 將指定字串放到剪貼簿裡:echo "your_text" | xsel --clipboard
如果連線到遠端,也可以使用,但是 ssh 連線時,必須加上 -Y 參數,或是在設定檔裡加上 ForwardX11 yes 跟 ForwardX11Trusted yes 。
另外再介紹 parcellite,這是一個剪貼簿的管理程式,類似 Windows 的 ditto。在啟動以後,按下 ctrl+alt+h 就可以叫出來,這時可以看到剪貼簿的過往紀錄。
參考資料:

星期五, 7月 10, 2015

Python InsecurePlatformWarning

碰到這個歡樂的錯誤,其實已經碰過兩三次了,前面幾次都不了了之。
InsecurePlatformWarning: A true SSLContext object is not available.
這 次是確實的找到方法可以不用改程式避掉的方法,方法很簡單,就是安裝 pyopenssl ndg-httpsclient pyasn1 這幾個模組,這幾個模組會自動將 SSL 相關的憑證注射到 urllib3 模組裡,下載時就不會有 InsecurePlatformWarning 的警告。
這方法是在 StackOverflow 的 python - InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately 看到解法的,感謝。

星期一, 7月 06, 2015

git clone fail

遇到下面這錯誤~
$ git clone http://your_host/your_group/your_project.git
Cloning into 'your_project'...
remote: Counting objects: 426, done.
remote: Compressing objects: 100% (375/375), done.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
過程大致就如 gitlab - error: git-upload-pack died of signal 13 - Stack Overflow
所以我試過 git config --global http.postBuffer 524288000 ,也試著加過 GIT_CURL_VERBOSE ,但都看不出什麼端倪,伺服器上的 log 也沒看到,最後就如 gitlab - error: git-upload-pack died of signal 13 - Stack Overflow 的解答所說,是 permission 問題。我猜可能是我有調整 nginx user 的關係,導致錯誤。後來就是依據 log 裡的提示,調整 /var/run/nginx/proxy 下資料夾的 owner 就解決問題了。

星期六, 7月 04, 2015

Ansible mysql 相關模組所需的套件

使用 mysql_usermysql_db 這兩個模組時,Target 方必須要安裝幾個套件才能運作,否則會有錯誤
msg: the python mysqldb module is required
在 Ubuntu 裡要裝的是 python-mysqldb 、mysql-server  。python-mysqldb 是必要的,因為 python 的程式會需要用到這個模組;而 mysql-server 則要視你的 mysql server 所在機器而定,如果是在其他機器上,就可以不需要安裝。

星期三, 6月 24, 2015

Use NFS as synced folder in Vagrant

Just note during I use NFS as synced folder in Vagrant.
  1. In your host, you have to install nfs-kernel-server:
    sudo apt-get install nfs-kernel-server
  2. In your Vagrantfile, you have to specify private_network even you want to use public_network.  If you don't specify private_network, vagrant up will fail.  Then specify synced_folder.
    config.vm.network "private_network", ip: "192.168.33.10"
    config.vm.network "public_network", ip: "192.168.11.2", bridge: "eth0"
    config.vm.synced_folder ".", "/vagrant", type: "nfs"
Reference:

星期二, 6月 16, 2015

Build pcmanfm-qt in Ubuntu trusty

Just summary build steps.
First, you need to install these packages: qt5-default, qtchooser, qt5-qmake, appmenu-qt5, qtdeclarative5-dev, qttools5-dev, qttools5-dev-tools, libqt5x11extras5-dev, libglib2.0-dev, libgio2.0-cil-dev, libfm-dev, libmenu-cache-dev
Then clone pcmanfm-qt from https://github.com/lxde/pcmanfm-qt
Enter pcmanfm-qt directory, type: cmake -G "Unix Makefiles", then run: make && make install
After installation, you need to add a file "x86_64-linux-gnu-local.conf" in /etc/ld.so.conf.d and put "/usr/local/lib/x86_64-linux-gnu/" in it.  Run sudo ldconfig to make the setting available.

您或許對這些文章有興趣

Related Posts Plugin for WordPress, Blogger...