February 6, 2012

Cat Library

No comments:
日前 Tony 在 Facebook 分享了一個愛貓人士專用書架 (original website),果然許多養貓的人一看都直呼:「想要買這個!」

厲害的設計師,透過三種簡單的元件就可組成一個開放書架,只要看懂那三個組件之後就可以請木工師父做一個。恰好最近因為要裝潢自己的新房,透過 Bizkit 的介紹用了 SweetHome3D 這個非常棒的室內設計軟體。

SweetHome3D 有 Linux 版可用,Debian 系應該是一行指令就裝完了。使用上非常簡單,基本上就是 2D 的編輯畫面把各個 3D model 排在一起,底下就會出現 3D 的視圖。


我用做了一個簡單的 Cat Library 3D model,可以在 SweetHome3D 裡面使用。其實用 Google 的 Sketchup 來作應該很快,但是它沒有 Linux 版,只好用 blender。

從來沒用過強大的 Blender,光是學一些最基本的操作就花了我好多好多時間。一開始產生的元件,貼圖之後不知為何在 SweetHome3D 裡面的顯示結果很奇怪,最後我只好忍痛放棄貼圖,改用類似木頭的顏色當成材質。

如果你也需要,可以從這邊下載

4 x4 格 Cat Library 的 Blender 檔
4 x4 格 Cat Library 的 Obj 檔  (SweetHome3D 可以直接 import 進去)
5 x5 格 Cat Library 的 Blender 檔
5 x5 格 Cat Library 的 Obj 檔  (SweetHome3D 可以直接 import 進去)

January 30, 2012

2011 歐洲記遊

No comments:

2011 年中的時候,參加了 Canonical 在布達佩斯所舉辦的 UDS-O,這篇記事不但拖過了新年,連農曆年都沒有趕上,懶惰可見一斑。

不到一週的行程,雖然過了很久,小事忘記不少,歐洲美麗風景給我的感動其實一直持續到現在。主要分成 Budapest 與 Armsterdam 兩部份,大部分的照片已經放上 Picasa,有興趣的可以去看看。

在出發的前幾天發生了一些不愉快的事情,耽誤了許多準備的時間,很可惜忘記帶單眼過去以致於所有的照片都是用手機拍照,不過再來一次,我是否願意帶著單眼到處跑也很難講 XD


啟程

一大早從新店搭計程車至中正機場,以節省預算的方法下,我們的路線是 桃園 -> 香港 -> 阿姆斯特丹 -> 布達佩斯。雖然花上不少時間在轉機,一路上多停留感受一下出國的真實感也不錯。

From Budapest & Armsterdam


香港機場等了 11 個小時,坐在大廳裡用 Kindle 幾乎看完了一整套的漫畫。香港的機場比起桃園機場真是先進太多,整體的設計感十分現代。機場內有遇見許多大陸旅客,也見識到大陸旅客不排隊的特色。當大家都在排隊買東西的時候,前方突然有幾個講著標準北京腔的人插隊,隨即呼朋引伴:「陳老師、徐老師,快過來這兒。這裡的東西比較便宜呀!」。瞬間我們的前方就擠滿了十幾個穿著相同背心的旅客,當然他們彼此之間也是沒有排隊習慣。有幾個已經排隊好一段時間的外國人向服務生抗議,只見服務生聳聳肩一臉無奈。站在後方聽他們的對話,這些習慣插隊的大陸客似乎是某校的教師團出遊。

由於缺少行前準備,許多東西我們是出發後才慢慢補足。甚至連當地的變壓器是何種形式我們都不知道 XD。一直到當晚十一點上飛機時,前前後後的同班機旅客都是西方臉孔的時候,才真正有著要去歐美國家的感覺。十幾個小時的飛行,除了睡覺就是不斷地餵食飛機餐。長腿的困擾在這時候就出現了,沒事我就要站起來走動走動,好險我一向容易入眠,昏睡幾次就到了阿姆斯特丹。

