2011/05/06

Selenium Basic

下載安裝 Sauce Builder 後,就可以在 Firefox 裡,使用這個 IDE 來錄製測試動作,還有匯出成 Python 或自己喜歡的程式碼,結果類似下列內容,可以在 local 執行:
self.selenium = selenium(
"localhost", 4444, "*chrome", "http://google.com/")

想把上述程式碼改在雲端執行,可藉助 OnDemand 服務,並把內容修改成下列這樣:
self.selenium = selenium(
'http://ondemand.saucelabs.com',
80,
"""{
"username": "USERNAME",
"access-key": "ACCESS_KEY",
"os": "Windows 2003",
"browser": "firefox",
"browser-version": "3.",
"name": "This is an example test"
}""",
'http://google.com')

這樣一來,就不必自己跑 Selenium RC 囉。

2011/05/04

plone.dexterity zh_TW translation

# Translations template for plone.dexterity.
# Copyright (C) 2010 Plone foundation
# This file is distributed under the same license as the plone.dexterity
# project.
# marr <marr.tw@gmail.com>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: plone.dexterity 1.0b3\n"
"Report-Msgid-Bugs-To: dexterity-development@googlegroups.com\n"
"POT-Creation-Date: 2010-07-09 15:38+0200\n"
"PO-Revision-Date: 2011-05-04 10:10+0800\n"
"Last-Translator: marr <marr.tw@gmail.com>\n"
"Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.5\n"

#: plone/dexterity/browser/add.py:82
#: plone/dexterity/browser/edit.py:15
msgid "Save"
msgstr "儲存"

#: plone/dexterity/browser/add.py:92
msgid "Item created"
msgstr "項目已新增"

#: plone/dexterity/browser/add.py:94
#: plone/dexterity/browser/edit.py:25
msgid "Cancel"
msgstr "取消"

#: plone/dexterity/browser/add.py:96
msgid "Add New Item operation cancelled"
msgstr "新增項目已取消"

#: plone/dexterity/browser/add.py:112
msgid "Add ${name}"
msgstr "新增 ${name}"

#: plone/dexterity/browser/base.py:14
msgid "Content"
msgstr "內容"

#: plone/dexterity/browser/edit.py:22
msgid "Changes saved"
msgstr "更改已儲存"

#: plone/dexterity/browser/edit.py:27
msgid "Edit cancelled"
msgstr "編輯已取消"

#: plone/dexterity/browser/edit.py:48
msgid "Edit ${name}"
msgstr "編輯 ${name}"

2011/03/25

Quotes of Erik Naggum

蕭永慶為 Erik Naggum 摘要的譯文

"一個程式設計師讀過的程式碼, 應該是他寫過的程式的10倍以上, 才算夠資格的好的程式設計師."

the greatest benefit of free software is, in my mind, not the availability of free software _products_, but the availability of _source code_ for other programmers to read and use, like sheet music, plays, books, etc, are like source code for _their_ respective kinds of production.
在我的觀念裡, 自由軟體最大的好處, 不是供應自由軟體的產品, 而是對其它的程式師供應了原始碼, 讓他們得以閱讀與使用, 就像樂譜, 戲劇, 書等在它們相對映的領域的功能一樣.


free software, to me, means the ability of programmers to form a community within which they can speak the same language, which I hope will be the language of _programming_, not each of the many dialects we use.
自由軟體對我而言, 就是可以讓程式設計師們組個團體, 在這個團體內我們可以用相同的語言溝通, 這裡我說的語言是程式設計本身, 而不是那些我們使用的方言 (譯:指不同的程式語言)

2011/03/23

Sheng Bao: Ask me again in ten years too!

原文在 http://narnia.cs.ttu.edu/drupal/node/44

Quotes of the day:
* 求名當求萬世名,計利當計天下利。
* 軟體是一種奇特的商品,其需要大量的測試人員,這就是 "enough eyeball" 的作用,而 GNU 正做到了這一點。
* 美國人用腦子裡面想出來的東西賺錢,日本人用手裡面作出來的東西賺錢,更窮的國家只能用地裡長出來的東西賺錢。
* 知道何時該合上書本。
* Classes 是否會 dull you mind 取決於你是如何面對課堂。
* Plato is dear to me, but dearer still is truth.
* Science is what we understand well enough to explain to a computer. Art is everything else we do.
* 36歲拿了塗靈獎之後 Knuth 突發奇想,他揚言自己要用20年時間寫一本同 Newton 的 The Mathematical Principle of Natural Philosophy 一樣著名的書。

