Github ATOM

Github 推的編輯工具,還蠻好用,跟 Sublime Text 比起來,至少可以打中文… XD

安裝相當簡單,到 ATOM 網站,下載對應的安裝檔案安裝就可以了,我是用 Ubuntu,下載 .deb 用 dpkg -i 安裝就可以了。

安裝以後,需要調校一下,因為字型的關係,中文會顯示不出來。設定可以參考下面來進行調整:

不過說真的,我不是很常用這個,大部份還是用 vim。這兩天再拿出來用,才發現多了一個 apm 的指令,顧名思義就是管理 ATOM packages 用的,像是安裝、反安裝或更新等等,都可以透過這個指令進行。

不過,要檢查 ATOM 更新的話,就比較麻煩了,還好有 package 可以幫忙做這件事情,我是用 atom-update 這個 package。

補充:參考這篇 Atom 使用心得與 Package 推薦 跟根據自己需求,裝了一些 packages/themes:

  • atom-beautify
  • atom-hexo
  • atom-material-syntax
  • atom-material-ui
  • atom-update
  • autocomplete-python
  • color-picker
  • ex-mode
  • file-icons
  • git-blame
  • git-log
  • git-plus
  • highlight-selected
  • indent-helper
  • linter
  • linter-flake8
  • markdown-preview-plus
  • markdown-toc
  • merge-conflicts
  • minimap
  • project-manager
  • recent-projects
  • vim-mode

Migrate ghost to hexo

Hexo 是一個快速、簡單且強大的網誌框架,Ghost 是一個用 javascript 寫的 Blog 平台。

我在公司有用 Ghost 架一個小小的 Blog ,紀錄一些事情,後來想把 Ghost 搬到 Raspberry PI 上,但是 Raspberry PI 的效能不是很好,就轉念改用 Hexo。Raspberry PI 只架設單純的 Web server,桌機用 Hexo,在產生完網頁之後,再 Deploy 到 Raspberry PI 上。