清晨抵達阿姆斯特丹的史基普機場,周遭已經很難看見東方臉孔。驚訝的是還能看見許多簡體中文字的 DM,果然中文快要變成強勢語言了。史基普機場非常大,而且有許多購物的商店。可惜我們回程的時間沒抓好,Kanru 原本想要趁機買一台相對便宜的 iPad 回家,不但沒找到還差點趕不上飛機 XD


抵達布達佩斯


約兩三個小時的航行,從晴朗的阿姆斯特丹飛抵匈牙利的布達佩斯。落地的時候看見的就是雨天,入境的機場有點陳舊,讓人感覺心情不好。怎知這是我們來這幾天唯一遇上的壞天氣,而且整個機場剛好就這個地方比較不先進。

From Budapest & Armsterdam


我們出發前除了知道會住在哪間旅館之外,剩下的貨幣、交通方式等等一無所知,當場發揮阿宅本色,開始用各種方式收集資訊理出頭緒之後,也在機場就看見許多一同要參加 UDS-O 的阿宅們,一同坐車到市中心的旅館。我們住的是 King's Hotel,離會場距離不遠,在大馬路旁的小巷子內。

從機場往旅館的路上,總能看見牆壁上有許多噴漆塗鴉,這一點至少我是很不習慣的,雖然路上看見的垃圾不多,總覺得不太舒服。

旅館看得出來有點年紀,整體很乾淨很舒服。大門對面的公寓有濃濃的東歐味(老房子 + 鐵網 XD)。雖然緊鄰大馬路,但是整個街道非常、非常安靜,跟前一天的新店街道的經驗比起來,這才是人住的地方。我的運氣不錯,房間有個小陽台。不時有小鳥飛過,站在陽台俯瞰整個後院,還看得見鄰居的工作環境、琴房。


緊急採購逛大街

身上幾乎什麼裝備都沒有,不久後我們就出發到街上採購。當天是星期日,見識了歐洲人週末不工作的風氣,除了大賣場或超級市場以外之外完全找不到可以買東西的地方。當地可以使用歐元或是福林兩種貨幣,換算後發現當地的物價比台灣還要低,也許是因為匈牙利在 1989 年共產主義才開始瓦解,在歐洲不必當窮人的感覺真好。

From Budapest & Armsterdam


在匈牙利的首都布達佩斯逛大街的首要感想是,人行道竟然幾乎比大馬路還要寬,而且這條馬路在查了地圖之後才知道是主要道路之一。最不習慣的是無論你在巷道過馬路時,駕駛發現你都會停下來讓你先過,不論他剛剛開得多快,這大概是我有生以來首次在馬路上覺得自己像個人。

January 16, 2012

2012 選後雜談

No comments:
先引述一個 twitter 上面看見的來自對岸同胞的有趣感想
刚一台湾朋友结束聊天时对我说,“明天早上我們要去投票了﹐晚上就知道總統是誰了”,我顿时不知如何答复。虽然我们之间的交流没有任何障碍,但在他面前真觉得无地自容。我只好说,“你们太落后了,我们如果明天早上投票的话,今天晚上就知道谁会当选了。。。”

由於我個人關心的部份是政黨票,因此報一下政黨票的相關數據 (來自中選會網站)

這一次有過門檻的政黨一共四個,第一階段 得票率

  • 國民黨 約 44.5%
  • 民進黨 約 34.6%
  • 台聯    約 8.9%
  • 親民黨 約 5.4%
這四個黨在未來四年可以分到不分區立委以及政黨補助。

至於其他幾個小黨,與 2008 年得票概況 相比
  • 綠黨從 58473 票 (0.6%) 到 229566 (1.74%) 進步了約十七萬一千票
  • 台灣國民會議(我視為紅黨) 從 77870(0.8%) 到 118632 (0.9%) 進步了約四萬票
  • 新黨從 386660 (3.95%) 到 195960(1.48%) 減少了約十九萬票
很明顯新黨未來勢必有相當大的挑戰。至於去年年終才改名的台灣國民會議,我相信絕大多數的人對這個名字非常的陌生,還能夠拿到 11 萬多張的選票,我覺得是很不錯的進步。最讓我訝異的是綠黨,拿了將近 23 萬張的選票,增加了好幾倍,成為低於嚴酷門檻的最高票黨,也成為台灣第五大黨。我相信「政黨票的故事」應該有不小的幫助 XD