2011/03/14

Install Ubuntu with ISO

自己電腦常用的硬體分割方式,是分成四個 primary 分割區,前三個是 ext4 最後一個是 swap。第一和第二個分割區,輪流安裝新版 Linux,第三個分割區是使用者資料。把 Ubuntu LiveCD ISO 下載到硬碟後,可以直接使用 ISO 來安裝,不需要燒成開機片,首先要參考 http://www.wikihow.com/Boot-an-Ubuntu-ISO-from-Your-Hard-Drive 或 http://www.panticz.de/MultiBootUSB 說明,把 Grub 設定好,下列是個範例:
sudo vi /etc/grub.d/40_custom
menuentry "Ubuntu Live 11.04 64bit" {
loopback loop /boot/ubuntu-11.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/ubuntu-11.04-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
再執行 sudo update-grub2 讓設定值生效。
以 LiveCD 開機後,在點選桌面的安裝之前,必須先卸除 isodevice 才行,指令要加 -l 參數:sudo umount -l /isodevice。另外 Ubuntu Rescue Remix 是值得參考的工具。 昇級的話,許多檔案需要備份回復,例如 Host Key

2011/01/21

Discussion Log

活動記錄 – 20040711 – 自由軟體鑄造場 by kiang
http://blog.twpug.org/86

比較精彩的是當時的 comment log,原網站已不存在,也沒找到 google 備份,貼在這裡當記錄:
9 Comments:

Blogger autrijus said...
"ps. 該網站發表評論的系統不會還要經過審核吧,這樣好像不太自由...;希望
Movable Type 發表評論應該是自動登的, 你可能需要強制重新載入頁面 (shift
所以大概是多慮了.

11:33 上午

Blogger autrijus said...
"我問的是為什麼OpenFoundry要自行開發專案維護系統而不是像日本一樣跟隨著
系統本地化"
sf.net 是私有軟體系統, 要收授權費, 並且不能重新散播,

所以祗能說是 "VA 的腳步", 不是 "世界的腳步".
當時似乎也有考慮過直接用 GForge, 將 OpenFoundry 想要的功能直接用 PHP
不過好像沒有人接下來做. 如果你願意, 或找得到人做這個, 我個人倒是蠻有興
"因為這樣子一來就可以有更多的人力放在自由軟體的推廣上"
即使是付授權費建置了 sourceforge.net.tw, 也要花相等的
人力做後續建置和維護... 這似乎是不太省得下來的人力, 也
不容易直接 "調配" 去做推廣呢. :-)
/Autrijus/

11:44 上午

Blogger kiang said...
Movable Type 發表評論應該是自動登的, 你可能需要強制重新載入頁面 (shift
所以大概是多慮了.
---
恩,剛發表完重新讀取頁面還是看不到,可能是這個原因吧,sorry
---
sf.net 是私有軟體系統, 要收授權費, 並且不能重新散播,所以祗能說是 "VA
---
恩,可能我對於它的授權基礎沒有看的很仔細吧~^^
---
當時似乎也有考慮過直接用 GForge, 將 OpenFoundry 想要的功能直接用 PHP

不過好像沒有人接下來做. 如果你願意, 或找得到人做這個, 我個人倒是蠻有興
---
這個網站: http://forge.novell.com 也有著類似的系統,只是不知道跟 GFor
比起來哪個完整;OpenFoundry需要什麼樣的特殊功能?必要性真的有那麼高嗎
---
即使是付授權費建置了 sourceforge.net.tw, 也要花相等的人力做後續建置和
這似乎是不太省得下來的人力, 也不容易直接 "調配" 去做推廣呢. :-)
---
但是系統可以及早進入穩定階段,許多朋友也不需要重複去熟悉新的系統;與其
使用一個經過歷鍊的系統將它本地化(這個應該沒那麼難吧?),然後將焦點放在
換個說法,維護的人好找,開發人員數量很少(特別是台灣),調配的方向應該會
---

12:09 下午

Blogger autrijus said...
"這個網站: http://forge.novell.com 也有著類似的系統,只是不知道跟 GFo
比起來哪個完整;OpenFoundry需要什麼樣的特殊功能?必要性真的有那麼高嗎
NovellForge 的程式碼直到去年年底纔公開, 而 OpenFoundry 當時已經進行一
並且也沒有第三方架起 NovellForge 的紀錄.
OpenFoundry 需要的功能, 不過就是合理的中文界面, Wiki,
以及最近的授權精靈等而已. GForge 當然也可以加上這些功能,
問題是有沒有人去做...
"不如使用一個經過歷鍊的系統將它本地化(這個應該沒那麼難吧?),然後將焦
問題是根本就沒有經過歷練的自由軟體系統可以用... :-/
/Autrijus/

7:24 上午

Blogger candyz said...
1.如果有可用且實用又沒有授權問題的系統時,另外又有人願意去維護,那為何不
2.我想 autrijus 要表達的,就是,開發 OpenFoundry
時,並沒有合適的系統可以拿來用,否則,也不必重覆造輪子了
3.而現在,既然 OpenFoundry
都已經弄好了,再來吵這些我覺得沒什麼意義,還不如把心思放在開發中文軟體上
必花太多時間在研究這個系統上,反而能把時間放在開發上,這樣比較重要,因此,
該做的,反而是應該要盡量把介面做得更簡單更容易上手,且說明文件能更詳細一
上了

8:16 上午

Blogger kiang said...
http://dev.xoops.org/
這是novell forge的第三方安裝者,透過GOOGLE搜尋關鍵字"inurl:modules/xfm

我想無論是使用GFORGE或是NOVELL
FORGE,現階段而言我覺得都比繼續開發OpenFoundry要好,因為可以借助其他國
oundry目前只有台灣人在用...
獨立維護一個系統會需要比較多的人力,OpenFoundry不是不好,如果只是單純
量,我還是強烈建議停止OpenFoundry的開發,將人力投入到其他系統的引進與

11:55 上午

Blogger autrijus said...
"http://dev.xoops.org/
這是novell
forge的第三方安裝者,透過GOOGLE搜尋關鍵字"inurl:modules/xfmod"應該可以
抱歉, 是我錯了. 網頁上沒有出現 NovellForge 字樣,
所以我無從找起...
"我想無論是使用GFORGE或是NOVELL
FORGE,現階段而言我覺得都比繼續開發OpenFoundry要好,因為可以借助其他國
oundry目前只有台灣人在用..."
這倒不是真的. OpenFoundry 的各組成元件: RT, Kwiki,
Sympa, SVK 等等, 都有不少國際上的使用者和開發者, 而
OpenFoundry 的 UI 祗是將它們整合呈現的界面而已, 所以
我們也有借助其他國家的開發者. 事實上, 我正寄住在其中一位
美國開發者的家裡, 和當地的三、四個人一起設計下一代的

OpenFoundry 界面與流程引擎.
至於實際部署 OpenFoundry 的人士, 則是限於奇怪的法令
問題, 直到這個月我們纔能釋出成果到 CPAN 上, 所以之前
想裝的人也無從裝起. 不過, 透過在台北、德國、美國的各場
會議, 已經有不少人提出興趣, 想要安裝看看. 所以現在預言
說這祗是台灣本地的專案, 似乎還早了點.
"獨立維護一個系統會需要比較多的人力,OpenFoundry不是不好,如果只是單純
考量,我還是強烈建議停止OpenFoundry的開發,將人力投入到其他系統的引進
其實我蠻同意這個看法的, 這也就是為什麼我儘量不寫程式,
而是整合既有的系統成一個 OpenFoundry 界面的原因.
不過, 如果你願意投入 NovellForge 中文化、文件撰寫和
定製開發, 或是找到其他願意投入的人力, 那也可能是更好的
做法 -- 請將你的計劃寫到 contact@openfoundry.org
或是寄 email 給我討論, 都很歡迎.
要是沒有願意做事的人, 根本不用談 "投入人力" 這回事.
把沒有意願的人派任去跟國際專案社群合作, 成功的機會
更是渺茫.
Thanks,
/Autrijus/

10:47 下午

Blogger jihuang said...
http://www.104.com.tw/cfdocs/2000/job2000/JOB.cfm?jobsource=104_
hp&jobnum=1257316&invoice=4142327000
jihuang

11:50 下午

Blogger kiang said...
謝謝jihuang提供的資訊,我下個月才要換新工作呢~^^
新工作: http://www.ossii.com.tw
我所提到的部份也很有可能是未來的工作項目之一,但我不會希望採用OpenFoun
望跟多些國家的運作模式達到一致,有利於未來資訊的交流。
我目前下比較多功夫的地方是egroupware的中文化,也有其他中文化的作品可以
http://www.osobiz.com/xoops/ );進一步的計畫就先看看新的飯碗能不能抱緊

12:26 上午

2011/01/14

Embedded Playing Windows Media

想在網站以嵌入方式播放 Window Media 的話,先要註冊 audio/x-ms-wma 格式,再安裝 embedded playback 程式。例如 vPIP 就是一套支援 Window Media 的播放程式,下列是範例程式碼片段,值得留意的是,要特別提供 image 或 text 來提示使用者,以便點取後再存取要播放的檔案。
<div class="hvlog">
<a href="http://mysite.com/media/niceday.wmv"
rel="enclosure" title="My Movie!"
class="hVlogTarget" type="video/x-ms-wmv"
onclick="vPIPPlay(this, 'width=320, height=260, \
autostart=true, controller=true, \
name=MyMovie, revert=true'); return false;">
<img src="http://mysite.com/media/myMovie.jpg" />
</a>
</div>

2010/10/04

Software Localization and Content Exchangeability

實際想問的是:如何改善軟體操作方式因地制宜,同時,內容交換和呈現方式盡可能一致。
這問題的本質,包含理論或標準層面的議題,也包含實務或不同系統實作差異的議題,似乎大到難以撼動,但是,擾人的程度,不禁又讓人想問:可能集合眾人之智來改善它嗎?
如果覺得上述問題過於空泛,白話地舉例來說,某個中文使用者,發現某個不錯的 open source 系統,想要引進推廣,先從介面訊息翻譯做起,這通常並不太難,直到想要整批資料匯入系統時,就常發現資料會出現亂碼、遺失、根本不能執行等狀況,常見來自於 Windows 與 Linux 之間的資料交換。
再以 Windows 系統 CSV 資料整批上傳為例,檔案是否以 UTF8 編碼存檔,又是否包含 BOM 字元,都是要確認的細節。網路上找得到零散說明,但找得到一份穩定的知識來源嗎? 我們需要這樣的來源嗎?

2010/05/04

Breadcrumb Navigation

breadcrumb 稱為「麵包屑」,最常見的型式是利用一行文字,顯示目前網頁在網站體系裡的位置。它的目的是改善操作親和度,以往常和網站地圖同被視為是第二線的工具,第一線的導覽工具,通常是指主選單和搜尋方框。不過,麵包屑的重要性日益提昇,原因之一是 Windows Vista 使用這項技巧來提示作業系統的目錄位置,使用者習慣之後,期待網頁上也看到這樣熟悉的介面。另外,到處都看得到 AJAX 的情況下,當然也有 jBreadCrumb 囉。

2010/04/09

Website Without www. In Front

常見的網址會以 www.some.com 形式,也就是 www 開頭,但這只是個慣例,依照需要也可以選用其他名稱,或是直接用 some.com 做為網址。

一般情況下,用 www.some.com 和 some.com 兩種網址都能存取同一份網頁,設定方式是先在 DNS entry 裡讓 www.come.com 和 some.com 都有 type A record,指向相同 IP,再到設定檔裡加上 alias 的設定值,以 Apache 為例,就是 ServerAlias example.com 的內容。

2010/02/26

Apache Proxy Configuration

把 plone 換主機執行,搬完系統及資料庫後,以為就會成功,想不到 apache + plone 的結果,一直在 /var/log/httpd/error_log 檔案裡出現 client denied by server configuration 訊息,由於不同主機的 apache 版本小有不同,先懷疑設定檔內容有所不同,最後才由 http://www.cps-project.org/static/doc/howto-virtual_hosts.html 發現是 /etc/httpd/modules.d/30_mod_proxy.conf 要修改。

2010/02/06

Relational Database Doomed?

Tony Bain 表示,在擴充彈性高度要求的環境下,傳統關連式資料庫之外的方案,顯得越來越重要。文件導向式的資料,或是物件導向式的應用程式,最好使用 key/value 型式來處理,這類場合如果使用關連式資料結構,反而容易造成限制。

老兵未死,只是凋零。此乃關連式資料庫的寫照。

2010/01/24

Javascript to Grab Last Part of the document.url

stackoverflow.com 有範例,例如:

var lastPart = window.location.href.split("/").pop();

但遇到 http://example.com/test/action?foo=bar 之類的網址,想避免抓成 action?foo=bar 的結果,就該使用 location.pathname.split('/').pop(); 的方式。

2009/09/19

Ticket Processing

開發者常用 tracker 來管理 issue ticket,包括 bug report, patch, feature requirement 等,處理 ticket 的過程中,需要視流程來指定 ticket 狀態,例如 fixed, closed, reopened 之類。以 fixed 為例,有時候我們不只關心問題是否被處理,還在意 patch 或修訂的片段是否已被納入新版的程式碼裡,此時該使用 fixed and released 這類的狀態才夠明顯,同時,最好也主動確認新增的程式碼是否沒有著作權問題。可參考 http://n2.nabble.com/Re-patches-in-Trac-tp3672728p3672853.html 的實例。

2009/07/24

Resume SCP transferring

Tip from http://www.linuxquestions.org/questions/linux-networking-3/scp-resume-aborted-download-290836

If the following command aborted,
$ scp file_to_transfer user@remotehost:/path/remote_file

then use rsync to resume:
$ rsync --partial file_to_transfer user@remotehost:/path/remote_file

And
$ export RSYNC_RSH=ssh
to use ssh as the transport layer.

2009/05/07

Version Control

平常只用 subversion 的基本功能,還沒遇過重度使用者的問題,諸如 merge 的不便,離線時的處理。另外,名人或知名專案的加持,也會影響跟牌的人數吧。

2009/03/07

sudo : Basic

管理員建立一般帳號後,要考慮為哪些帳號設定 sudo 權限。設定方式是利用 visudo 指令來編輯 /etc/sudoers 檔案,請注意,這個檔案不能直接用一般的 vi 指令來編輯。

sudoers 檔案的格式內容,依序是「帳號」「可執行的主機」「可使用的身份」「可使用的指令」,最簡單的設定如下:
  root    ALL=(ALL) ALL
上述的設定結果,是指 root 可以「在所有主機上」「以所有身份」「執行所有指令」,例如 sudo -u marr ls -l ~marr 是指「以 marr 身份」「執行 ls -l ~marr 指令」。

預設情況下 sudo 會詢問原帳號的密碼,確認後才能成功執行指令,如果想要取消詢問密碼的動作,可用 NOPASSWD 選項:
  marr    ALL=(ALL) NOPASSWD: ALL
更詳細的設定方式,可參考 visudo 與 sudoers 的線上手冊。

2008/08/19

DaVinci

da Vinci 就是達文西,不過,我不是要介紹這位義大利天才,而是德州儀器在嵌入式領域的產品
處理器的工作大抵可分成兩類,一是週邊或網路存取、使用者介面的控制工作,二是影音資料的壓縮解壓縮工作。由於多媒體嵌入式產品,同時要因應系統控制與影音資料的雙重工作,德儀將兩種特性的處理器加以整合,納入週邊支援,改善處理效能,並以 DaVinci Technology 稱之,它包含 DSP 晶片、軟體、開發工具、技術支援等,開發工具以 MontaVista Linux 著名。
OMAP 則是另一系列的類似產品,德儀表示,希望兩者在品牌知名度有所區隔,當提到手機時,是直接聯想到 OMAP,而提及視訊時,會直接選擇 DaVinci。

2008/04/17

update urpmi database

使用 Mandriva Linux 的 urpmi 遇到 Installation failed, some files are missing: ... You may want to update your urpmi database 可執行 urpmi.update -a 完成更新後應該就可以了。