2011/12/10

Firewall Port Config

想要新增能通過 firewall 的 port 號碼,在 Mandriva 環境常用 drakconf,在 CentOS 環境,了解詳細的設定方式之餘,也可以用 system-config-securitylevel 來直接設定。在 Ubuntu 環境可用 ufw

2011/12/06

PHP is Object Capable

Of course, PHP is not Object Oriented. Luckily, most software written in PHP does not care much about objects, I guess.

2011/11/26

rsync + ssh on different port

$ cat .ssh/config
Host another.site.IP
    Port 8022
    User marr
    Hostname another.site.com


$ rsync -av --progress --inplace --rsh=ssh another.site.com:my_folder/* my_backup

# and this is for normal cases:
$ rsync -av -e ssh myid@mysite.com:/my_folder/my_file .

2011/11/09

Apache Plone Maintenance

檢查已啟用的 module 清單:

$ ls /etc/apache2/mods-enabled/
alias.conf            authz_host.load  deflate.conf  mime.load         setenvif.load
alias.load            authz_user.load  deflate.load  negotiation.conf  status.conf
auth_basic.load       autoindex.conf   dir.conf      negotiation.load  status.load
authn_file.load       autoindex.load   dir.load      reqtimeout.conf
authz_default.load    cgid.conf        env.load      reqtimeout.load
authz_groupfile.load  cgid.load        mime.conf     setenvif.conf

確認啟用 proxy 不然會遇到錯誤: Invalid command 'ProxyPass', perhaps misspelled or defined by a module not inclu ded in the server configuration

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo a2enmod rewrite
$ sudo vim /etc/apache2/sites-available/www.mysite.com
$ sudo a2ensite www.mysite.com
$ sudo /etc/init.d/apache2 restart

設定內容範例如下:

<VirtualHost *:80>
  ServerName www.mysite.com

  ErrorLog /var/log/apache2/mysite_error.log
  CustomLog /var/log/apache2/mysite_access.log combined
  LogLevel warn

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteLog /var/log/apache2/mysite_rewrite.log
  RewriteLogLevel 5
  RewriteRule ^($|/.*) http://127.0.0.1:6543/VirtualHostBase/http/www.mysite.com:80/mysite/VirtualHostRoot$1 [L,P]
</IfModule>

   ProxyPass / http://localhost:6543/mysite
   ProxyPassReverse / http://localhost:6543/mysite
  <Proxy *>
      Order deny,allow
      Allow from all
  </Proxy>

</VirtualHost>

2011/10/30

CMS Comparison

This is a historical document by marr, Open Source Software Foundry first published on 2006/12/15, last edited on 2008/06/11

我們以 Packt Open Source CMS Award 2006 年的前三名,做為比較對象,並參考 Gnome.Org CMS requirements 的技術要求,整理出合適的比較項目,包括有:核心開發隊員的規模、擴充模組的集散處、開發工具、測試工具、多國語文支援等。

Open Source CMS Comparison Matrix

  Joomla Drupal Plone
Language PHP 4.2 for 1.0.3 PHP 4.3 for 1.5 PHP 4 for 4.5 and earlier PHP 5 for4.6 and 4.7 Python 2.3.5 for 2.1 Python 2.4.2 for 2.5
Core Team Members ~20 ~15 ~42
Extension Extensions Directory Modules Directory Products Directory
IDE Tools PHPelipse Module Builder
Zend Studio *
Eclipse (PyDev)
WingIDE *
Testing Tools TestComplete *
Web Vulnerability Scanner *
FIT for PHP
Selenium module for PHP unittest module in Python PloneSelenium
I18N i18n Package multi-langual modules LinguaPlone
Local Group Joomla Taiwan Drupal Taiwan Python Taiwan
OpenID Support on the way Customer Module v1.1.1 scheduled in 3.0 alpha

簡言之,目前 Joomla 處於將 Unit Testing 或 Selenium 服務納入架構的過渡階段,而 Drupal 已有 Selenium 的模組。另外,以 Python 為基礎的 Plone 可以搭配 UML 工具快速產生架構圖及原始碼。

  • * 符號代表該軟體為版權專有的商業產品。
  • 註: Joomla 官方選用的 TestComplete 及 Web Vulnerability Scanner 分別是 AutomatedQA 及 Acunetix 公司的商業產品。

2011/10/17

Ubuntu Locale

sudo apt-get install update-locale
sudo apt-get install localization-config
sudo update-locale LANG=en_US.UTF-8
完成設定後的內容存在 /etc/default/locale 檔案裡。

Ubuntu Mounts Windows

首先要設定 Windows 檔案分享,成功的話,可以在 Ubuntu Network - Windows network 看到分享出來的目錄,接著再執行 mount 指令,主要步驟如下:

sudo apt-get install smbfs
sudo mkdir /media/sharename
sudo vi /etc/nsswitch.conf
sudo mount -t cifs //netbiosname/sharename /media/sharename
 -o username=winusername,password=winpassword,iocharset=utf8,file_mode=0777,dir_mode=0777
當然,還可以把設定值寫進 /etc/fstab 裡。

2011/07/19

Online FlowChart

試用 http://flowchart.com/ 發現功能豐富,今日 web app 成熟的程度,讓很多事情能在線上完成。
版本 beta 2.4-r23 在匯出 PNG PDF 時,圖案會移位,只好手動抓圖。

2011/07/08

ffmpeg + libmp3lame

works for my Ubuntu 11.04.

sudo apt-get install libavcodec-extra-52
ffmpeg -i myfile.mp4 -acodec libmp3lame -ab 192k myfile.mp3

2011/06/22

User Experience in an OpenSource Fashion

形容 UX 是 Open Source 的頭號問題,並不為過,以 Google 不願意馬上開放 Android 介面成果為例,謠傳原因來自,開放會造成阿貓阿狗的加入,造成產品介面和預期價值的下降,白話地說,Android 相信 Open Source 開發方式有害於 UX。
有反例嗎? Firefox 和 Gnome 似乎證實沒那麼糟。
另外,網頁或 thin client UX 的進展速度較快,甚至進而影響 fat client 的設計。
終究 UX 也可以用 Open Source 方式來搞嗎? 我還不知道答案,但看到 Art will stay Art. 這句時,我笑了。
random read: CodePlex example by Microsoft

2011/06/11

SWFTools

為了安裝 wc.pageturner 需要 SWFTools,在 CentOS 下載 rpm 後再用 yum 安裝:
yum --nogpgcheck install
swftools-0.8.1-1.el5.rf.i386.rpm
libmp3lame0-3.98.4-22.el5.i386.rpm
t1lib-5.1.2-5.i386.rpm
在 Ubuntu 是把 deb http://free.nchc.org.tw/ubuntu/ hardy main universe 加進 /etc/apt/sources.list 這樣較簡單。
實際上傳 PDF 時,日誌檔裡會記錄
INFO wc.pageturner Running command /usr/bin/pdf2swf /tmp/tmp_oIQQW -o /tmp/tmpODfpYG -T 9 -f -t -G
------
INFO wc.pageturner Finished Running Command /usr/bin/pdf2swf /tmp/tmp_oIQQW -o /tmp/tmpODfpYG -T 9 -f -t -G

不過,根據中文字型的測試結果,CentOS 5.4 的 freetype 2.2.1 無法處理 PDF 中文字型,改用 2.3.12 版本能改善。

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>