5% 的門檻真的很可怕,以這次低於 5% 的最高票黨綠黨來想像

今天走進菜市場拿大聲公喊一下:「知道 國民黨/民進黨/親民黨 的鄉親請舉手!」,我相信 100 人之中絕對超過 99 個人舉手。

但我沒有辦法想像,問題變成「認識綠黨的鄉親請舉手」,我很難相信會有 5 個人舉手,更遑論要把票投給綠黨。從這樣來看,進步到 1.74% 真的不簡單。

話說今年的首投族估計數字是 76 萬,約佔 4%,我相信這裡面有非常高的比例的人,都會使用網路來獲取信息。下一次也會增加幾十萬的首投族,在這四年內也會有更多人從原來的不習慣,變成接受透過網路習得新知。

因此,我也樂觀地相信,在未來的選舉,會有更多人在網路上傳播直覺而且透明的網路訊息,幫助我們做出對自己最好的選擇。


---- 分隔線 ---

以下就談談鞋櫃這幾天的數據好了,也許某些朋友會有興趣。

January 11, 2012

小談 2012 政黨票

20 comments:

直接先講結論

這次選舉你會拿到三張選票:選總統、選立委以及選政黨。政黨票怎麼選,都不影響誰會當上總統,也不會有你家附近誰當上立委的人情債問題,所以你絕對不會得罪你老爸老媽。政黨票你有完全的獨立思考空間。



結論講完了,底下我分幾個小節


A. 為何要關心政黨票
B. 政黨票是什麼
C. 政黨票會有什麼實質影響
D. 政黨票有哪些選擇
E. 我為何花時間寫這些


對許多人而言文章可能過長,趕時間的只要看看 A 以及 D 的政黨大略介紹即可。






A. 為何要關心政黨票


政黨票能夠匯集全國少數人的聲音



現在有投票權的你,身邊已經漸漸有人結婚生子。從學生時代對一些現實問題的個人不滿,進入職場後變成對未來,或是下一代的不安。或許你曾經試著關心那些不安因素,或許更進一步的發出不平之聲。

這時你愈深入了解,愈能夠發現許多問題會歸結到法治面,如果想要改變現狀,要想辦法改變法律。「該不會要去當政客吧?」這樣的難堪結論,也許曾經出現在你的心中。

可是,現在走出你家大門看看外面插的旗子,幾乎都是兩大黨推出的候選人,這些人要嘛是在立法院內跳上桌子或是穿棒球服搏版面,要嘛就是牢不可破的地方勢力,別說無望跟他們競選,就連公開反對他們,自己心中都會有點怕怕的。

許多規則是立法委員訂的,我們一般人除非加入兩大黨努力向上爬,否則根本沒有競爭的本錢,這樣的無奈使得許多人漸漸對政治失去熱情,更精確一點地說,這樣的無力感讓我們對公共事務漸漸失去熱情。

我懂,我們都曾經無奈到很想放棄

但是你一定要記得,現在我們的「算了啦」,影響的不只是我們,還有我們的下一代。這個社會有許多事情,不是我們個人努力加班工作就可以解決的

在年輕人多的地方,聚集改革力量的機會總是多那麼一些些。如果你跟我一樣都不是住在台北高雄這種大都會區,一般來說立委席次就是被地方的大老壟斷。在這種情況下,就算 100 人之中你找到 5 個跟你有相同理念的人。5 個,一點屁用都沒有。

但是,不分區立委的政黨票,給了我們那一絲絲的希望。只要有一個你所認同的政黨,在全國各地聚集那 5% 的人,它就能夠為你所認同的理念發聲。



B. 政黨票是什麼

選出一個你認同它的理念的政黨。這個政黨只要拿到了一定程度的票數,就可以分到立委席次。