要搬家基本上不難,Hexo 這邊先安裝 hexo-migrator-ghost,然後依照說明,先到 Ghost 那邊 (http://yourblog.com/ghost/debug/) 匯出資料,然後回到 Hexo ,用 hexo migrate ghost exported_json 匯入剛剛在 ghost 匯出的檔案就可以了。

圖片的話,要自己處理,最快的方法是複製 your_ghost_folder/content/images 到 your_hexo_folder/source/images ,然後將文章裡圖片路徑的 /content 移掉就可以了。

Hexo 在處理文章圖片上有更好的方式,可以參考這篇文章:Asset Folders ,在 _config.yml 裡啟用 post_asset_folder: true 以後,在建立新文章時,hexo 會自動建立以文章標題為名的資料夾,把圖片放到該資料夾下面,然後引用就可以了。這樣做比大堆頭的擺在 source/images 下自己管理來的好。

error, fat_get_cluster: invalid cluster chain

Android 手機沒辦法掛載 MicroSD,插到多合一讀卡機裡,接到桌機上,用 dmesg 看,發現有這樣的訊息:

error, fat_get_cluster: invalid cluster chain

請 Google 大神幫忙找答案:

循線找到 testdisk 這工具,sudo apt-get install testdisk 就可以安裝。

安裝以後,直接執行 sudo testdisk,大致就依照畫面,依照下面的選擇去選就可以了。

>Create a new log file
[Choose Disk]
>Intel/PC partition
>Advanced
[Choose Partition]
>Boot
>Repair FAT
[Accept Defaults and Write]
>(Q)uit until exited

大體來說,就是選磁碟、選 Intel/PC partition,選分割區,選 Boot,選 Repair FAT,再選 Accept default and Write 就行了。

想不到有這麼神奇的指令,托福,我的 MicroSD 救回來了。

gitlab 的備份檔

gitlab 的備份是一個 tar 檔案,用 tar xf 解開以後,會依照你 gitlab 裡的 user/group 區分目錄,解開以後,會發現裏面又是一堆 .bundle 檔案。

.bundle 該怎麼解開呢?其實它也是一個 tar 檔案,用 tar tf 就可以看到內容,所以如果要還原的話,就先建一個目錄,再切到該目錄下解開就可以了。

取得 KVM 執行中 VM 的 IP

在建立並執行 VM 以後,除了利用 console 登入取得 IP 之外,有沒有辦法不要利用 console 取得 IP 呢?

第一個找到的是這篇:Tip: Find the IP address of a virtual machine,他的作法是取得 VM 的 MAC address ,再以 MAC address 去 arp 裡找到對應的 IP。這方法很簡單,但是有一個缺點,就是 VM 必須要有跟 host 有網路動作,arp 裡才會有這資訊。作者是用 perl 開發的,我改寫成 Python

這樣並不符合我的需求,所以又繼續找。後來找到這篇:linux kvm – Find IP of VM running KVM – Super User  ,裏面的前幾個回答也是說要用 arp,但是最後一則回覆提供了不同的答案,他是用 virt-cat 。查了一下,virt-cat  需要安裝 libguestfs-tools ,安裝好以後,就可以用 sudo virt-cat -d your_domain /var/lib/dhcp/dhclient.eth0.leases 去查看 /var/lib/dhcp/dhclient.eth0.leases 檔案並取得 IP 了。整理一下,使用這個方法必須:

  1. 安裝 libguestfs-tools 以取得 virt-cat
  2. VM 是使用 DHCP,如果是固定 IP ,我想這在製作 image 的時候,應該就能確定了,所以這不是問題。
  3. 網路介面是 eth0,如果是其他的 eth1 或什麼的,就自行把 eth0 換掉就可以。

缺點大概就是要 sudo 吧,不 sudo 的話,會有錯誤。查了一下,發現這是因為存取 /boot 下 kernel image 時,權限不夠所引起的,沒找到方法解決。

編譯 Raspberry PI Kernel

本意只是想在 Raspberry PI 上裝 Ghost ,結果 node-sqlite3 裝不上去,Raspberry PI 版子速度又太慢,就想乾脆用 QEMU 摹擬 Raspberry PI。

用 QEMU 摹擬 Raspberry PI 可以參考這篇:Raspberry Pi • View topic – HOWTO: Virtual Raspbian on Qemu in Ubuntu Linux 12.10

裏面的步驟大致是這樣:

  1. 取得 qemu 用的 kernel
  2. 取得 Raspbian imgae
  3. 安裝 QEMU:sudo apt-get install qemu-system-arm
  4. 執行 QEMU:qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -hda raspbian-jessie.img -kernel zImage -append “root=/dev/sda2” -net nic -net user,hostfwd=tcp::2222-:22 -serial stdio

我目前是卡在 qemu 用的 kernel 上,原本想說直接拿 raspbian 的 kernel.img 來用,但發現不行。如果用文章裡作者提供的 zImage 是可以開機,但會有找不到 init 的情況。所以現在就朝自己編譯 kernel 的方向來做,這部份可以參考:

儘管如此,我編譯出來的 kernel 仍然無法順利開機,找時間再研究吧~

電影流水帳(2015/10/5~2015/10/31)

Alicia Vikander在 2007 年的時候,看了「時をかける少女」 (台譯:跳躍吧!時空少女),最近又重看了一次。這次重看,比上次看仔細多了。真琴使用了倒數第二次的時空跳躍能力,促成了功介跟學妹的相識,在回程的路上,遇到了千昭,千昭問她是不是知道時空跳躍。真琴被嚇到,使用了最後一次的跳躍能力。這次跳躍導致了不一樣的結果,好友功介被火車撞上,就在被撞上的時候,千昭也使用了跳躍能力,救回功介,為的是不讓真琴難過。接著,千昭向真琴說明了時空跳躍的緣由,真琴聽完以後非常的難過,難過的是要跟千昭分開了。於是,千昭走了,真琴非常沮喪。回到家裡,真琴很沮喪的躺在床上,然後她意外地發現了還有一次時空跳躍能力。於是,真琴非常開心地使用了這次能力,回到送作業簿到物理教室的那個時間點,黑板上寫著 “Time waits for no one” ,這次她把握機會向千昭說明了真相,讓千昭能使用他最後一次的時空跳躍能力回到未來,也允諾千昭會好好的保護那幅他想看的畫。關於畫的這件事情,真琴的阿姨似乎也遇到了一樣的事情,阿姨在少年時光也是遇到兩個男生,在電影的一開始,也巧妙的暗示了真情有時空跳躍的事,所以選擇了進入博物館來維護畫作。雖然是重看,還是很有意思的電影。

照片的女生就是演 Ex Machina 的女主角 Alicia Vikander ,在電影飾演女機器人,演的很不錯~

  • Sodor’s Legend Of The Lost Treasure (IMDB, Wikipedia),台譯:湯瑪士-多多島的寶藏。這集湯瑪士沒做好事情,一直出包,被貶去建造新鐵路路線,他意外發現了海盜船。然後循線而來的船員趁著夜晚在尋找海盜船的寶藏,湯瑪士在不受胖總管的重視下,被船員蠱惑,幫他尋找寶藏,但是怎麼找也找不到。後來寶藏被挖土機找到了,寶藏被送到胖總管的保險箱保管,船員想要搶奪這份寶藏,湯瑪士也看穿了船員的不懷好意,就想盡辦法阻擋船員。最後,成功的擋下船員,讓船員沒辦法把寶藏帶走,而湯瑪士也重新贏回胖總管的信任。
    我覺得這次的故事還不錯,湯瑪士一開始真的很欠人罵,很能拿這跟小朋友說教~ 🙂
  • Ex Machina (IMDB, Wikipedia),台譯:人造意識。Caleb 是個科技公司的新員工,意外中獎,得到去老闆豪宅同住一周的大獎。然後 Caleb 就搭了老闆的直昇機飛到挪威的豪宅去,在直昇機上問了一句,我們到底到了沒?駕駛回答說,我們已經到啦,現在下面的土地都是老闆的!!
    到了豪宅以後,Caleb 認識了老闆 Nathan,Nathan 帶他認識了整個房子,接著才跟他說,找他來,是為了作圖靈測試。這裡要介紹一下圖靈測試,圖靈測試主要是測試人工智慧是否成功,傳統的圖靈實驗是不讓人看到機器人而跟機器人對話,如果人沒發現自己是跟機器人對話,那麼人工智慧就算成功。Nathan 做了個女機器人 Ava,但他做這個圖靈實驗並不是傳統的圖靈實驗,而是打破傳統,直接找對人工智慧理論很熟悉的 Caleb 跟 Ava 面對面的談話,讓 Caleb 來判斷 Ava 是不是具有人工智慧。
    Caleb 跟 Ava 交談了兩三天,不知不覺地被 Ava 所吸引。當 Ava 利用斷電,對 Caleb 說,Nathan 有問題,不要相信他時,Caleb 開始對 Nathan 存疑。於是 Caleb 利用 Nathan 的爛醉展開調查,發現 Nathan 其實已經做了好幾具機器人,現在房子裡的女僕也是,之前的機器人似乎是人工智慧太成功,都想逃出去,然後都被 Nathan 報廢了,放在衣櫃裡。
    Caleb 調查之後,跟 Ava 談話,暗示 Ava 斷電,斷電後跟 Ava 說明了他的計劃與計劃執行時間。這次會面之後,Caleb 就等著時間到來,就在計劃執行的前一刻,Nathan 找了 Caleb ,說明整個情況,才說明完沒多久,計劃就執行了。Ava 走出了囚室,跟女僕說了一些話,匆忙趕去阻止的 Nathan 被女僕所殺,女僕被關閉,Ava 找到 Nathan 之前的女機器人,整束身體之後,將 Caleb 關在豪宅,自己搭了原本預定來接 Caleb 的直昇機到大都市去….結局就這樣。
    本來以為是很俗套的故事,想說就先看看,不好看的話就算了,結果看到男主角 Domhnall Gleeson 就決定繼續看下去,因為他之前演的 About times 還不錯。看下去以後,才感覺到故事的張力跟懸疑真的很不錯,結局走向也蠻驚悚的。如果真要說什麼覺得可惜的地方,大概就是看到有打馬賽克的版本了吧~

Zabbix discoverer processes more than 75% busy

在公司 Zabbix dashboard 上看到這訊息,但明明 CPU 就沒飆到那麼高,後來去 google 了一下,主要是參考這兩篇:

文章裡提到的訊息有點差異,不過都是改 /etc/zabbix/zabbix_server.conf 裡的 StartXXXX 設定,將數值調高即可。例如 discoverer 就調高 StartDiscoverers 的數值,ping 就調高 StartPingers 的數值,以此類推。

改完,重新啟動即可,Zabbix Dashboard 上應該就看不到這訊息了。

P.S. 好像應該來開個 「IT 日常」的分類?!

pyenv: no such command `virtualenv-init’

最近開 terminal 時,都會看到這樣的錯:

pyenv: no such command `virtualenv-init’

今天終於想要解決這問題了,找了一下,源頭是在 oh-my-zsh 的 virtualenv plugin 裡,裏面用了 eval “$(pyenv virtualenv-init – zsh)” ,循線追到 pyenv,發現是 pyenv 沒有 pyenv-virtualenv plugin 的關係。

依照 yyuu/pyenv-virtualenv 上的說明,執行以下指令,就解決問題了。

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

最後,順道更新 pyenv :cd ~/.pyenv && git pull –rebase origin master

OpenKM

同事找到這篇介紹 OpenKM 的文章:開源OpenKM文管系統 立即打造知識管理平台

想說就裝起來試試看好了,看到有人用 docker 搭起來,就照著做囉:使用docker在centos6.5上部署openkm详细过程

不過這篇文做法的缺點是,把原本的 /usr/local/tomcat 都移到 volume 裡去,這就等於是程式都放到外面去了。或許應該參考原本 mcsaky/openkm 的 Dockerfile 與 OpenKM Installation ,再來改寫 Dockerfile 會比較好一點。

反正只是先試試看,所以我也沒有用 nginx 擋在前面,直接用 tomcat ,就先這樣用吧~ 有需要的時候,再來研究看怎麼改寫。