94 年的 憲法增修條文第四條,訂出不分區立委的法規,在總統大選的時候你會拿到三張選票
  1. 總統選票:一號蔡英文、二號馬英九、三號宋楚瑜,你認同誰就投給誰
  2. 區域立委選票:在你家附近插滿旗子,突然跳出來說要建設你的家鄉的人,除非你很認真地在立法院網站撈 PDF 檔,否則你根本不知道他做了什麼好事。
  3. 政黨票:本文主角。你對某一個政黨投下一票,它的票數就加一。最後每個政黨再比總數,拿不到 5% 的政黨就被踢掉,剩下的政黨依據得票率來分 34 席的不分區立委。

5% 是一個很可怕的門檻,實質上保障了國民黨與民進黨的利益。看看 2008 年的選舉結果,台聯黨在阿輝伯的加持下拿到了 3.53% 的政黨票,但是其他政黨連 1% 都拿不到,於是第二階段計算的時候就被國民黨與民進黨分光光了。

說得直接一點,我們真的不需要把政黨票毫不思索地投給這兩大黨。他們已經有太多選民以為「哎唷!總統投他,政黨票不投他會不會害他選不上?」。

但是有其它更關心我們的小黨,需要我們多關心他們一點。

November 14, 2011

Gitit - git based wiki

No comments:
最近又換了新的 wiki 系統來做個人筆記,雖然使用了 [pmwiki] 很長一段時間,遇上 [gitit] 之後我還是毅然決然地換過來。只因我發現原本希望 pmwiki + git 能夠做到的事情,在 gitit 上面更完整地做完了。

簡單來說 gitit 非常適合 git 狂熱份子

前些日子因為接案的需求,使用了不少 github 上面的 wiki。github 的 wiki 使用 markdown 的語法,甚至可以把整個 wiki clone 下來,在 local 端寫完東西之後直接 push 上去。這樣的使用情境非常符合我的需求,想說有沒有類似的 open source 工具,果不其然,用 haskell 寫成的 gitit 就擺在那裡。

gitit 有以下的特色是我特別重視的

  • 有搜尋功能,包括中文搜尋
  • 不要有 mysql 之類的 database
  • 不需要 Apache
  • 可以直接用 vim 等工具來編輯,紀錄東西就像寫文字檔一樣簡單
  • 使用 markdown 語法,寫完的文件能夠與其他工具接軌
  • 因此,網頁介面可以直接匯出 epub, odt...之類的檔案
  • 直接使用 git 管理 wiki 內容,寫程式習慣用 git 的人,寫起來毫無窒礙感
  • 由於使用 git 管理純文字檔,因此容易備份、重建


debian 系要安裝 gitit 非常簡單,一行指令就裝完了

$ sudo aptitude install gitit

啟動也非常簡單,只要開一個空目錄,在該目錄下執行指令

$ gitit

就會自動產生需要的檔案,並且啟動一個網頁伺服器。瀏覽器只要打開 http://localhost:5001 就可以存取了。在網頁介面上頭編寫內容之後,記下 comment 並儲存,檔案內容就會透過 git 紀錄在 wikidata 目錄底下。換句話說,只要備份 wikidata 這個目錄就不必擔心筆記會隨著硬碟損壞而消失。



gitit 有些預設的選項我不是很喜歡,譬如說
  • 預設要註冊一個帳號才能編輯 # 我是個人私用,理論上使用者只會有我一個人
  • 檔案上傳限制太小  # 所謂上傳檔案,就是把某個檔案加進 git 裡面
  • 預設版面我不喜歡  # 雖然我的螢幕不小,但我習慣 1024px 的寬度,太寬會讓文字排版變很醜
  • 我不喜歡原來的 logo
  • 預設的 html table 或是 code block 沒有特別的背景或是邊框

總而言之,我自己把我所需要的 config 打包了起來,大致看起來如下圖



使用方法也很簡單

# 產生一個目錄叫 wiki,取出我打包的東西之後在裡面產生一個 branch 叫 mynote
$ mkdir wiki && cd wiki
$ git clone git://github.com/walkingice/gitice.git wikidata
$ git --git-dir=`pwd`/wikidata/.git branch mynote
# 用來備份,別忘了在 myhost.net 上面產生一個 backup.git 的 git 目錄
$ git --git-dir=`pwd`/wikidata.git remote add myhost foo@myhost.net:~/path/to/backup.git
# 以後只要一行指令就可以備份了,放進 crontab 更是備份地神不知鬼不覺
$ git push myhost mynote:master
# 指定 config 檔來執行
$ gitit -f wikidata/gitit/config

必須注意的是,因為我更改了 config 檔,指定 static 與 templates 目錄位在 wikidata/gitit/ 底下,所以執行 gitit 的位置影響著 gitit 尋找 static templates 這兩個目錄。換言之,你要在 wikidata 這個目錄的上層目錄執行 gitit,才會正確找到這兩個目錄。

此外,gitit 還有 plugin 的功能,不過我不懂 haskell,就還沒有試過了。

你如果注意到有個 Category 的分類,其實它更像是 gmail 裡面的 label 功能,只要在某一個 page 的最上方加入

---
categories: Geek Tool
...

上方三個減號,下方三個點,中間補上 categories,這個 page 就會出現於 Geek 與 Tool 兩個分類之中。

Update:

用 Linux 系統的人,當然要把啟動的指令放在 rc 裡面,我在 /etc/init.d 底下新增了一個 launch-gitit
#!/bin/sh

### BEGIN INIT INFO
# Provides:          launch-gitit
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start gitit
# Description:       start gitit by walkingice 
### END INIT INFO

set -e

GITIT=/path/to/your/gitit

case "$1" in
  start)
      cd ${GITIT}
      su walkingice -c "gitit -f wikidata/gitit/config &"
      ;;
  stop)
      killall gitit
      ;;
  *) echo "Usage: $0 {start|stop}" >&2; exit 1 ;;
esac

exit 0

我們就可以用指令啟動或停止 gitit
$ sudo /etc/init.d/lanch-gitit start
$ sudo /etc/init.d/lanch-gitit start

或著設定好,在系統啟動的時候就會自動執行
$ sudo insserv launch-git  # Debian 6 之後不再使用 update-rc.d


Update:

在意效能的人,打開 top 的時候可以看見 gitit 總是佔用的 1% 的 CPU resource,原因是 haskell 的 GC 反覆地在執行,個人使用的 wiki 由於修改量比較小,並不需要這麼頻繁的 GC 來消耗筆電電力。

對此,github 上面有一份說明,執行 gitit 的時候加入 runtime option 把 GC 關掉就好。很不幸地,至少 Debian 系已經把 runtime option 關掉了
gitit -f my.conf +RTS -I0 -RTS
gitit: Most RTS options are disabled. Link with -rtsopts to enable them.

查了一下文件,大體原因是打開 Runtime options 會在執行 CGI 的時候產生一些 security issue。因為我實在是受不了持續浪費 CPU/電力的事情,還是決定重編一次 gitit

準備編譯(Preparing)
$ mkdir /tmp/gitit; cd /tmp/gitit
$ sudo apt-get build-dep gitit # 安裝需要的 dependency packages,這時應該會安裝超肥的 ghc
$ sudo apt-get source gitit
$ cd gitit-0.10.0.1

加入 rtsopts (Adding link options)

平常透過 dpkg-buildflags 把編譯的選項動態加入,但是 gitit 的情況有點不一樣。它用 ghc 編譯,自帶一套編譯的邏輯,所以要先修改 gitit.cabal,找到 Executable gitit 的區塊把 -rtsopts 加入
Executable        gitit
....
  ghc-options:  -Wall -threaded -fno-warn-unused-do-bind -rtsopts

開始編譯

$ dpkg-source --commit  # commit your chages of gitit.cabal
$ dpkg-buildpackages # build deb file
$ sudo aptitude remove ghs # remove the HUUUUUGE ghc packages

接著重新安裝編出來的 deb 檔就行了。另外要注意的是,因為版號大小不同,升級的時候會蓋掉我們自己編譯的版本,只要打開 aptitude 把 gitit 用「=」給鎖起來不讓它自動升級即可。當然手動升級的時候還是可以更新,不過又要重編一次了 :P

現在你的 gitit 可以用 +RTS -I0 - RTS 了,enjoy it

Update:

如果在 Debian 想要用 plugin,記得要安裝 libghc-gitit-dev