March 11th, 2009 — GNU/Linux
把 PostgreSQL backup/restore 會用到的 command 以及參考資料作個整理:
環境建制 (安裝):
$ sudo apt-get install apache2 php5 libapache2-mod-php5 libapache2-mod-auth-pgsql php5-pgsql phppgadmin postgresql-8.3
切換成 postgres 的身份執行:
$ sudo -u postgres psql template1
修改 postgres 的密碼:
template1=# alter user postgres with password ‘PASSWORD’;
建立 pg_root 使用者 (平日存取用途):
template1=# create user pg_root with password ‘PASSWORD’ createuser;
全伺服器備份:
$ pg_dumpall -U pg_root > dump-all.sql
$ pg_dumpall -U postgres > dump-all.sql
使用 postgres 登入之後,還原全伺服器:
$ psql -U postgres < dump-all.sql
單一備份資料庫:
$ pg_dump cbeta -U pg_root > cbeta-dump.sql
$ pg_dump cbeta -U postgres > cbeta-dump.sql
使用 postgres 登入之後,單一資料庫還原:
$ psql -d cbeta -U postgres < cbeta-dump.sql
在 postgres 帳戶家目錄建立 .pgpass
$ cat > .pgpass
localhost:5432:database:username:password
[Ctrl+D]
$ chmod 600 .pgpass
使用 postgres 使用者於 Crontab 中自動備份資料庫:
# vi /etc/crontab
sudo -u postgres pg_dump cbeta > cbeta-dump.sql
sudo -u postgres pg_dumpall > dump-all.sql
參考資源:
February 25th, 2009 — GNU/Linux, Plone/Python
在先前一篇 Plone Hosting:One-Click Install with Buildout (Tests) 所展示的方法是利用 buildout 方式來自動建立多個 Plone Site,但這會產生 port 數量的問題。
因此這次的改寫,是將它改成在一個 Zope Instance 之下,自動建立許多個 Plone Site,並且處理好各別 Plone Site 的 Admin 權限問題。換句話說,每一個自動建立的 Plone Site 能有自己獨立的 Admin 權限,而這權限不會擴展到上層的 Zope ZMI 之中。
mkplone.py
Need Three arguments:<sitename><admin><password>
$ bin/instance run ./mkplone.py Project1 Yenjinc 12345
#!/usr/bin/env python
import sys
import os
from AccessControl.SecurityManagement import \
newSecurityManager, noSecurityManager
from Products.CMFCore.utils import getToolByName
from zope.app.component.hooks import setSite
from Testing.makerequest import makerequest
import transaction
# site:admin:pwd
arguments = sys.argv[1:]
pname = arguments[0]
myname = arguments[1]
rpwd = arguments[2]
# ZMI Admin log in
app = makerequest(app)
acl_users = app.acl_users
admin_username='admin'
user = acl_users.getUser(admin_username)
user = user.__of__(acl_users)
newSecurityManager(None, user)
# Add New Plone-site
pid = pname
factory = app.manage_addProduct['CMFPlone']
factory.addPloneSite(pid, title=’Portal’)
# Add Manager
site_id = pid
portal = getattr(app,site_id)
setSite(portal)
mtool = getToolByName(portal, 'portal_membership')
regtool = getToolByName(portal, 'portal_registration')
regtool.addMember(myname, rpwd, ['Manager'])
# Log out and commit
transaction.commit()
noSecurityManager()
app._p_jar.sync()
print "Finished adding Plone site"
最後利用 Plone+Apache+mod_rewrite 的方式,僅針對各別目錄 rewrite 即可,就能完成一個初階的 Plone Hosting 構想。
完成這隻程式主要參考:
February 23rd, 2009 — GNU/Linux, Plone/Python
在安裝好 Plone Unified Installer 之後,可以利用 paster 工具來建立 plone buildout 目錄,在這 buildout 目錄底下,除了視作為一個 Plone 開發環境之外,也可將這個 buildout 當作上線的 Plone-Site 使用。
Unified Installer 的安裝介紹可參考:Installing Plone 3 with the Unified Installer。下載完檔案後,打開 README.txt 了解如何安裝:
To install Plone 3.2.1 in a stand-alone (single Zope instance) configuration:
* cd to the installer directory and issue the following command:
>> sudo ./install.sh standalone
To install Plone 3.2.1 in a ZEO Cluster (ZEO server, 2 clients) configuration:
* cd to the installer directory and issue the following command:
>> sudo ./install.sh zeo
安裝完成後,即可使用 buildout 來建置 Plone 系統,事前可參考 Working with buildout 這份文件。更完整的教學可以參考 Managing projects with Buildout。
以下簡略將安裝步驟整理:
安裝 unified-installer
$ sudo ./install.sh standalone
設定 PATH
$ export PATH="/opt/Plone-3.1/Python-2.4/bin:$PATH"
$ vi .profile; which python ; python -v
更新 ZopeSkel
$ sudo easy_install -U ZopeSkel
$ sudo paster create --list-templates
設定專案目錄
$ paster create -t plone3_buildout MyBuildout
設定起始環境
$ cd MyBuildout ; python bootstrap.py
下載與安裝
$ bin/buildout
啟動 Plone
$ cd ~/MyBuildout
$ bin/instance start | fg
修改與更新
$ bin/buildout -No
以上是利用 buildout 建立 Plone-Site 的範例。
接下來要展示 Plone One-Click Install with Buildout 的測試範例,用來模擬 Plone Hosting 可能的概況。使用者可透過一個互動介面來輸入 Project Name,接著系統將自動產生一個 Plone-Site 提供給這個 Project 使用。
使用 shell scripts 將 buildout 過程自動化,並額外執行 install.py 來修改 buildout.cfg 的內容,主要目的是產生 random password 以及 port number。最後再執行 siteAutoInstall.py 自動產生 Plone-Site。
Shell Scripts 長像這樣:
#!/bin/bash
read -p "Please Insert Project Name:" pname
paster create -t plone3_buildout --no-interactive $pname
cd $pname && python bootstrap.py
cp buildout.cfg buildout.cfg.ori
cp buildout.cfg buildout.cfg.tmp
python ../install.py
bin/buildout
bin/instance run ../siteAutoInstall.py $pname admin
bin/instance start
port=`cat port.txt`
pwd=`cat pwd.txt`
echo -e "已完成安裝!"
echo -e "Plone-Site: http://localhost:$port/$pname"
echo -e "Password: $pwd (登入後請立即更改密碼)"
install.py 用途是修改 buildout.cfg 的 admin pwd 跟 port,主要使用的 function 如 Python random password 及 Python search-and-replace string in files,整個 scripts 會長得像這樣:
>>>from random import Random
>>>import string
>>>from glob import *
>>>import re
>>>
>>>PWD = ''.join( Random().sample(string.letters+string.digits, 12) )
>>>f=open('pwd.txt', 'w')
>>>f.write(PWD)
>>>f.close
>>>
>>>f=open('../port-num.txt', 'r')
>>>old_num=f.read()
>>>f.close()
>>>tmp_num=int(old_num)
>>>tmp_num2=tmp_num+1
>>>new_num=str(tmp_num2)
>>>f=open('../port-num.txt', 'w')
>>>f.write(new_num)
>>>f.close
>>>
>>>f=open('port.txt', 'w')
>>>f.write(new_num)
>>>f.close
>>>
>>>fileList = glob('buildout.cfg.ori')
>>>pattern = re.compile('admin:', re.IGNORECASE)
>>>replace = "admin:"+PWD
>>>cfg = open('buildout.cfg.tmp', 'wU')
>>>for filename in fileList:
>>> for line in file(filename):
>>> print >>cfg,pattern.sub(replace, line),
>>>cfg.close()
>>>
>>>fileList2 = glob('buildout.cfg.tmp')
>>>pattern2 = re.compile('8080', re.IGNORECASE)
>>>replace2 = new_num
>>>cfg2 = open('buildout.cfg', 'wU')
>>>for filename in fileList2:
>>> for line in file(filename):
>>> print >>cfg2,pattern2.sub(replace2, line),
>>>cfg2.close()
最後一個執行的 Scripts 是 siteAutoInstall.py,這個檔案用途是自動化建立一個 Plone-Site(with NuPlone Skin)。如果僅是純粹產生 Default Plone-Site 的話,可以執行:
>>>from sys import exit
>>>import transaction
>>>from AccessControl.SecurityManagement import \
>>> newSecurityManager, noSecurityManager
>>>from Testing.makerequest import makerequest
>>>
>>>app = makerequest(app)
>>>admin_username='admin'
>>>
>>>oids = app.objectIds()
>>>pid = 'Plone'
>>>if pid in oids:
>>> print "A Plone site already exists"
>>> exit(1)
>>>
>>>acl_users = app.acl_users
>>>user = acl_users.getUser(admin_username)
>>>if user:
>>> user = user.__of__(acl_users)
>>> newSecurityManager(None, user)
>>> #print "Retrieved the admin user"
>>>else:
>>> print "Retrieving admin user failed"
>>> exit(1)
>>>
>>>factory = app.manage_addProduct['CMFPlone']
>>>factory.addPloneSite(pid, title=’Portal’)
>>>print “Added Plone”
>>>
>>>transaction.commit()
>>>noSecurityManager()
>>>
>>>print “Finished adding Plone site”
最後參照 Running Plone and Zope behind an Apache 2 web server 來設定 mod_rewrite,把新建立的 buildout Plone 位址對應到 ex: http://localhost/CMS or http://localhost/project ..etc。
目前這些測試,是在 Shell 底下執行,另外必須研究如何將這互動介面產生到 Web Page 或者是 Plone 頁面上,並且在最後執行成功時,自動 Email 給註冊者相關網址及帳號資訊等 (搭配 mail server)。
以上是直覺化的使用 buildout 建立多個 Plone-Site,每個專案網站擁有一個自己的 buildout 目錄。但這種方式在處理 port 數量以及 Plone+mod_rewrite 時會有問題 (因為要對應許多 port),相對的這些 port 也會造成更多的安全疑慮問題。
因此另一種較好的方法是,研究 siteAutoInstall.py 程式的運作原理,另外撰寫自動化 scripts,並處理好各別 Plone-Site 的 Admin 權限問題後,利用 mod_rewrite 的方式,僅針對各別目錄 rewrite 即可,就能完成一個初階的 Plone Hosting 構想。
Google 上也有類似的 Plone Hosting 構想 (Easier Plone Hosting: Some Ideas),但未見其實作的內容。若 Plone Hosting 的考量需像 http://objectis.org/ 這樣的完整時,需考量及面臨的技術問題就更具規模了。
February 17th, 2009 — Plone/Python
用 bin/buildout 建立環境之後,接著需要進入到 ZMI 來建立 Plone-Site。這個動作可以將它自動化。下面這個 Scripts 從 marr’s weblog 來的,就是用來處理這樣的事情。另外也在 Google 上找到類似這樣的 example:plone-scripts/siteAutoInstall.py。Python 在 Plone/Zope 層面的技術及用法,很值得在深入研究。
>>>from sys import exit
>>>import transaction
>>>from AccessControl.SecurityManagement import \
>>> newSecurityManager, noSecurityManager
>>>from Testing.makerequest import makerequest
>>>app = makerequest(app)
>>>admin_username='admin'
>>>oids = app.objectIds()
>>>pid = 'Plone'
>>>if pid in oids:
>>> print "A Plone site already exists"
>>> exit(1)
>>>acl_users = app.acl_users
>>>user = acl_users.getUser(admin_username)
>>>if user:
>>> user = user.__of__(acl_users)
>>> newSecurityManager(None, user)
>>> #print "Retrieved the admin user"
>>>else:
>>> print "Retrieving admin user failed"
>>> exit(1)
>>>factory = app.manage_addProduct['CMFPlone']
>>>factory.addPloneSite(pid, title=’Portal’)
>>>print “Added Plone”
>>>transaction.commit()
>>>noSecurityManager()
>>>print "Finished adding Plone site"
February 17th, 2009 — Plone/Python
近日在寫一個 scripts,想以 Python 來做到 Shell scripts 或 Sed 下,常用來搜尋檔案內特定文字並取代的功能。透過好用的 Google,還是有找到一些實用的 example。
這是一個修改過的範例:
>>>from glob import *
>>>import re
>>>fileList = glob('buildout.cfg.tmp')
>>>pattern = re.compile('admin:', re.IGNORECASE)
>>>replace = "admin:NewPWD"
>>>cfg = open('buildout.cfg', 'wU')
>>>for filename in fileList:
>>> for line in file(filename):
>>> print >>cfg,pattern.sub(replace, line),
>>>cfg.close()
改寫這個 example 的用途是,將 buildout.cfg.tmp 裡的 admin: 字串改成 admin:NewPWD,最後的取代結果存入到 buildout.cfg 內。
February 17th, 2009 — Plone/Python
那隻厲害的咕狗,我只有餵它吃 這隻骨頭,它就幫我帶來了這個東東:
Python 2.4.5 (#1, Nov 6 2008, 18:04:30)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from random import Random
>>> import string
>>> PWD = ‘’.join( Random().sample(string.letters+string.digits, 12) )
>>> PWD
‘35lV71NJ6BxL’
>>> f=open(’/tmp/r_pwd.txt’, ‘w’)
>>> f.write(PWD)
>>> f.close
<built-in method close of file object at 0×1999f8>
February 16th, 2009 — Plone/Python
昨日將 Linux 主機上的 Data.fs 搬移到 Windows 上還原,在 Data.fs 移轉之後,Windows 這端出現了 Translation Service broken 的問題,也就是說幾乎所有的 PO Path 路徑名稱都吃到原本 Data.fs 的路徑。在 Error Log 中,大致上會這樣描述:
.... (略)
------
2009-02-15T22:48:14 WARNING PlacelessTranslationService Message Catalog has errors
PloneTranslations.i18n-plonelanguagetool-zh-tw.po
------
2009-02-15T22:48:14 WARNING PlacelessTranslationService Message Catalog has errors
PloneTranslations.i18n-plonelanguagetool-zh-tw.po
------
... (略)
因為 PO檔的 Path 跑掉了 (吃到原本的 Data.fs 上的路徑),所以 translation 是壞掉的。如果這個時候就放棄了,那就損失大了。因為 Google 之後才發現,這個問題是『正常』的...
使用這樣的關鍵字:”Placeless Translation Service Data.fs” 搜尋到這篇 Re: Moving troubles,底下的描述正說明了這個問題的解法:
You need to copy both the Data.fs and all your custom products.
Normally the paths are not a problem., But for some reason the placeless translation service stores the path to the translation files. So on the first reboot it cannot find them, and translation is broken.
Just restart the server once more. That will make the translationservice load them from the correct location.
也就是說,第一次會痛是正常了,接著重新啟動 Zope/Plone 之後,就會順暢了。
February 13th, 2009 — Plone/Python
Products.Maps 2.0. A simple, easy to use Plone integration with Google Maps by Jarn AS. 修改 buildout.cfg 檔案,表述將安裝 Products.Maps eggs:
eggs =
Products.Maps
接著執行 bin/build (第一次建立) 或 bin/buildout -No (更新)。安裝完成後,就可以在 Plone 裡新增一個 GoogleMap Location 的 Content Type。
這裡要示範將 Products.Maps 新增的 Content Type 名稱 (Location) 做額外的 i18n:translate 的設定。因預設它的 Location 將生硬的翻為 “位置”,若我們需要將 Products.Maps 應用在服務客戶的需求上時,這個名稱是必須經過客製修改。
第一步驟,是找到 eggs/Products.Maps-2.0-py2.4.egg/Products/Maps/profiles/default/types/GeoLocation.xml。在 title: Location 的描述裡新增 i18n:translate:
$ vi eggs/Products.Maps-2.0-py2.4.egg/Products/Maps/profiles/default/types/GeoLocation.xml
<property name="title" i18n:translate="">Location</property>
接著將 GeoLocation.xml 複製(或 Link) 到 parts/plone/CMFPlone/profiles/default/types/ 裡:
$ ln eggs/Products.Maps-2.0-py2.4.egg/Products/Maps/profiles/default/types/GeoLocation.xml parts/plone/CMFPlone/profiles/default/types/GeoLocation.xml
再來修改 plone-zh-tw.po 檔 (./parts/plone/PloneTranslations/i18n/plone-zh-tw.po) 加入 msgid 及 msgstr 的描述:
$ vi parts/plone/PloneTranslations/i18n/plone-zh-tw.po
#. Default: "Location"
#: CMFPlone/profiles/default/types/GeoLocation.xml:5
msgid "Location"
msgstr "公司店家資訊"
最後在 Plone 的 “網站設定” 裡將 Products.Maps reinstall,這樣我們客製修改過的 i18n:translate 就會立即生效。Location 的 Content Type 名稱也會改成我們所定義的內容,例如:

February 12th, 2009 — Plone/Python
預設 Plone 的 Registration Form 會長像這個樣子:

如果有修改的需求,則需找到 /Plone/portal_skins/plone_login/join_form 來修改裡面的樣式。
這一個示範例子,是將預設的 “寄送密碼 Checkbox” 拿掉,取而代之的是我們想自己提供的簡單文字敘述。於是打開 join_form 檔案來修改,找到下面這一塊敘述:
<div class="field"
tal:condition="not: allowEnterPassword"
tal:define="mail_me request/mail_me|nothing">
.
.
</div>
將預設的 Password Checkbox:
<input type="checkbox"
class="noborder"
name="mail_me"
size="30"
id="cb_mailme"
tal:attributes="checked python:test(mail_me, 'checked', None);"
/>
<label for="cb_mailme" i18n:translate="label_mail_password">Send a mail with the password</label>
改為我們想要的內容:
<label for="cb_mailme">若是廠商會員身份,請額外寄信通知管理員,信件內含您的全名和名稱。</label>
儲存之後,新的註冊頁面就會長得像這個樣子:

February 12th, 2009 — Plone/Python
在 Plone 的 Documents view 底下預設會有兩個 documents_actions Link,分別是 Sendto 及 Print 等。
在 CMF Action at /Plone/portal_actions/document_actions/sendto 的 URL (Expression) 可以透過 string:$object_url/sendto_form 來改連結的位址。但如果要讓新連結開啟於新的視窗,就必須找到 document_actions.pt 這個檔案來修改,並加入 HTML 中 target=_blank 的語法即可。
可以利用 grep -r “document_actions” 的指令來找到 Plone Buildout 目錄裡所有包含相關字串的檔案。
在 ./eggs/plone.app.layout-1.1.5-py2.4.egg/plone/app/layout/viewlets/document_actions.pt 這個檔案可以找到定義 documents_actions Link 的方式。
修改如下:
<a href=""
tal:attributes="href daction/url;
title daction/description"
tal:content="daction/title"
target="_blank">
</a>
這樣就完成了。
February 4th, 2009 — Plone/Python
Firebug 是一個好用的工具,如果在這之前沒接觸過的話,可參考 Google 找到的介紹 來認識這個 Firefox Add-ons。我在這裡使用 Firebug 來找 Plone 網頁畫面中,某些特定區域所定義的 CSS 檔案位置及行數。這對於 CSS 的調整有很大的幫助。
安裝 Firebug 之後,點選 Firefox 瀏覽器最右下方的 “小蟲” 後,就可以開始觀察 “滑鼠點選區域中” 的 HTML 內容以及 CSS 樣式。執行的畫面會像是下圖這樣:

利用這個工具,可以找到 Plone 目錄選單的 CSS 樣式定義檔案,修改內容以達成客製化樣式。例如:目錄選單的樣式定義在 public.css 這個檔案。因此進入到 /portal_skins/plone_styles/public.css 來修改檔案。下面的例子是將目錄字體設定為 “標楷體”,大小設為 12pt。


以下是兩個修改的例子:
若要修改左邊 Portlet 選單的標題,則需要修改 portlets.css,因此進入到 /portal_skins/plone_styles/portlets.css 來改檔案。將字體設為標楷體,大小設為 12pt。


若要修改 Document 的標題 (Header),則需要修改 base.css,因此進入到 /portal_skins/plone_styles/base.css 來改檔案。將 H1 字體設為標楷體,大小設為 200%(預設是 160%)。


除了上面的例子之外,這邊也還有一份文件可以參考:
http://plone.org/documentation/tutorial/creating-plone-themes/toolchain
January 7th, 2009 — GNU/Linux
If you had the same issue in Ubuntu8.10, you could found the solution included in the “8.10 Release Notes“.
Atheros ath5k wireless driver not enabled by default
The version of the ath5k driver for Atheros wireless devices included in Linux 2.6.27 interferes with the use of the madwifi driver for some wireless devices and as a result has been disabled by default. Many Atheros chipsets will work correctly with the madwifi driver, but some newer chipsets may not, and the madwifi driver may not work with WPA authentication. If you have an Atheros device that does not work with madwifi, you will want to install the linux-backports-modules-intrepid-generic package, which includes an updated version of the ath5k driver. While not installed by default, this linux-backports-modules-intrepid-generic package is included on the Ubuntu 8.10 CD and DVD images for ease of installation.
Wireless doesn’t work after suspend with ath_pci driver
Wireless devices that use the ath_pci kernel driver, such as the Atheros AR5212 wireless card, will be unable to connect to the network after using suspend and resume. To work around this issue, users can create a file /etc/pm/config.d/madwifi containing the single line:
SUSPEND_MODULES=ath_pci
This will cause the module to be unloaded before suspend and reloaded on resume.
December 22nd, 2008 — Plone/Python
延續先前 How to manage portlets in Plone 3 的內容,這次繼續把 Creating static text portlets in Plone 3.0 的部份完成。
這篇文章 Creating static text portlets in Plone 3.0 介紹如何建立一個 “讓我們自行填寫內容” 的 portlets。這次採用 buildout 的方式很快就完成了,而且沒遇到之前發生的 Error。
.
首先第一步驟:修改 buildout.cfg

.
在 zcml 的區塊中加入 plone.portlet.static

.
接著在終端機執行:
$ sudo ./bin/buildout
$ sudo ./bin/instance start
.
來到 Manage portlets 畫面,Add Static text portlet。


.
填入版面所要顯示的內容:

.
儲存離開後,剛才新增的版面就會出現囉!

December 16th, 2008 — Mac/OSX
有時候用Adium連接MSN時,常會出現 Notification Authentication error。
會出現這個問題的情況,通常都是我在使用3.5G連線時才會發生。
今天Google了一下,總算找到原因了。
解決辦法是,在 /etc/hosts 加入下面一行:
65.54.239.80 messenger.hotmail.com
再重開 Adium 就可以順利連線了。
December 15th, 2008 — Mac/OSX
If you used Fink on OSX, and got an error message like this:
Can’t resolve dependency “fink (>= 0.28.0)” for package “gettext-tools-0.14.5-4″ (no matching packages/versions found) Exiting with failure.
You should need to run “fink index -f” to forcibly refresh it, and then you should be able to selfupdate and get fink and gettext-tools updated.
References...
August 19th, 2008 — Mac/OSX
根據前一篇 Make your MacBook Cooler 提到的軟體 smcFanControl2 以及 CoolBook,這次拿了一台 Macbook Pro 來實測。這台 MBP 是 加到爆 的版本,也就是 C2D 2.6G/7k200/4G,能測試這台高貴的機器真是有幸呀。

燒機的方法是使用 Xbench,測試的過程裡除了全速不斷的一直跑 Xbench 以外,並且將 CoolBook 的 CPU loading 也調到最高 10。接著把 Applications 目錄裡所有的程式通通開啟,包含了 iLife08, iwork08, Aperture2, Office08, Adobe CS3, Parallels Desktop 等各式各樣重量級軟體,約略開啟了總共五十多個應用程式。最後... 再連續 “同時播放” 三個 FullHD 畫質的 mpg 影片檔。
想當然爾,系統是整個 Lag 到不行了,我把 CPU 跟 GPU 風扇轉速固定在 2000rpm(最低轉速),讓機器狂燒十幾分鐘,CPU 溫度最高達到八十度C,但是系統卻非常的穩定沒有當機,也沒有任何一個應用程式 Crash 掉,最後實測出這顆 C2D T9500 的極限值:2600Mhz@0.9875v。下面的圖示是使用 CoolBook 調整到最低電壓而且最穩定的狀況,CPU Idle 的待機溫度居然只有 28度C (室溫大約 24度C),只能說 45奈米的 CPU 真不是蓋的。


May 12th, 2008 — GNU/Linux
在這一篇 Ubuntu on Sony VAIO TZ37TN/B (二) Fan Speed Controller 提到 TZ37 在運作 Ubuntu 時,電腦會特別的燙,原本以為是 CPU 風扇控制不良,於是寫了風扇控制的 Scripts 來降溫。後來發現原來最大的熱源來自於 Intel 4965AGN 這張網卡,於是來到了 LessWatts.org 網站來挖寶。
目前以 Fan Speed Controller Scripts 搭配 LessWatts.org Tips & Tricks 之後,我的 TZ37 已經不再發燙。
根據 LessWatts.org Tips & Tricks 所修改的設定:
echo 5 >/sys/bus/pci/drivers/iwl4965/0000\:03\:00.0/power_level
echo 1 >/sys/devices/system/cpu/sched_mc_power_savings
echo 10 >/sys/bus/usb/devices/usb1/power/autosuspend
echo 10 >/sys/bus/usb/devices/usb2/power/autosuspend
echo 10 >/sys/bus/usb/devices/usb3/power/autosuspend
echo 10 >/sys/bus/usb/devices/usb4/power/autosuspend
echo 10 >/sys/bus/usb/devices/usb5/power/autosuspend
echo auto >/sys/bus/usb/devices/usb1/power/level
echo auto >/sys/bus/usb/devices/usb2/power/level
echo auto >/sys/bus/usb/devices/usb3/power/level
echo auto >/sys/bus/usb/devices/usb4/power/level
echo auto >/sys/bus/usb/devices/usb5/power/level
echo 10 >/sys/module/snd_hda_intel/parameters/power_save
echo 1500 >/proc/sys/vm/dirty_writeback_centisecs
hal-disable-polling --device /dev/cdrom
hdparm -B 1 -S 12 /dev/sda
echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 5 >/proc/sys/vm/laptop_mode
ethtool -s eth0 wol d
ethtool -s eth0 autoneg off speed 100
ifconfig eth0 down
關閉藍牙以及內建CD-ROM的電源:
echo 0 > /sys/devices/platform/sony-laptop/bluetoothpower
echo 0 > /sys/devices/platform/sony-laptop/cdpower
hciconfig hci0 down
刪除沒用到的一些硬體相關的核心模組:
rmmod hci_usb ohci1394 sbp2 ieee1394 bluetooth joydev pcmcia parport_pc lp parport tpm_infineon tpm tpm_bios yenta_socket rsrc_nonstatic pcmcia_core ricoh_mmc
PowerTop 測試一下:
Cn Avg residency P-states (frequencies)
C0 (cpu running) ( 2.1%) 1333 Mhz 0.4%
C1 0.0ms ( 0.0%) 1067 Mhz 0.0%
C2 0.1ms ( 0.0%) 800 Mhz 99.6%
C3 7.4ms (97.8%)
Wakeups-from-idle per second : 133.7 interval: 15.0s
Power usage (ACPI estimate): 7.4W (8.2 hours)
Top causes for wakeups:
35.9% ( 65.2) : Rescheduling interrupts
20.1% ( 36.5) : i915@pci:0000:00:02.0
12.3% ( 22.4) : extra timer interrupt
10.9% ( 19.9) compiz.real : schedule_timeout (process_timeout)
9.5% ( 17.2) firefox : futex_wait (hrtimer_wakeup)
雖然 PowerTop 跑出 7.4W (8.2 hours),但可想而知,8.2 hours 是不切實際的數字,下次再來把實際的使用時間記錄下來,看看服用了這些保命長壽丹之後,TZ37 的續航可以延長到多久。
May 11th, 2008 — GNU/Linux
先前的 Ubuntu on Sony VAIO TZ37TN/B (一) Hardware & Desktop 是在 7.10 的環境下測試,這次我把系統升級到了 8.04 (Hardy Heron) LTS,藉這個機會整理一下 Sony VAIO TZ37TN/B 在 Ubuntu 8.04 LTS 的相容性。
相較於在 7.10 還需手動調整的項目,在 8.04 預設裝好就已經能動的有:
- Sound 耳機孔輸出與筆電喇叭的輸出已經正常了,不會有耳機已經插上去了,結果筆電喇叭也同時還在唱的窘境。
- FN Keys 音量調整鈕能動, LCD背光也能動了!
原本在 7.10 能動的,在 8.04 卻掛了的有:
- Integrated Media Buttons (退片鈕也不能動了) 解決的辦法是,使用偏好設定 -> 鍵盤捷徑鍵,將退片動作 binding 在特殊的按鍵上。
除了上述三項以外,其他的就跟 Ubuntu on Sony VAIO TZ37TN/B (一) Hardware & Desktop 大同小異啦!有些預設不能動的東西,改一下就能動了。下面特別整理出幾個在 8.04 要改的東西,因為這些改法跟過去在 7.10 的方式不同。
HSDPA modem (HUAWEI E220 3.5G) 的驅動:
改服用 vodafone-mobile-connect-card-driver-for-linux-2.0.beta2-ubuntu-installer.run 試試,如果遇到問題無法啟動裝置的話,那就只能手動來設定網卡,設定內容可參考 Wireless in Debian II (Huawei E220 3.5G Modem)。
Touchpad 的解析設定:
Section “InputDevice”
Identifier “Synaptics Touchpad”
Driver “synaptics”
Option “Device” “/dev/psaux”
Option “Protocol” “auto-dev”
Option “HorizEdgeScroll” “0″
Option “MinSpeed” “0.1″
Option “MaxSpeed” “0.8″
Option “AccelFactor” “0.2″
Option “EdgeMotionMinSpeed” “15″
Option “EdgeMotionMaxSpeed” “15″
Option “UpDownScrolling” “1″
EndSection
Suspend to Ram & Hibernate 終於沒問題了:
$ sudo vi /etc/modprobe.d/alsa-base
options snd-hda-intel probe_mask=1
$ sudo vi /etc/pm/config.d/modules
SUSPEND_MODULES=”ehci_hcd uhci_hcd”
殘念的是,在我的系統上 Hibernate 依舊沒辦法成功,猜測可能是我沒有設定 Hibernate partition 的關係?還沒能去 Debug 這問題。不過話說回來,只要 Suspend to RAM 能一切正常,我就滿足了,這樣就能像在用 Macbook 一樣,隨走即蓋,隨開即用!方便多了。
Ubuntu 8.04 (Hardy Heron) LTS 在 Sony VAIO TZ37TN/B 的支援還算不錯,大部分的硬體都能支援,除了 Fingerprint Sensor 還有怪怪的 Memory Card Reader (Ricoh) 以外。不過還存在一個問題需處理,就是增加續航力跟風扇控制的問題,我在下一篇會整理在 8.04 下,如何讓 TZ37 更省電,續航更久。(風扇控制依舊參考這篇 Ubuntu on Sony VAIO TZ37TN/B (二) Fan Speed Controller.)
更多的 Ubuntu on Sony VAIO TZ 討論,請參照 Sony Vaio TZ Series: Quest for 100% Compatibility。
April 16th, 2008 — GNU/Linux
老方法了, 最近一直碰到這檔事, 貼起來做個紀錄. From: How to install Grub from a live Ubuntu cd.
- $ sudo grub
- grub> find /boot/grub/stage1
- grub> root (hd?,?)
- grub> setup (hd?)
- grub> quit
如果是拿 Debian net-install 開機片修復其他磁區的 boot-loader,
可以這麼做:
- # mkdir /mnt/XXX
- # mount -t XXX /dev/XXX /mnt/XXX
- # mount -t proc none /mnt/XXX/proc
- # mount -o bind /dev /mnt/XXX/dev
- # chroot /mnt/XXX
- # grub
- grub> find /boot/grub/stage1
- grub> root (hd?,?)
- grub> setup (hd?)
- grub> quit
April 14th, 2008 — GNU/Linux
一拿到 TZ37 時, 馬上感受到, 哇靠! 這真是一台超輕薄的筆電, 但是隨即而來的就是: 漸漸的不能忍受他龜慢的速度, 尤其又是一台 1.8″吋 4200rpm 的硬碟在拖垮效能, 於是想起了過去 小黑愛機 X40 不好的歷史....
首先用 bootchart 測一下 TZ37 的開機速度, 測出來為: 1分5秒, 完整的開機到能使用桌面應用程式, 總共花費 2分17秒!
嗯, 真的很慢, 光開個機就要等上兩分多鐘, 於是我祭出了海陸套餐:
這下子調整完後, 咱們看看 TZ37 是否有跑的更快一點, bootchart 測出秒數為 26秒, 完整的開機到能使用桌面應用程式, 總共花費 1分35秒!
嗯, 還不夠快, 後來我把腦筋動到了高速隨身碟上, 由於 1.8″ ZIF 介面的 SSD 目前價位都還貴的離譜, 因此參考這篇 分秒必爭 24款USB高速閃存盤橫評總結, 買了一支 ADATA PD7 (8G) 回來當作主系統碟使用!
動了一點手術, 我把 TZ37 的 Ubuntu Linux 全部移植到這支 PD7 裡, 把內建硬碟的系統全砍了, 將 1.8″吋 120G 的硬碟當作資料碟及備份碟使用, 測試的結果發現 PD7 快閃碟拿來當作系統碟時, 存取速度還蠻快的, 開啟應用程式也不會有一般機械式硬碟那種 lag 的感覺, 一整個就很流暢!
使用 bootchart 測速, 安裝在 PD7 上的 Ubuntu, 開機只要 21秒, 完整的開機到桌面底下, 花費 44秒!! 接著使用 hdparm 來測存取速度, PD7 測出來的 Timing cached reads: 648.17MB/sec, Timing buffered disk reads: 30.42MB/sec, 對照 TZ37 內建的 ZIF介面 1.8″ HDD 為 644.42MB/sec 及 28.27MB/sec.

雖然 hdparm 測出來兩者差距不大, 但是系統實際在運作時, 速度明顯的快速許多, 猜想是快閃碟平均檔案存取速率(Average access time) 以及隨機讀取速率非常快的因素所致, 這點跟 SSD 性質很類似!
對於目前的 Ubuntu on TZ37+PD7 的速度, 大致上已經很滿意了, 接下來如果還能 tuning 出更多的效能的話, 再繼續寫續集吧!
(PS: 最後補充一下 TZ37 在 Ubuntu 下的續航力: 裝一般電池+PD7系統碟+USB 無線光學鼠+螢幕亮度開第三格+開啟無線網路, MSN聊天+上網找資料, 可使用 4小時40分鐘左右... 很讚吧!)
April 14th, 2008 — GNU/Linux
在 Sony Vaio TZ Series: Quest for 100% Compatibility 討論串裡看到有人問到: I would like to know if around 60 degrees C is a normal temperature (normal use) for the processors. Sometimes I increase the fan speed (using spicctrl) but very soon it decreases. I did not see any option in the bios to get more fan speed at a given temperature. Do you have an idea?
我也測試了一下, 果真發現 TZ37 在 Ubuntu 底下, 風扇控制不甚理想, 為了讓機器更涼快點, 於是寫了一段碼, 即時監控 CPU 溫度, 讓他不飆超過 55度c!
$ sudo apt-get install spicctrl
$ vi /home/cyj/bin/FanSpeedController.sh
- #!/bin/bash
- declare -i temp=`spicctrl -T`
- if [ "$temp" -gt "55" ]; then
- spicctrl -f 255
- fi
$ sudo vi /etc/rc2.d/S99FanSpeedController
- watch -n 120 “/home/cyj/bin/FanSpeedController.sh”
這樣系統每隔兩分鐘 check 一次 CPU 溫度, 如果超過 55度c 的話, 它就 “全速運轉” 一陣子, 直到溫度低於 55度c , 就會恢復原本該有的預設風速! (如果覺得兩分鐘太頻繁的話, 可手動修改 watch 的秒數, 即使改成 10分鐘一次, 也能有效降溫...)
April 14th, 2008 — GNU/Linux
告別過去的 Macbook Triple Boot: Used Bootcamp, 以及 Ubuntu 7.04 on MacBook: Used Bootcamp 之後, 近日接手一台 Sony Vaio TZ37/TN, 沒有了 Parallels / Bootcamp 後, 終於能玩玩 pure Linux 了 (純的喔!)
直接上陣的是 Ubuntu 7.10, 參照 Sony Vaio TZ Series: Quest for 100% Compatibility 來安裝系統, 在預設未調整的 Base-System下, 一裝好能 work 的有 (out-of-the-box):
- Intel 950 Graphics (3D 正常, 1366×768 寬螢幕解析正常)
- Wired Ethernet
- Intel 4965 (A,G,N Wireless)
- Bluetooth (Bluetooth Mouse on Ubuntu)
- Touchpad (包含右邊的滑動區域都正常)
- Integrated Media Buttons (僅有退片鈕可以動)
- FN Keys (音量調整鈕能動, LCD背光不能動)
調整後能 work 的有:
- Sound (除了耳機孔輸出與喇叭輸出分開外, 一切正常)
- Headphone Jack Sensing (正常)
- Motion Eye (正常)
- HSDPA modem (HUAWEI E220 3.5G 正常)
- Suspend to Ram (僅有 AC_power 時才能, Battery_power 會當掉)
- Suspend to Disk (無論如何, 死當就是了....)
確定無法啟動的有:
- Fingerprint Sensor
- Memory Card Reader (Ricoh)
.
Sound Card 的調整:
$ sudo vi /etc/modprobe.d/alsa-base
添加 options snd-hda-intel model=sony-assamd
.
HSDPA modem (HUAWEI E220 3.5G) 的驅動:
- https://forge.vodafonebetavine.net/frs/?group_id=12&release_id=11
- http://static.scribd.com/docs/6kdtdm1khgp7g.pdf
.
LCD 背光 FN Keys 設定:
$ sudo vi /etc/init.d/hotkey-setup (修改下列)
Sony*)
#modprobe sonypi; (把 modprobe sonypi 註解)
modprobe sony-laptop
.
Touchpad 的解析設定:
$ sudo vi /etc/X11/xorg.conf
Section “InputDevice”
Identifier “Synaptics Touchpad”
Driver “synaptics”
Option “AlwaysCore”
Option “SendCoreEvents” “true”
Option “Device” “/dev/input/mouse1″
Option “Protocol” “auto-dev”
Option “ZAxisMapping” “4 5″
Option “Emulate3Buttons” “yes”
Option “LeftEdge” “102″
Option “RightEdge” “921″
Option “TopEdge” “80″
Option “BottomEdge” “641″
Option “MaxTapTime” “180″
# Cover the whole 1280×800 display from one edge to the other:
Option “MinSpeed” “0.1″
Option “MaxSpeed” “0.8″
Option “AccelFactor” “0.2″
Option “EdgeMotionMinSpeed” “15″
Option “EdgeMotionMaxSpeed” “15″
Option “UpDownScrolling” “1″
# Button handling:
# - Middle and Right click are *REVERSED* on the pad buttons
# (as I more often middle-click than right-click)
# - Top Right simulates MIDDLE click
# - Bottom Right simulates RIGHT click
Option “RTCornerButton” “2″
Option “RBCornerButton” “3″
Option “LTCornerButton” “0″
Option “LBCornerButton” “1″
Option “TapButton1″ “0″
Option “TapButton2″ “3″
Option “TapButton3″ “2″
Option “SHMConfig” “on”
EndSection
.
Motion Eye 的細節設定較繁複:
參照 Sony Vaio TZ Series: Quest for 100% Compatibility.
Suspend to Ram & Disk 的細節設定較繁複:
參照 Sony Vaio TZ Series: Quest for 100% Compatibility. 或者直接採用 這裡 的檔案!
.
桌面 3D 環境美化及調整:
硬體驅動及設定完成後, 先給他 dist-upgrade 一下, 接著安裝 lazybuntu, 輕輕鬆鬆搞定桌面應用軟體, 如果覺得預設桌面環境不夠炫的話, 可參考下面文章來美化桌面!
.
視窗邊框半透明:
$ sudo apt-get install emerald
CCSM -> 視窗裝飾 -> 指令 -> emerald --replace (解決視窗邊框消失問題)
Emerald Theme Manager (細部微調邊框半透明樣式)
到此為止, Ubuntu 7.10 在 TZ37 上已經相當好用了, 不過還是遇到了投影機外接螢幕的問題, 參照了 Ubuntu 7.10 的切換螢幕程式, 輕鬆搞定!
目前已經處理完 TZ37 的硬體驅動以及桌面應用環境的佈設, 在下一篇文裡, 將分享 TZ37+Ubuntu 效能調校的測試數據!
January 29th, 2008 — Plone/Python
使用 Plone 內建的 HTTP Cache Manager 配合 Apache mod_cache,
可以讓 Plone-Site 的頁面存取速度增快,網站整體的效能也會跟著提昇。
在開始之前,可先閱讀 使用 Cache Manager,認識 Zope 底下
Cache Manager 的運作模式。若想直接快速獲得 Benchmark 的數據,
可參考 Plone 效能測試綜合報告。
底下將說明如何實做 Plone 的 HTTP Cache Manager 並搭配
Apache mod_cache 提昇 Plone 網站的存取效能。
首先載入 Apache mod_cache:
$ sudo a2emod cache
$ sudo a2emod mem_cache
$ sudo a2emod disk_cache
編輯 httpd.conf 加入 Cache Configuration:
<IfModule mod_cache.c>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 65536
MCacheMaxObjectCount 2000
MCacheMinObjectSize 1
MCacheMaxObjectSize 10240
</IfModule>
</IfModule>
$ sudo /etc/init.d/apache2 restart (或 force-reload)
Cache Configuration 的設定值可參考 Apache Module mod_cache。
接下來要設定 Apache 做為前端伺服器,並且啟動 mod_rewrite、
mod_proxy,設定步驟可參考:Running Plone and Zope behind
an Apache 2 web server。
最後搭配 mod_cache 作為前端快取機制,並設定 Plone HTTP Cache
Manager。
底下是 Plone/manage 的 HTTP Cache Manager 設定畫面:

點選 Associate,找出所有可被 cache 的物件,勾選所需要 Cache 的物件,
選擇完畢後按下 Save Changes:



勾選完成之後,即完成了所有的設定。
此時 Plone 會將需要 Cache 的內容轉交給
Apache mod_cache 來處理,以增進網站存取效能。
.
最後我們使用 ab 來 benchmarking 網站的效能:
1. 完全沒做任何 Cache 的 Plone-Site:
$ ab -n 500 -c 20 -d -k http://localhost:8080/Plone
測出的數據
Requests per second 7.24 #/sec
Time per request 2761.690 ms
2. HTTP Cache Manager + Apache mod_cache 的 Plone-Site:
$ ab -n 500 -c 20 -d -k http://localhost/Plone
測出的數據
Requests per second 2787.50 #/sec
Time per request 7.175 ms
3. 將 Cache interval seconds 設成 5 秒的情況下:
測出的數據
Requests per second 710.95 #/sec
Time per request 28.22 ms
.
由 ab benchmarking 後的數據可以發現:
1. HTTP Cache Manager + Apache mod_cache 的 Plone-Site
相較於沒做任何 Cache 設定的網站,網站存取效能提昇將近 400 倍。
2. 將 interval seconds 由 3600 秒縮減為 5 秒後,
所造成的網站存取效能耗減,將近有 4 倍之多。
.
January 14th, 2008 — GNU/Linux
測試如何在 PostgreSQL 建立一個 觸發器 (Triggers)。
測試的目標是:
當 users 資料表的 username 欄位新增資料時,
Trigger 會寄一封信件給管理者,通知欄位資料已經新增。
Google 之後發現 pgMail 以及 PgSendMail 可以做這件事,
但在實際安裝測試後,發現有些錯誤訊息,目前還未能花時間去 Debug,
於是找了另外一個替代方案:使用 PL/sh Procedural Language Handler,
手動寫 Shell Scripts 來執行寄信的動作。
PL/sh 的安裝方式可以使用 apt-get install postgresql-8.2-plsh,
也可以來 官網 下載 TarBall 編譯安裝。
安裝完成後,需在 PostgreSQL 裡宣告使資料庫支援 PL/sh 語言,
先找到 createlang_pgplsh.sql 的所在位置,找到後執行:
$ sudo -u $USER psql -d $DBNAME -f $PREFIX/createlang_pgplsh.sql
例如:
$ sudo -u plone psql -d zope_sqlpas -f /usr/share/postgresql-8.2-plsh/createlang_pgplsh.sql
(PS: 以上均為同一行,這裡因為排版關係它自動跳行)
安裝完成後,來到 PostgreSQL 建立 PL/sh function:
CREATE FUNCTION email(text,text,text) RETURNS trigger AS ‘
#!/bin/sh
echo $3 > /tmp/email-trigger
mail $1 -s $2 < /tmp/email-trigger
‘ LANGUAGE plsh;
(PS: 在函數裡使用 shell scripts 寫寄信動作)
建立完成時,可用 SQL 語法測試 Function 有沒有錯誤:
select email(’cyj@localhost’,'Subject’,'Message body’);
如果 cyj@localhost 有收到信件的話,表示此 email() 已能正確運作。
接著必須使用 PL/pgSQL 在 PostgreSQL 裡建立 Trigger Function,
在這 Function 裡呼叫剛才的 PL/sh email() 做觸發的動作。
參考這篇 PostgreSQL - Trigger 入門 寫了一個 email_mytrigger():
CREATE FUNCTION email_mytrigger()
RETURNS “trigger” AS
$BODY$BEGIN
PERFORM * FROM users WHERE username = NEW.username;
PERFORM email(’cyj@localhost’,'Subject’,'Message body’);
RETURN NEW;
END;$BODY$
LANGUAGE ‘plpgsql’ VOLATILE;
此時 email_mytrigger() 已建立完成,接著要決定套用在哪個資料表上:
CREATE TRIGGER email
BEFORE INSERT ON users
FOR EACH ROW
EXECUTE PROCEDURE email_mytrigger();
設定 users 資料表新增資料時,PostgreSQL 會觸發 email_mytrigger(),
在這個 Function 裡會執行用 PL/sh 寫的 email() 去做寄信的動作。
到此為止,這個 Triggers 的測試目標已經達成,在撰寫 Function 過程中,
如果有遇到 PostgreSQL 語法的問題時,可先查找 PostgreSQL Manuals。
January 14th, 2008 — Plone/Python
測試了 Apache mod_rewrite 以及 Zope 的 Virtual Host Monster 物件,
藉由 Rewrite Module 的方式,把瀏覽 Plone 網站的 Request 重導給 Zope,
除此之外,原本在 /var/www/* 裡的 Apache 網頁目錄也能直接在網站上運作。
實際執行的方法很容易,首先要載入 Apache 相關模組:
$ sudo a2enmod rewrite
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
接著在 Apache ServerRoot 下做轉址的設定,
這裡我是採用修改 .htaccess 的方式:
$ sudo vi /var/www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^phpform - [L]
RewriteRule ^(.*) http://localhost:8080/VirtualHostBase/http/localhost:80/VirtualHostRoot/Plone/$1 [P]
</IfModule>
PS: RewriteRule ^(.*) 那行為同一行,這裡因為排版關係它自動跳行。
填寫完成之後 restart Apache。
未來在存取 http://localhost/ 時,就會導向到 http://localhost:8080/Plone,
Plone 底下所有的 URL 都會從原本的 :8080/Plone/*
重新導向到 http://localhost/Plone/*,
除此之外,原本在 /var/www/phpform 這個目錄,
會原封不動的交給 Apache 來處理。
底下有更詳盡的參考資源:
1. Running Plone and Zope behind an Apache 2 web server
2. Mixing Local Apache and Proxyed Content
3. 使用 Apache 作為 Zope 的前端
4. ZopePowerUser 進階講師研習班
5. Zope 虛擬主機的實例教學
January 6th, 2008 — Plone/Python
January 2nd, 2008 — Plone/Python
在上一篇:SQLPASPlugin for SQL based authentication in Plone
介紹 MySQL+SQLPASPlugin 實做過程。
接著我又參考這篇:
How To Setup SQLPASPlugin to Authenticate Against A PostgreSQL Database 實做了 PostgreSQL+SQLPASPlugin。
結果發現事情並不如 文件中 寫的那麼簡單,
這裡面存有一些 小問題需修正 才行!
.
底下是在 Ubuntu7.10 實做的過程紀錄:
.
1. 首先安裝這些軟體 (apt-get install XXX)
apache2
libapache2-mod-php5
libapache2-mod-auth-pgsql
php5
php5-cgi
php5-pgsql
phppgadmin
postgresql-8.2
postgresql-plpython-8.2
postgresql-pltcl-8.2
python-pygresql
python-psycopg2
python-psycopg2da
zope-psycopgda2
plone-site
.
2. 參考這份文件:Debian Linux 架設 PostgreSQL+PhpPgAdmin
2-1. 切換成 postgres 的身份執行
# sudo -u postgres psql template1
2-2. 修改 postgres 的密碼
# template1=# alter user postgres with password ‘PASSWORD’;
2-3. 建立 zope 使用者 (作為 Plone-site 讀取 PostgreSQL 的角色)
# template1=# create user zope with password ‘PASSWORD’ createdb createuser;
這裡的使用者務必建立為 zope/plone 服務啟動角色,
否則在執行 ZPsycopgDA 時會有錯誤訊息:
例如://psql: 嚴重錯誤: Ident 驗證使用者 “某某某” 失敗//
2-4. 離開 PostgreSQL
# template1=# \q
2-5. 參考 上面那篇文件 繼續完成 phppgadmin 的設定。
.
3. 使用 zope 使用者登入 phpPgAdmin 建立資料庫與表格
3-1. 建立使用者認證資料庫 zope_sqlpas
3-2. 建立角色資料表 roles,欄位設定為 username, rolename
3-3. 建立認證資料表 users,欄位設定為 username, password, email

.
4. 安裝設定 ZPsycopgDA
cd /var/lib/zope2.9/instance/plone-site/Products/
sudo cp -rf /usr/share/zope/Products/ZPsycopgDA\:2/ .
sudo mv ZPsycopgDA\:2/ ZPsycopgDA
sudo chown zope:zope -Rf ZPsycopgDA
sudo vi ZPsycopgDA/DA.py
找到 99 行:self.encoding = encoding
改成:self.encoding = “utf8″
(如果沒修改,在執行 ZPsycopgDA 存取 PostgreSQL 時
會出現 encoding 錯誤訊息)
.
5. 在 Plone 根目錄建立 Z Psycopg2 Database Connection。
在 Connection string 填入正確的 PostgreSQL 連結資訊
//例如: dbname=zope_sqlpas user=zope password=xxxxx//

.
6. 安裝 SQLPASPlugin。

.
7. 到 Plone Control Panel 設定 SQL Authentication。


.
8. 設定 /Plone/acl_users/source_properties。

.
大功告成啦!
此時 Plone 的使用者管理以及認證資訊皆已在 PostgreSQL 進行。
December 29th, 2007 — Plone/Python
Plone 是一個可供多人註冊使用的 content management system (CMS),
註冊的 user record 會儲存在 ZODB 裡,經由 ZMI /Plone/acl_users,
可以對其 Authentication 的規則窺知一二。
在 Plone 上預設已安裝 PlonePAS Product,它可讓我們安裝
PluggableAuthService(PAS) plugins,作用是讓其他系統上既有存在
的使用者資料作為 Plone 的 user/group sources,並且支援其帳號密碼認證。
SQLPASPlugin Product 是一個 PAS plugins,
藉由 SQLPASPlugin+PlonePAS,可以把 Plone 的 使用者管理/認證
交由另一台 SQL database 來處理,也就是讓 Plone 網站可以存取
另外一個網站 SQL 裡的帳號密碼。
.
底下簡略紀錄
Plone3+MySQL+SQLPASPlugin 的整合測試。
1. 首先安裝 MySQL for Python & ZMySQLDA。
2. 在 Plone 根目錄建立 Z MySQL_Database_Connection。

.
3. 安裝 SQLPASPlugin。

.
4. 到 Plone Control Panel 設定 SQL Authentication。


.
5. 設定 /Plone/acl_users/source_properties。


.
6. 到 Plone Control Panel 安全設置,打開使用者相關功能。

.
7. 此時 Plone 的使用者管理以及認證資訊皆已在 MySQL Database 進行。
.
關於 PluggableAuthService(PAS) 資源,可參考 PAS reference manual,
PlonePAS Presentation 的介紹。
以上整合測試是在 MySQL Database,若搭配 PostgreSQL Database,
可參照 How To Setup SQLPASPlugin to Authenticate Against A PostgreSQL Database。
December 29th, 2007 — Mac/OSX
每次重裝 OSX 後想要改預設截圖的格式時,都會忘記指令是什麼,
這次 Google 到了,乾脆貼上來做紀錄,以後就不用在到處找了。
defaults write com.apple.screencapture type XXX
XXX 可以是 pdf jpg gif png,這樣預設截圖時就會採用該格式,
不然還有這個軟體 shotChoice 可以自動設定截圖格式 。
準備要從 Tiger 重新安裝至 Leopard 了,希望一切無痛順利!
December 26th, 2007 — Plone/Python
接續上一篇的內容:
Plone and PHP+MySQL (Quick-Note)
這次搭配的 database 改成了 PostgreSQL,
安裝流程與方法幾乎跟 上篇 一樣,
差別只在於安裝的是 psycopg 和 ZPsycopgDA。
經過測試後發現,若純粹搭配 PHParser 來與資料庫互動的話,
其實可以不用安裝 ZMySQLDA / ZPsycopgDA。
December 25th, 2007 — Plone/Python
以下將條列式的說明:
如何讓 Plone 能支援 PHP Code 以及 PHP+MySQL 的連結。
.
安裝與設定相關環境
1. 佈置好 PHP+MySQL 環境 (MS: Appserv, Linux: apt-get install)
2. 佈置好 Plone3 環境 (MS: Plone3 download, Linux: apt-get install)
3. 安裝 MySQL for Python & ZMySQLDA
3-1. 用 Plone 的 easy_install 工具安裝 MySQL_python
3-2. 將下載完成的 ZMySQLDA 安裝到 Plone Product 裡
4. 安裝 PHParser (參考 PHParser with Plone)
4-1. 在 CMFPlone/configure.zcml 裡加上 five:traversable 的相關設定
4-2. 更改 Products/PHParser/PHParser.py 檔案裡的 PHPath
5. 在 ZMI 新增 Z MySQL Database Connection (填入 MySQL 連結資訊)
6. 在 ZMI 新增 Z SQL Method (填入 MySQL 連結資訊)
.
寫 PHP Code (or PHP+MySQL 連結)
7. 在 ZMI 裡新增 PHParser,在此檔案裡寫自己的 PHP Code (包含 PHP+MySQL 的程式)。
7-1. 參考 Integrating PHP applications in Plone
7-2. 新增 Page template 並結合 PHParser 的內容
在 Plone 呈現 MySQL 資料,還有第二種方法:參考 Plone and MySQL。
8. 新增 Z MySQL database connection 連結資料
8-1. 新增 Z SQL Methods 連結資料
8-2. 新增 Page template 並結合 Z MySQL / Z SQL 的內容
.
MySQL 資料在 Plone 上的編碼問題
9. 在 PHP+MySQL 程式中使用 mysql_query(”SET NAMES ‘utf8′”);
10. 改 lib/python/ZPublisher 的 HTTPResponse.py
10-1. 設定 default_encoding = ‘utf8′
完成!
December 24th, 2007 — Plone/Python
Quills is a weblog for Plone. It is designed from the ground up
to work well and provide specialized features for a multi-blog,
multi-user environment.
在 Plone 3.04 試玩了 Quills Product,它是一個在 Plone 下能夠
使用 Blog 功能的 Product,一個 Blog 該有的功能它大致上都有。
目前有一個問題是,它的 Comment 系統,必須要求使用者登入後
才能發表,如此一來匿名者就不能隨性的在此 Blog 發表 Comment。
經過測試後,目前還未能處理這問題。

December 21st, 2007 — Mac/OSX
Ubuntu Desktop 7.10 在 Parallels Desktop 3.0 裝不起來,
途中會因為顯示問題,而導致無法順利進入安裝畫面。
錯誤訊息是:“The screen has reset 6 times over the
past 90 seconds, something is probably wrong.
Waiting 2 minutes to try again on display :0″
解決的方法是,在開機畫面按下 F6 以 Single 模式進入安裝,
接著編輯 /etc/X11/xorg.conf 更改 Display SubSection。
SubSection “Display”
Modes “1024×768”
EndSubSection
這樣就能順利安裝了! (這裡 有 Parallels 官網的解決方法)
December 20th, 2007 — Plone/Python
LinguaPlone is a tool to manage and maintain multilingual content that aims to integrate seamlessly with Plone.

.
LinguaPlone Product 可以讓 Plone 的內容資料產生多國語言相對應的內容,
首先來 LinguaPlone 官網 下載檔案,將 Product 安裝至 Plone 並啟用它。


.
安裝完成後,來到 ZMI 管理介面: /Plone/portal_languages,
設定網站 Default language 以及 Allowed languages。

.
設定完成後 Plone 首頁上會產生語言國旗,這時候可以方便的點選國旗
更改 Plone 操作介面的語言。

.
透過安裝完成的 LinguaPlone,我們就能進一步的針對每一個內容資料
來設定相對應的多國語言內容,當使用者點選不同的語言旗標時,
網站內容資料會立即的切換成相對應的語言內容。


.
完整的 LinguaPlone Tutorial 不妨參考下面資源:
LinguaPlone Tutorial
The LinguaPlone tutorial from the Plone Conference 2004.
Making and Managing Multilingual Sites with LinguaPlone
Geir Bækholt’s presentation from Plone Conference 2006.
.
December 19th, 2007 — Plone/Python
Plone3 的 portlets 是採用新的模式在呈現,因此要修改 portlets 時,
就不能按照以前 2.5 版時,來到 Properties 改 slots 裡的 portlet。
這篇文章:How to manage portlets in Plone 3,
解說如何在首頁編輯 portlet。
如果想客製化 Plone3 新架構的 portlet,這篇 How-tos:
Override the portlets in Plone 3.0 裡頭有介紹。
剛從 2.5 跳到 3.0 的朋友可能會察覺一個小問題,
那就是 Navigation portlet 不見了 (無法預設在首頁展現),
像我就覺得它不見了很沒安全感,於是為了解決這個問題,
又找到了這篇:Where did the Navigation portlet go in Plone 3.0?
最後有一篇:Creating static text portlets in Plone 3.0,
介紹如何建立一個 “讓我們自行填寫內容” 的 portlets,
不過我按照文中的例子操作後,我的 CMFPlone 整個 broken 要重新安裝,
所以請小心服用.....
December 19th, 2007 — Plone/Python
接觸 Plone3 後,發現 Plone3 的設計以及架構,跟先前 2.5 版本有些不同,
從 Features in Plone 3.0 看到多了一些新玩意兒,另外在
Updating add-on products for Plone 3.0,描述 2.5->3.0 有哪些差異,
以便在升級版本時能夠注意。
如果 End Users 想學習 Plone3,或者對其介面操作有問題的話,
可先參考 Plone-3-user-manual。
December 17th, 2007 — Plone/Python
這是今天 12/17 日與法鼓山朋友以及資訊所夥伴還有 KJ 等人,
在一場 Seminar 裡,我跟聽眾分享的題目。


內容主要在介紹 Plone,以及 Plone+Zwiki 的搭配應用,
上面是前兩張的投影片截圖,完整的檔案可由此下載:961217_Plone-wiki.pdf
喜愛 Plone 的朋友們歡迎大家一同交流分享相關的技術應用。
November 30th, 2007 — GNU/Linux
2007/12/3 即將在 政大應數 分享一個 Talk,
議題是關於 Linux System Security。
我規劃中理想的 Linux System Security 可分以下幾個流程進行:

System Security Overview
↓
User Authorization / su、sudo
PAM 認證機制 / SSHD 安全性設定
↓
chroot / xen / vserver
Tripwire 系統稽核查驗
↓
Network Service Security (APACHE. MAIL. FTP…)
Tcp_wrapper、iptables firewall
↓
系統紀錄管理與監控、自我偵測掃描、攻擊
system log / Testing & Monitoring
↓
完善的備份策略
System Backup (network backup)
.
12/3 的 Talk 只會基礎的談論 System Security Overview,
並整理一些『最快速的系統安全實作 Topic』讓大家參考。
在 System Security Overview 之後的五個主題,
則是更繁雜且深入的內容,留在未來再分享討論吧!
完整投影片 PDF 下載:System Security Overview @ NCCU
課堂中使用的相關檔案下載:NCCU_961203_Files.zip
November 30th, 2007 — Mac/OSX
最近看到一篇『免費”申請”US iTunes Account (下載Album Art)』,
可用來下載 Album Art,照著文章順序來做,真的可行!
雖然我的 Album Art 都是拿原版 CD 接 HP PSC 1510 掃描出來的,
這個 Free Account (to download album art) 也還是蠻好用的。
September 12th, 2007 — Mac/OSX
讓 MacBook/MacBook Pro 更涼快一些,現在只要安裝兩套軟體,
就能夠賞你個涼快。其中一套免費,另外一套則只要 $10(美金)。
1. smcFanControl2
2. CoolBook
CoolBook 的電壓調整功能真好用,我的 Core 2 Duo 2.16G
降低電壓後,操作溫度整整降了十幾度,而且系統並沒有任何的
不穩定,燒機狂測後一切都 OK!


2.16G 全速運作的最低電壓,冒著最大勇氣,我測了 0.9750V,
在這個低電壓狀態下,運作完全正常,一點問題都沒有。
很想試試看 0.9500V 一路闖到底,但還是放棄了,因為我怕在
測試燒機過程中若當機,資料毀損就得不償失了。
或者有沒有人想要代替我試試看,試完再來回報結果。
September 7th, 2007 — GNU/Linux
以前我自己的 Debian System 會用一種變態的手法來調整,
調整出來的系統相較於直接安裝,確實有快一些,在我的
IBM X40 有明顯的感受,沒辦法 X40 的 1.8 吋超慢效能,
逼的我非這麼嘗試不可。
首先用 net-install 光碟安裝好 “最基礎” 的 base-system
(裝最少且能開機的系統,預設大概 200 多MB),接下來,
安裝 kernel-source,根據自己的硬體來 rebuild kernel,
用不到的模組、功能、選項統統都取消,然後 “必用” 的
直接編入核心 (不採用模組方式)。
接著用 dselect 把所有已經安裝的 package 巡視一遍,
把 “不用的” packages 統統刪除,把 base-system 再瘦身,
瘦身完的 base-system 會更精簡在更小些。
完成之後,安裝 apt-build 以及 debfoster。先使用 dpkg
將系統中目前最精簡的 package 名單備份出來,然後開始
apt-build world,在 build world 的過程中,系統會安裝
一大堆其他套件,這時先不用管它 (最後會刪除這些套件)。
過了好久,apt-build 終於完成,upgrade 上 recompile 的
套件後,同樣用 dpkg 列出目前已安裝的套件資訊,這時
套件的數量大概比原先 base-system 的清單多出約 200 多個,
這些都是多裝的,用 diff 比對原本的備份清單,找出哪些
是新增加的,在來全部移除。
清完後,debfoster 也派上用場了,它可用來 “二度清潔”。
再來就差不多了,往後看你要安裝什麼套件,就用 apt-build
來裝,裝完就用 debfoster 來清。
大功告成,base-system 快了乾淨了,接下來蓋城堡時
也要遵守這個原則 (apt-build+debfoster),要玩什麼,
要裝什麼,通通自己來吧!
最後要說的是,”效能調教” 還有其他更多玩法及細節,
apt-build+debfoster 只是其中一種,還有許多更好玩的,
這就是 Linux 有趣且吸引人的地方,這個 “開放的” 作業系統,
從頭到腳你都可以看得到、摸得到、玩得到、用得到。
August 27th, 2007 — GNU/Linux
Feisty 效能調教,這可能不是最完善的,但是值得參考!
對 Linux 效能調教及更多資訊,有興趣者不妨 Google 一下,
有好文章也歡迎提供囉!
FYI: Feisty Performance - “Fly Like A Butterfly”
August 26th, 2007 — Mac/OSX
今天使用 Bootcamp 安裝 Ubuntu 7.04 (雙重開機),
初步測試結果,大致上沒有什麼問題,過程也相當容易。
至於會不會比在 Parallels 中要好用?這就見仁見智了。
要我選的話,我覺得在 Parallels 裡,好用很多!
(而且速度也不比 Bootcamp 慢多少)
以下是在 Bootcamp 下測試的初步結果:
1. 寬螢幕正常,3D 加速正常,跑 Beryl 正常。
2. 網路一切正常,無線網路也正常。
3. TouchPad 功能正常,右鍵綁到 F12。
4. TouchPad 雙手指滾輪模式正常。
5. F1-F2 鍵,調整螢幕背光正常。
6. F3-F5 鍵,音量控制正常。
7. F12 右邊的光碟退出鈕正常 。
8. 紅外線遙控器正常。
9. 藍芽配對正常。
10. 電源管理、CPU頻率調整及風扇控制正常。
11. 休眠與待命正常。
12. LCD 投影模式正常。
實作的主要參考資源:
https://help.ubuntu.com/community/MacBook
August 16th, 2007 — Mac/OSX
介紹完 Parallels on MacBook,事實上,採用 Bootcamp 也是個很棒
的方案。因為這樣能夠百分之百的應用 MacBook 所有的硬體支援,
就像是在一台非蘋果的 NoteBook 上裝多重系統一般來得直接快速!
在 MacBook 上多重開機裝 Ubuntu 或其他 Linux Distributions,
底下有相當多的文件可參考,有興趣的不妨參照著實做吧!
1. 到 Linux on Laptops (Apple) 參考 Apple MacBook 的安裝紀錄。
2. 在 Google 搜尋 “macbook bootcamp ubuntu” 字串。
3. 在 Google 搜尋 “ubuntu community macbook” 字串。
會找到類似這樣的文件:Ubuntu 7.04 on a MacBook 或者
Macbook Triple Boot: OS X, Fedora 6, Vista。
甚至可以在 MacBook - Community Ubuntu Documentation
找到許多的相關資源。
.
最後!...
看完上面的文件了嗎?可以動手來做了!(有沒有一種懷疑的感覺?)
如果您像我一樣懶的話,用用 Parallels 就很棒了,真的不錯。
August 16th, 2007 — Mac/OSX
多年的願望終於成真了,不用再當雙槍俠,我的 PowerBook + X40
終於合體了! Parallels (還有其他的軟體) 讓這願望成真。
我把 X40 (Windows+Debian/Ubuntu 多重系統) 的所有資料都轉移到
MacBook 的 Parallels 底下。
在 Intel-based 的蘋果電腦裡跑多重系統,較常見的有 Bootcamp、
Parallels Desktop、Vmware fusion,還有 Open Source 的 VirtualBox。
Bootcamp 是讓 MacBook 採用多重開機的方式,百分之百的應用硬體資源
執行多重系統,其他的則是虛擬化技術的產品。
審慎評估之後,我買了 Parallels Desktop 3.0,目前在 MacBook 上同時跑
三個系統,速度一點都不慢!事實上,比我在原生的 X40 裡還要快 (這是真的)。
Parallels 的虛擬系統,不論是 MacBook 原生的裝置,或者週邊的外接裝置,
都能正常使用。較為可惜的是,沒有真正的 3D 硬體加速功能 (Bootcamp 以及
Vmware fusion 有),所以,不能在 Linux 下玩 Beryl。
介紹文講完了,切入主題。
.
Parallels 下讓 Linux 支援全螢幕 (1280×800) 的設定。
1. Parallels 工具列 → Edit → Virtual Machine → Video → 設定如下圖。

2. sudo vi /etc/X11/xorg.conf,在 “Screen” Modes 加入 “1280×800″。
3. 重新啟動 Xserver 即可。
.
讓 Parallels 的 Linux 更好用,可安裝 Parallels-tools:
1. Parallels 工具列 → Actions → Install Parallels Tools。
2. mount /media/cdrom0
3. sudo sh /media/cdrom0/parallels-tools.run
完成,享受三系統合體的快感吧!
August 16th, 2007 — GNU/Linux
根據前一篇 My Linux Hand Book (branch) ,我將更詳細的內容記載在
網頁上,底下是我在 OSSF::自由軟體鑄造場 工作時所完成的教材資料,
有興趣不妨參考、修改取用。
.
Linux Administration Course
.
背景資訊:
課程的內容與規劃,依照下列三部份來循序漸進: 1. 初學入門 2. 系統管理
3. 網路伺服器架設與管理。預期的目標是,讓學員從初學入門以至於具備
從無到有,自己建立、管理、維護 Linux Server 的能力。以 GNU/Linux
為基礎,整理出一份適合大學生以及研究生,入門 UNIX-Like 的教材。
此教材曾在政治大學應用數學系—暑期研習課程中採用。最近一次完整的
使用紀錄是在法鼓佛教研修學院開設一學期的 Linux Admin 課程。
.
教材大綱:
此份教材內容,主要遵照下列課程大綱來設計。
* 政治大學應數系-暑期研習課程:
o http://yenjinc.info/wp-content/uploads/2006/07/Outline.pdf
o http://yenjinc.info/wp-content/uploads/2006/07/Courses.pdf
* 法鼓佛教研修學院-課程綱要:
o http://yenjinc.info/chibs/Courses.pdf
.
參考資源
此份教材內容的設計,主要參考下列資源。
* Linux 書籍
o 柏青哥的 SUSE Linux 10 (上奇科技)
o Unix/Linux 作業系統原理與管理實務 (學貫)
o LPI Linux Certification in a Nutshell, 2/e. 2006 (O’Reilly)
o Linux Cookbook. 2004 (O’Reilly)
* Linux 網路資源
o http://linux.vbird.org/
o http://kalug.linux.org.tw/~lloyd/LLoyd_Hand_Book/book/book1.html
o 其他更多資源,列表在每週課程檔案的第二頁裡
.
已經完成的電子檔
此份教材的電子檔案,目前分散在以下位置。
* 政治大學應數系-暑期研習課程:
o 第一版:http://yenjinc.info/wp-content/uploads/2006/10/old.pdf
o 第二版:http://yenjinc.info/wp-content/uploads/2007/01/my-linux-hand-book.pdf
* 法鼓佛教研修學院:
o 每週的上課講義與實作內容:http://yenjinc.info/chibs/
.
法鼓佛教研修學院上課記錄
(2007.2/28 ~ 2007.6/27)
* 3/07. Linux 簡介與取得、系統裝置名稱與分割區概念、系統安裝
o — http://yenjinc.info/chibs/960307.pdf
* 3/21. Linux 入門、系統遊走檢視、檔案目錄管理
o — http://yenjinc.info/chibs/960321.pdf
* 3/28. 檔案檢視工具與 vi 編輯器
o — http://yenjinc.info/chibs/960328.pdf
* 4/04. bash 入門篇 (變數、別名、通配字元、歷史清單、設定檔案…)
o — http://yenjinc.info/chibs/960404.pdf
* 4/11. bash 進階篇 (導向、管線與過濾器程式…)
o — http://yenjinc.info/chibs/960411.pdf
o — http://yenjinc.info/chibs/960411Sed.txt
* 4/18. 檔案的打包、壓縮、尋找、萬用字元、正規表示式
o — http://yenjinc.info/chibs/960418.pdf
o — http://yenjinc.info/chibs/960411Sed.txt
* 4/25. 使用者與群組管理、檔案系統權限管理
o — http://yenjinc.info/chibs/960425.pdf
o — http://yenjinc.info/chibs/960425_PIC.tgz
* 5/02. 工作與行程管理、工作排程、套件管理程式與 TarBall 管理
o — http://yenjinc.info/chibs/960502.pdf
o — http://yenjinc.info/chibs/960502_PIC.tgz
o — http://yenjinc.info/chibs/960502TarBall_Plone.txt
* 5/09. 檔案磁碟系統管理 (磁碟分割,檔案系統建立、掛載,備份、救援…)
o — http://yenjinc.info/chibs/960509.pdf
o — http://yenjinc.info/chibs/960509_ppt.pdf
o — http://yenjinc.info/chibs/960509_scripts.txt
o — http://yenjinc.info/chibs/960523_ppt.pdf
* 5/16. 系統開機、運作流程管理、LILO/GRUB 開機管理程式、編譯核心、系統紀錄檢視
o — http://yenjinc.info/chibs/960516.pdf
o — http://yenjinc.info/chibs/960516lpi201.pdf
o — http://yenjinc.info/chibs/960516lpi202.pdf
* 5/23. Linux 系統管理實務 I
o — (4/25—5/16 課程內容複習、案例探討、實作練習、討論…)
o — http://yenjinc.info/chibs/960523_ppt.pdf
* 5/30. Linux 系統管理實務 II
o — (4/25—5/16 課程內容複習、案例探討、實作練習、討論…)
o — http://yenjinc.info/chibs/960530-example1.txt
o — http://yenjinc.info/chibs/960530-example2.txt
* 6/06. Linux 伺服器架設 I (基本網路工具、基礎網路服務、架設、實務應用…)
o — http://yenjinc.info/chibs/960606_ppt.pdf
o — http://yenjinc.info/chibs/960606-pam_tally.txt
o — http://yenjinc.info/chibs/960606-iptables.txt
* 6/13. Linux 伺服器架設 II (SECURITY、HTTP、FTP、MAIL、DNS、SAMBA、NAT、DHCP…)
o — http://yenjinc.info/chibs/960613_Server.txt
o — http://yenjinc.info/chibs/960613_other_urls.txt
* 6/20. Linux 桌面環境應用 (生活應用、課程討論、總檢討、意見反應…)
o — (6/06—6/13 課程內容複習、案例探討、實作練習、討論…)
.
政治大學應數系 暑期研習課程
(2006.7/28 ~ 2006.8/11)
* 完整上課教材 (第一版)
o — http://yenjinc.info/wp-content/uploads/2006/10/old.pdf
* 完整上課教材 (第二版)
o — http://yenjinc.info/wp-content/uploads/2007/01/my-linux-hand-book.pdf
.
原始檔案下載
* 所有教材之完整原始檔案下載
o http://yenjinc.info/UNIX_Administration.rar
.
August 16th, 2007 — GNU/Linux
在 政大應數系 以及 法鼓山中華佛學研究所 使用的 Linux 教學資料,
統一放至 rt.openfoundry.org。
Linux Administration Course [*註一]
http://rt.openfoundry.org/Foundry/Project/?Queue=807
以上這份文件將不再正式維護,未來我會採用『另外的方式』,
將累積下來的資料,重新改版為『最精簡』而且可符合『小班制課堂』
(類似補習班的每堂授課那種模式) 直接上場採用的版本。
至於實際的執行方式,目前我還在規劃中,若朋友們有什麼想法或意見
歡迎提供給我。
[註一]:過去相關的文章可參考:
—My Linux Hand Book
—Chibs Linux class files
July 1st, 2007 — GNU/Linux
延續上一篇:
—Linux user friendly on NoteBook I (My X40)
今天裝了 Ubuntu 7.04,發現預設裝好時,桌面系統也已經
非常完整了,以上所述也都支援了 (全不需要手動)。
不過相比較於 SLED,我個人還是覺得差了一點。
應該是預設的客戶群導向不同,企業版的 Desktop 真的
在辦公環境的整合度提升不少,而且對於 Laptop 的支持,
我覺得比 Ubuntu 要好一點點,需要手動的地方更少。
在 Ubuntu 有些地方還是需要有基本 Linux Background 才行,
在 SLED 下,真的只要開心的使用電腦即可,管他 Li 不 Linux。
話說回來,長期使用 Debian (也身為 Debian Fans) 的我,倒是五味雜陳。
一個大便系統,從 Base-System 到 Desktop 裝到要讓人滿意,
光是手動調教部分,就要花費不少時間。但是 Ubuntu / SLED
一裝好就都幫你全搞定了,需要手動調教的地方很少。
不過我覺得,要玩 Debian 才能真正體會玩 Linux 的樂趣,
可藉由從 Base-System 一步一步建構到 Xserver 以至於令人滿意的
桌面系統。在這過程裡,磨練自己的技能,也更能深入瞭解 Linux。
June 29th, 2007 — GNU/Linux
最近有空可以好好的玩一下 Huawei E220 3.5G Modem,
今天下午測了一下,很快的,我的 Debian 已經可以 Work 了。
很簡單,四個步驟搞定。
1. 安裝 wvdial。sudo apt-get install wvdial。
2. 設定 /etc/wvdial.conf,由於我的是遠傳電信,
所以下面內容只適用於 FETNET,其他電信業者是否相通,
則有待確認。
[Dialer Defaults]
Phone = *99#
APN = internet
Username = username
Password = password
Stupid Mode = 1
Dial Command = ATDT
Modem = /dev/ttyUSB0
Baud = 460800
Init2 = ATZ
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ISDN = 0
Modem Type = Analog Modem
3. 把 3.5G USB 無線網卡插上去後,lsusb 一下,
請找到無線網卡的資源,例如下列:
Bus 004 Device 001: ID 0000:0000
Bus 002 Device 002: ID 12d1:1003 <---這一行!
Bus 002 Device 001: ID 0000:0000
接著請重新啟動 usbserial (kernel modules)。
sudo rmmod usbserial
sudo modprobe usbserial vendor=0×12d1 product=0×1003
4. 接著請撥號連線。sudo wvdial &。
撥通後就可以 3.5 G 無線上網了,很簡單吧。
June 29th, 2007 — GNU/Linux
在剛裝好的 Debian Base System 時,如何啟動內建的無線網卡,
很簡單,五個步驟就好。
1. 下載官方的 Firmware,
在 http://ipw2200.sourceforge.net/firmware.php 可以下載。
下載完成後,請解開丟到 /usr/lib/hotplug/firmware 裡。
2. 重啟 ipw2200 modules,只要 sudo rmmod ipw2200,
sudo modprobe ipw2200 即可。
3. 更改 /etc/network/interfaces 使其符合 eth1(wireless) 的設定。
4. 如果你的無線網路是 dhcp 分配 IP 的話,只要 sudo dhclient eth1
重抓 IP,更新後即可無線上網。
5. 如果需要採用 wpa_supplicant (無線網路加密) 的話,
請先建立 /etc/wpa_supplicant.conf 設定檔,接著打以下指令:
sudo wpa_supplicant -w -i eth1 -D wext -B -c /etc/wpa_supplicant.conf
sudo dhclient eth1
抓到 IP 後就可以上網啦!
以上是簡記,完整資訊可參考過去的一份記錄:
—ipw2200/ipw2915 from-scratch
May 21st, 2007 — GNU/Linux
這裡我將簡單紀錄,最基礎的異地同步備份方法:
—如何使用 rsync + ssh + crontab 製作 mirror Files。
因為示範的關係,所以採用一般 User 來進行,
實際狀況下,如果採用 root 進行 ssh 遠端同步時,
必須修改:/etc/ssh/sshd_config。
並設定:
PermitRootLogin no
PermitRootLogin forced-commands-only
另外也必須注意,備份檔案的相關權限問題。
########################################
rsync + ssh 基本同步化
########################################
$ sudo apt-get install rsync ssh
$ man rsync
-a, --archive (archive mode)
-v, --verbose (increase verbosity)
-z, --compress (compress file data)
-e, --rsh=COMMAND (specify rsh replacement)
--rsync-path=PATH (specify path to rsync on the remote machine)
透過 ssh 將 yenjinc.info 的 ~/backup,備份至本地端 /backup。
$ rsync -avz -e ssh yenjinc@yenjinc.info:~/backup/ /backup/
yenjinc@yenjinc.info’s password: ←(輸入密碼)
如果需要 mirror 遠端與本地端的資料,請加上 --delete 選項。
$ rsync -avz -e ssh --delete yenjinc@yenjinc.info:~/backup/ /backup/
yenjinc@yenjinc.info’s password: ←(輸入密碼)
以上僅適合一般同步作業,因為 ssh 必須提示輸入密碼才能進行同步化,
如果放在 Crontab 的話,會因為沒有辦法 key in password 而整個 hang 在那。
########################################
產生 ssh 公開金鑰與私密金鑰
########################################
rsync 會利用 ssh 登入到遠端主機,需要帳號與密碼。
若要在 crontab 中不需要輸入密碼就登入,必須製作 public / private keys。
$ ssh-keygen -t dsa -b 1024 -f yenjinc.info-key ←(file name 可自訂)
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): ←(不需輸入,直接按 Enter)
Enter same passphrase again: ←(不需輸入,直接按 Enter)
Your identification has been saved in yenjinc.info-key.
Your public key has been saved in yenjinc.info-key.pub.
The key fingerprint is:
41:29:60:49:40:c3:a0:8f:2f:74:4e:40:64:a5:42:db Denny@PowerBook-G4.local
(公開金鑰與私密金鑰製作完成)
這時候目錄下會產生兩個檔案:
yenjinc.info-key
yenjinc.info-key.pub ←(必須放置到遠端的主機裡)
必須將 yenjinc.info-key.pub 放到遠端 ~/.ssh/authorized_keys 裡。
$ scp yenjinc.info-key.pub yenjinc@yenjinc.info:~/.ssh/
yenjinc@yenjinc.info’s password: ←(輸入密碼)
yenjinc.info-key.pub 100% 614 0.6KB/s 00:00
登入到遠端的主機,把 pub key 加入 authorized_keys 中。
$ ssh yenjinc@yenjinc.info
yenjinc@yenjinc.info’s password: ←(輸入密碼)
yenjinc@~$ cd .ssh/
yenjinc@~/.ssh$ cat yenjinc.info-key.pub >> authorized_keys
yenjinc@~/.ssh$ chmod 600 authorized_keys
完成之後,離開遠端主機,並且測試一下,是否已經可以不需密碼即 ssh login。
$ ssh -i yenjinc.info-key yenjinc@yenjinc.info ←(使用 -i 指定剛才的私密金鑰)
yenjinc@~$ ←(順利完成!不需密碼即可登入。)
########################################
rsync + ssh + No Password 基本同步化。
########################################
接著下來,即可利用 Rsync 透過 SSH 來同步本地與遠端的資料,而不需輸入密碼。
不用密碼的好處是,可以把 rsync 同步備份指令,寫在 Crontab 下自動執行。
透過 ssh 將 yenjinc.info 的 ~/backup,備份至本地端 /backup。
$ rsync -avz -e “ssh -i yenjinc.info-key” yenjinc@yenjinc.info:~/backup/ /backup/
←(順利完成!不需密碼,即可將遠端資料備份過來。)
如果需要 mirror 遠端與本地端的資料,請加上 --delete 選項。
$ rsync -avz -e “ssh -i yenjinc.info-key” --delete yenjinc@yenjinc.info:~/backup/ /backup/
←(順利完成!不需密碼,即可將將遠端的資料製作一份 mirror 到本地端。)
########################################
rsync + ssh + No Password + Crontab 基本同步化。
########################################
基本上,如果上面那一個步驟已經順利成功的話,在加上 Crontab 就不會出錯了。
只要將剛才那串指令,加到 crontab 指令中就行啦!
以下的 Script 是在我的 OSX + Fink 的環境,若是 Linux 則需要另做修改。
#!/bin/bash
RSYNC=/sw/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/Denny/yenjinc.info-key
USER=yenjinc
HOST=yenjinc.info
REMOTE_DIR=/home/yenjinc/backup/
LOCAL_DIR=/Users/Denny/backup/
# rsync+ssh+crontab command
$RSYNC -avz -e “$SSH -i $KEY” --delete $USER@$HOST:$REMOTE_DIR $LOCAL_DIR
將以上 script 內容,儲存為 /Users/Denny/crontab-file。
完成後,即可設定 Crontab。
$ crontab -e
*/2 * * * * /Users/Denny/crontab-file
大功告成,每兩分鐘就執行異地同步備份一次。
########################################
後記 (備註):
########################################
以上所有內容,僅是基本的 rsync+ssh+crontab 示範與練習。
如果是 Server 的環境,詳細的內容就更為繁複啦!
若想延伸閱讀,可參考以下。
在 Google 敲入:rsync ssh crontab 等相關 keyword 可以找到更多哦!
May 21st, 2007 — GNU/Linux
忍受 WordPress 自動取代字符很久了!
每次它都會把 “--” 取代為 “-” ,我原本還不知道,
是因為有人跟我說:『你的網站打錯了,是 “--prefix=” 而不是 “-prefix=”』
我才知道『--』被自動替換成『-』,實在很不爽。
剛剛 Google 了一下,找到要怎麼修改了!
只要兩個步驟就好了。
第一:
編修 wp-includes/formatting.php 這個檔案,
修改第一個 fuction wptexturize。
第二:
把原本的
$static_characters = array_merge(xxx)
$static_replacements = array_merge(xxx)
統統砍掉,改成以下
$static_characters = array(”");
$static_replacements = array(”");
存檔離開後,就修改完成了!
總算告別了討人厭的自動字符替換問題。
May 11th, 2007 — GNU/Linux
誰?對於 notebook 的 “支援度/親和力” 較好呢?
我通常習慣會測試下列 (尤其在預設裝好的基礎狀態下測試):
1. acpi/apm + FnKey/Functional Key
2. suspend to ram/disk
3. cpufreqd
4. wireless + WPA/WPA-PSK+TKIP
5. widescreen
如果有個 Distribution 在 “預設裝好”,或者能夠在
“最少手動” 的狀態下,能完全達到上述所有項目,
我就會稱 “它” 是最適合初學入門並且適合在筆電上安裝的 Linux。
目前為止在我的 IBM X40 上,唯一只有 SLED10 在預設裝好,
不需要任何手動調整,即可以滿足上述 1-4 點的。
(因為 X40 非寬螢幕,所以無法測試上述第五點)
最近我在 X40 上完整重新安裝 Debian,初步測試後,
發現它離上述的 “理想狀態” 還很遠呢!
大部份都還需要手動調教/客製化。
未來我會在陸續針對每個調教的過程做個簡單紀錄,
借此分享給同樣喜愛 Debian 的朋友。
April 27th, 2007 — GNU/Linux
4/30 在 NCCU 應用數學系,由 Ducati 來介紹:Ubuntu 入門、應用與安裝。
以下是相關的宣傳資料、海報與當天的投影片,朋友們不妨參考。


演講投影片 (pdf) 下載:Ubuntu installfest (pdf)
很感謝 政大蔡炎龍老師、政大的同學們,李聖瑋 (Ducati) 等人的協助幫忙,
4/30 Ubuntu installfest @ NCCU 大家就在 政大 見面啦!
March 6th, 2007 — GNU/Linux
於 法鼓山中華佛學研究所 的 Linux 課程已經開跑囉!
每週的講課資料都會放在這裡:
http://yenjinc.info/chibs/
上述的每週資料僅是彙整大綱,詳細的內容與練習
會在課堂中在與大家分享、討論。
最後還是很感謝 法鼓山中華佛學研究所 的朋友們,
能讓我有機會可帶領大家一同學習、分享 Linux。
謝謝你們!
February 23rd, 2007 — GNU/Linux
藉由 政大 UNIX 研習 而產生的 HandBook,
已經在做『第二版』增訂囉!
『第一版』的內容已不會在更新了 (連結與檔案 不會刪除),
新的增訂內容與修正,會直接併入『第二版』中。
以下為『第二版』的文件內容:
最後更新時間:2007/02/23 AM2:10 (隨時更新)
—My Linux HandBook
January 27th, 2007 — GNU/Linux
想當初去年才很辛苦的拿到 LPIC-2 的認證。
2007 的一月,可怕的 LPIC-3 出爐了!
尤其看到它有 301-306 等六科的規劃,不禁傻眼。

新的 LPIC-3 是以 Enterprise 的角度來設計,
從 Detailed Objectives (301) (302) 可以看出端倪。
我很期待國內的 Linux 牛人們能夠有人率先通過測驗!
有興趣的朋友不妨先參考 LPIC-3 Program 的規劃。
相較於 LPIC-3,我自己比較有興趣在 Ubuntu Certified Professional,
從它的 Objectives 看起來,這個比較有趣一點。
有沒有人打算率先挑戰呢!
January 3rd, 2007 — GNU/Linux
今年度即將在 法鼓山中華佛學研究所 擔任一學期的 Linux 課程講師,
這是繼 政大 Unix 研習課程 後,新的一個完整學期的課程規劃。
以下是暫定 UNIX 系統實務 十八週 授課大綱。
實際進度以課堂上課狀況之進度為主。
—Linux Administration Course (課程綱要)
January 3rd, 2007 — Plone/Python
An external method is a Python module written on the file system
and then accessed in Plone.
所謂 External Method 就是在 File System 上寫一個 Python Module,
並且直接在 Plone 網站上來使用它。譬如:在 File System 上建立了
一個 Hello-main.py 程式,這時候若要在 Plone 上使用此程式時,必須
在 ZMI 中 Add External Method,這一個 External Method 即是對應
File System 上的 Hello-main.py,最後在 Page Template 上 (想要使用該
程式的地方) 直接呼叫此 External Method Id 即可。

—應用 External Method Objects 實作網頁計數器
December 20th, 2006 — Mac/OSX
紀錄一些 iTerm 的密辛。
- 將 iTerm 編碼設定為『UTF-8』編碼。
- alias ls=”ls -Gv”
- vi .inputrc
- set convert-meta off
set meta-flag on
set output-meta on
- vi .vimrc
- set enc=utf8
- vi .vimrc
- set fileencodings=utf-8,big5
set encoding=utf8
set tenc=utf8
參考資料:
http://riemann.math.nccu.edu.tw/forum/viewtopic.php?t=78
http://riemann.math.nccu.edu.tw/forum/viewtopic.php?t=220
November 26th, 2006 — Mac/OSX
If Windows programs run slower than you’d like in Virtual PC, try adjusting the settings described in this article to help you improve performance.
FYI: Speed up Virtual PC
簡單的基本步驟 (也可以看作是基礎常識),就可以讓 VPC 跑得稍微順暢一點!
假使在 Mac OSX 下,仍然『必要』用到 Microsoft 的軟體時,這是值得參考的。
像我... 非得為了 IE Only 的網站,特地裝了 VPC + Windows + IE ... :-(。
November 14th, 2006 — Plone/Python
這個 Product 主要是將 Plone/Zope 等頁面,加上點閱率的統計。
安裝此 Product 後,就可以編修 template 頁面,加上點閱率的
Python Code。安裝與使用非常的簡單。
詳細安裝與使用過程不妨參考 mxmCounter 主頁。
—mxmCounter - A Simple Zope Hit Counter
November 13th, 2006 — GNU/Linux
If you wanted to lock out users who failed at entering their passwords
correctly after 『three』 attempts, you could use the pam_tally module
in the 『/etc/pam.d/common-auth』 configuration file by adding
two lines like this:
auth required pam_tally.so no_magic_root
account required pam_tally.so deny=3 no_magic_root
Then you need to create 『/var/log/faillog』 and set it to read/write only by root:
# touch /var/log/faillog
# chmod 600 /var/log/faillog
You can type 『pam_tally --help』 as root to learn about its usage.
To reset the tally for a user and unlock his account, type
『pam_tally --user username --reset』.
Examples:
cyj@PBG4:~$ cat /etc/pam.d/common-auth
#
auth required pam_unix.so nullok_secure
auth required pam_tally.so no_magic_root
account required pam_tally.so deny=3 no_magic_root
Debian GNU/Linux 3.1 PBG4 tty1
PBG4 login: cyj
Password:
Login incorrect
PBG4 login: cyj
Password:
Login incorrect
PBG4 login: cyj
Password:
Authentication failure
PBG4 login: root
Password:
PBG4:~# pam_tally --user cyj
User cyj (1000) has 3
PBG4:~# pam_tally --user cyj --reset=0
User cyj (1000) had 3
PBG4:~# pam_tally --user cyj
User cyj (1000) has 0
PBG4:~# logout
PBG4 login: cyj
Password:
cyj@PBG4:~$
See Also:
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_tally.html
November 8th, 2006 — Plone/Python
接續上次這篇 PromoEngine Product 。
今天又重新研究了一下這個 Product 的使用。
這邊額外補充一個需要注意的地方。
PromoEngine 的廣告顯示有兩個步驟需要完成:
Ad Location Step 1
Select where the ad should show up
Ad Location Step 2
Select an optional slot to use
第一個是設定你的廣告要在什麼頁面或者哪個
特定的地方才顯示出來。
第二是設定 Portlet 的顯示方式,也就是要在首頁
的 Properties 設定你的廣告要放在哪個 Slots 裡。
兩個都設定完成後,就能隨心所欲的此用它啦!
我之前只有設定第二項,第一項沒有設定。
結果就出了一些問題,廣告只會在首頁無任何東西
的時候才會顯示出來,一旦設定了 Front_Page 後,
就都不見啦!
原來就是少了第一項步驟。因為在新增廣告的那個
頁面中,它的 Step 1 非常的不起眼,我一直把那邊
當作是上傳檔案的按鈕,根本沒注意到它。
沒想到就這一個小小的細節,我搞了一個下午才發現
問題所在。
November 2nd, 2006 — GNU/Linux
這是一份兩年前所寫的文件,自己因為開發專題的需求,需要使用
CVS 工具來協同開發,當時所寫的這份內容,讓不少人可以輕易在
Linux 或 Windows 上學會使用 CVS。
兩年前的資料會在上傳上來,其實是當作一個紀錄,也能看作是
『線上備份』啦!假使各位有興趣,也不妨參考看看。
—How to use CVS
October 31st, 2006 — Plone/Python
This is a simple syndication client for CMF. It uses rssparser and shares many things in common with CMFNewsFeed but has a different model for handling channels. It is designed to map n channels or feeds to sets of composite virtual channels which can then be called in in a timely fashion. Most of the remaining work has to happen in UI land.
Step-by-step instructions
- Install either using the CMFQuickInstaller or using an external method.Using CMFQuickInstaller:In the ZMI, add a CMFQuickInstaller Tool to your CMF/Plone Site. Click on portal_quickinstaller. Check CMFSin and click “Install”.Using External Method:
Add an External Method to your CMF/Plone site and specify the following:
ID: install_cmfsin
Module Name: CMFSin.Install
Function Name: install
Click “Test” to install CMFSin.
- In the ZMI, go to the new sin_tool object of your CMF/Plone site. Add RSS or RDF channels to the “channels” section:syntax: =ex: freshmeat=http://freshmeat.net/backend/fm-releases-software.rdf
- Add syndication mappings to the “map” section.syntax: = [,]*ex: geek=freshmeat,slashdot
- Click “Set Config”.
- Finally, go to the Properties tab of your CMF/Plone site then add the mappings you defined to your left_slots or right_slots.syntax: here/sin_tool/macros/ex: here/sin_tool/macros/geeknews
October 31st, 2006 — Plone/Python
快速簡記,如何在 Linux Server 上,手動編譯 Python + Zope + Plone。
這裡的軟體版本分別是:
- Python 2.4.4
- PIL 1.1.5
- Zope 2.9.5
- Plone-2.5.1
這裡的目錄規劃架構是:
- Python Home: /home/Python/244
- Zope Home: /home/Zope/295
- Instance Home: /home/Instance/OSSACC-Plone251
下面是安裝紀錄:
安裝 Python 2.4.4
- cd /tmp
- wget http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tgz
- tar zxvf Python-2.4.4.tgz
- cd Python-2.4.4
- ./configure --prefix=/home/Python/244
- make
- make install
安裝 PIL 1.1.5
- cd /tmp
- wget http://effbot.org/downloads/Imaging-1.1.5.tar.gz
- tar zxvf Imaging-1.1.5.tar.gz
- cd Imaging-1.1.5.tar.gz
- /home/Python/244/bin/python setup.py install
下載 Zope & Plone
- cd /tmp
- wget http://www.zope.org/Products/Zope/2.9.5/Zope-2.9.5-final.tgz
- wget http://nchc.dl.sourceforge.net/sourceforge/plone/Plone-2.5.1-final.tar.gz
安裝 Zope-2.9.5
- cd /tmp
- tar zxvf Zope-2.9.5-final.tgz
- cd Zope-2.9.5-final
- ./configure --with-python=/home/Python/244/bin/python \
- --prefix=/home/Zope/295
- make
- make install
建立 Zope Instance
- /home/Zope/295/bin/mkzopeinstance.py
- Directory: /home/Instance/OSSACC-Plone251
- Username: admin
- Password: ooxx
- Verify password: ooxx
安裝 Plone-2.5.1
- cd /tmp
- tar zxvf Plone-2.5.1-final.tar.gz
檢查 Zope 與 Plone 的 Five 哪一個版本比較新
兩者版本都是 Five 1.3.7 (2006-08-13) 選擇刪除 Plone 的 Five
- rm -rf Plone-2.5.1/Five/
- mv Plone-2.5.1/* /home/Instance/OSSACC-Plone251/Products/
設定 zope.conf
- vi /home/Instance/OSSACC-Plone251/etc/zope.conf
- 改 port-base 1000
- 改 effective-user apache
啟動 Zope
- cd /home/Instance
- chown -Rf apache.apache OSSACC-Plone251/
- cd OSSACC-Plone251/bin/
- ./zopectl start
大功告成!
October 21st, 2006 — GNU/Linux
『千呼萬喚始出來!』
這句話,用來形容這一份『Unix-like 基礎入門講義』
的誕生,是再貼切不過的啦!
這份手冊的內容,是將先前『政大 Unix-like 系統研習』
的講義內容,經過重新排版、重新撰寫的改良版本。
這一份入門手冊一直都還在初稿當中,接下來我會將它
當作是自己的『授課教材』繼續讓它的內容更加豐富與
完整。
我期望著,總有一天,我要拿著自己的 Linux 授課教材
來帶領新手進入 UNIX 的領域,我就更有決心來把它寫
的更好!(雖然現在已經有太多優良的教材了,我就像是
在重複發明輪胎一般。)
也許是秉持著對於 Linux / Unix-like 系統的興趣,以及
想帶領更多朋友也一同學習的熱忱,我會利用工作、課業
閒暇之餘,讓它更加的完美。
完成了這一份 Unix-like 系統基礎入門之後,接下來我也有
同樣的想法,想製作有關於 Python、Plone 基礎入門的手冊
,讓更多的朋友除了認識我最喜愛的 Linux 以外,連帶我
其他的興趣 Python、Plone 也統統帶給大家吧!
—Unix-like Tutorial (lightweight handbook)
October 3rd, 2006 — Plone/Python
延續上次這篇:Right Column Customize Quick-Note 。
之前是以修改 main_templates 來達成首頁廣告放置需求,
而這次採用更好的作法,以一個專門置放 Content 內容的
Product 來完成此需求,這裡採用的是 PromoEngine 0.2 。
下面這份文件,紀錄著安裝與基礎使用過程,有興趣可以
參考參考。
—PromoEngine
September 26th, 2006 — Plone/Python
簡單紀錄一下,如何在 Plone-Site 右邊的區塊上方建置『活動圖示連結』
,這份 pdf 的內容,只是紀錄如何修改 main_templates 的過程,但事實上
比較好的作法,可能是開發一個專門擺放活動圖示連結的看版,才是最好
的方式。
—Right Column Customize
September 9th, 2006 — GNU/Linux
今天去天瓏書局買了一本巨著!它就是:
LPI Linux Certification In a Nutshell (Second Edition)
經典的『牛頭書』,終於出第二版了!讓人震驚的是,這次第二版
的內容已經全部涵括了 Level 2 所有的 Topic 了!它是我目前找過
的書以來,第一本『專門』針對 LPI Level2 的範圍來寫的書。
以前人們常說『牛頭書』是 LPI Level 1 的聖經!除了準備證照考試
之外,它也是一本值得認真細讀的好書!
出了第二版之後,我個人認為:牛頭書已經是『學習 Linux』必備的
的經典聖經了!不管你沒有要考證照,它的內容足以讓你非常熟悉
Linux 了!(當然,如果要再專精的話,那有更多學不完的東西)
這本書真的是非常的厚!其中已經包含了 Level 2 所有的議題,真是
非常的令人振奮啊!雖然我已經通過 Level 2 的測驗,不過這本書的
內容實在非常值得我再好好的重新細讀與專研!只有不斷的充實知識
與實戰演練,才能讓自己的水平與技術保持在一定的最佳狀況!
September 7th, 2006 — Mac/OSX
自從上次,我的 Linux 資料完全毀損之後,我大概已經好久一陣子,
沒有碰 Linux 了!對我這個 Linux 狂熱份子來講,還真的不好受!
三日不碰 Linux,言語無味、面目可憎乎?不!要改成:三日不碰
『Debian GNU/Linux』,言語無味、面目可憎啊!
其實也沒有那麼嚴重啦!只是自己對 Debian 系統充滿了無比的興
趣與熱忱,而且身為 Debian 教徒的一份子!我應該要… blah blah …
好吧!其實是因為我的小黑 X40 借給女朋友使用,我現在打算將所有
的事情都放在自己的另一台電腦 Powerbook G4 上來做!以前是兩台
同時都在用,所以 Linux 歸 Linux,OSX 歸 OSX,如今想要整合為一
,不然當個『雙槍俠』常常兩台電腦帶在身上也很麻煩!
為了繼續延續對於 Debian GNU/Linux 的研究與專精,我在 PB G4 上
,也切了一個 partition 來裝 Debian 了!這次重新開始的經驗相當的
美妙,因為回想起最後ㄧ次在 PPC 上安裝 Debian 已經是一兩年前的
事情了!(當時我的工作機是 iBookG4,也在上面裝 Debian。)
一兩年後的今天,在 Apple Laptop 上安裝 Debian 讓我最感到開心的是
:原生的 Wireless Card (Broadcom bcm43xx) 終於可以使用了!
(註:逆向工程破解出 Driver.. 官方沒釋出 PPC Driver,因此一兩年前
要在 Apple Laptop 上使用原生無線網卡上網是無解的!)
不過令人遺憾的!X-window 的 3D 加速還是沒辦法使用,Nvidia 依然
沒有打算釋出 Linux Driver for PPC…
Anyway!這次的重新開始一掃之前的陰霾 (X40 硬碟資料毀損),總算
讓我又勇敢的踏上 Linux 專研之旅!不過這次換了平台!算是繼續延續
一兩年前的 Linux on PPC 之旅!
Linux on Laptop (Powerbook):
http://www.linux-laptop.net/
http://www.mamiyami.com/powerbook/
http://www.ncc.up.pt/~rvr/kh/kh.html
August 17th, 2006 — GNU/Linux
快速簡記:如何在 Debian 上佈署 LAMP 環境 (Linux/ Apache/ MySQL/ PHP)
,其中包含如何快速建立 https 加密伺服環境。
—LAMP Setup
August 13th, 2006 — GNU/Linux
快速簡記在 Debian 下部屬一個 FTP/SFTP 的環境:
- $ sudo apt-get install vsftpd
- Create vsftpd.conf & vsftpd.user_list
- Create vsftpd.pem (Optional)
- $ openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
-keyout /etc/vsftpd/vsftpd.pem \
-out /etc/vsftpd/vsftpd.pem (Optional)
這個 FTP,規劃是這樣:
- 具有 SFTP 加密模式
- 可以匿名登入 (可以 Upload Files)
- 可以用 Users 帳號登入 (進入家目錄)
- 鎖定 FTP 根目錄 (只能在自己的目錄裡遊走)
以下是相關檔案的設定內容:
- My VsFTP Configure Files
- $ man vsftpd.conf
- http://linux.vbird.org/linux_server/0410vsftpd.php
July 29th, 2006 — GNU/Linux
這連續五天的 Unix-like 系統研習,總課程大綱已經出來啦!
由於每天只有兩個小時,而且礙於環境限制,所以也無法直接安裝
Linux 來練習,所以就直接透過遠端 SSH 登入其中一台已經裝好
Debian GNU/Linux 的主機,來作後續五天的課程教學與練習。
總體來說,雖然課程大綱已經敲定,但實際上課的內容,都還是以
同學能跟的上的進度還有內容為主,輕鬆愉快的學習,大家學的會
比較重要。
後來真正上課時,自己發現上課講的內容,比講義寫的還多,因為
講義只算是上課指令用法的總結,很多相關的背景知識 (Background)
都需要講解給同學聽,基礎理論知識了解後,再來敲指令,這樣學起來
比較有成效。
對了,還有大部分的時間都交給同學來進行練習,大家反應都不錯,
有疑惑都會發問,透過彼此討論交流後,可以激起另外的火花,進而學
到更多原本不是排在上課中的內容。
當然啦!我也超感謝大家的熱情捧場,才讓小弟有這個機會可以來帶領
大家一起來學習 Unix-like 系統,謝啦!政大應數系的各位朋友們!
—Unix-like Tutorial Outline
July 26th, 2006 — GNU/Linux
政大應數 Unix-like 上課講義 (08/04)
第三天的講義整理完成了!
—Unix-like Tutorial 0804 (pdf)
July 24th, 2006 — GNU/Linux
延續上次寫到的這篇 Linux Connect to a VPN Server ,這次再來詳細
的簡述一下『真實的安裝過程』。
當然啦!你也可以直接看 HOWTO, 裡面有各式各樣 Distro 的安裝
方法。在這裡我簡記一下,自己在 SLED10 以及 Debian 的安裝過程!
Debian 的話,安裝就很容易了!只要把相關 source.list 加入,全部使
用 apt-get install 就可以搞定啦!
增加 source.list:
- deb http://quozl.netrek.org/pptp/pptpconfig ./
# apt-get update
# apt-get install pptp-linux pptpconfig
接著使用 root 執行 pptpconfig,然後把 Server 的 IP、帳號、密碼等
相關資訊一一填入,再來比較特別要注意的是,在 Routing 的頁面當中,
必須選擇『All to Tunnel』,因為經過實測後,若沒有選擇此項,最後
會連不出去。
這樣就大功告成啦!
接下來,下面就是在 SLED10 (SuSE Linux Enterprise Desktop 10)
安裝的過程啦! 在 HOWTO 裡面講解的是 SuSE 10.0 的安裝法,基本
上跟自己在 SLED10 安裝時,是有一點出入,所以如果有朋友在 SLED10
安裝 pptpconfig,可參考小弟這篇為主。
首先,你必須要安裝下面這串劈哩啪啦的東西:
- db1-1.85-90.i586.rpm
- gnome-libs-1.4.1.7-690.i586.rpm
- libglade-0.17-237.i586.rpm
- libgtk+extra0-0.99.17-5mdk.i586.rpm
- orbit-0.5.17-339.i586.rpm
- php4-gtk-4.4.0_1.0.2-1mdk.i586.rpm
- php-gtk-pcntl-1.0.2-1.i386.rpm
- php-pcntl-4.4.0-1.i386.rpm
- pptpconfig-20060214-1suse.noarch.rpm
要特別注意的是,上面這些,有些還有 rpm 相依行的問題,不過基本上
它們所相依的軟體都可以直接在 SLED10 官方套件中找到。其他官方套
件沒有的相依軟體,小弟都已經幫各位整理放在上面了!你也可以直接
下載我的壓縮包 (點我下載),該有的軟體都在裡頭囉!剩餘的就是您自己
的 SLED10 安裝片啦!
解開壓縮包之後,接下來就是全部安裝啦!
# rpm -ivh *.rpm
這部份如果還有出現相依行問題,那表示其中有些套件,必須拿出安裝光碟
來安裝相關軟件。
OK!安裝好後,要來設定防火牆規則:
- 打開『YaST』
- 點選左方『System』
- 打開『/etc/sysconfig Editor』
- 點選『Netwoks』→『Firewall』→『SuSEfirewall2』
- 在『FW_SERVICES_EXT_TCP』加入一個值『1723』
- 在『FW_SERVICES_EXT_IP』,『FW_SERVICES_DMZ_IP』,『FW_SERVICES_INT_IP』加入一個值『GRE』
- 最後點選『完成 (Finish)』
好啦!到這裡就全部設定完成了!
接下來要使用 root 權限來開啟 pptpconfig啦!注意喔!這邊必須使用『sux -』
指令來切換成 root 。如果只使用 sudo 或者 su - 都會產生錯誤訊息,例如:
php-gtk:display cannot open ... 等等。所以這邊記住要使用 sux - 才行。
$ sux -
# pptpconfig
執行 pptpconfig 後,把 Server 的 IP、帳號、密碼相關資訊一一填入,一樣的
在 Routing 的頁面當中,必須選擇『All to Tunnel』,若沒有選擇此項,最後
網路可能會連不出去。
這樣就大功告成啦!
July 23rd, 2006 — GNU/Linux
最近以來完全都用 OpenOffice.Org Writer 來作 doc 文件,
就自己使用上,覺得與 Office Word 沒有什麼多大的不同,
轉換上還挺容易的,不會有習慣上的問題。
不過有個比較明顯的差異,在這邊紀錄一下...
在 Office Word 中,表格可以直覺化的使用滑鼠拖拉大小,
設計的相當直覺,所以非常好用。不過在 Writer,就沒那麼
自在了!
基本上在 Writer 中,建立表格最麻煩的就是沒有辦法像 Word
一樣,可以利用滑鼠直覺化的調整大小。在 Writer 中,必須在
表格裡面,使用 [Alt] + 上下左右 (方向鍵) 來調整大小。
實在是美中不足的唯一缺憾啊! 但埋怨歸埋怨,用久了後也習
慣了,只不過我個人還是覺得用滑鼠直覺化拖拉會比較好用!
July 22nd, 2006 — GNU/Linux
政大應數 Unix-like 上課講義 (07/31)
第二天的講義整理完成了!
—Unix-like Tutorial 0731 (pdf)
July 19th, 2006 — GNU/Linux
政大應數 Unix-like 上課講義 (07/28)
第一天的講義整理完成了!
—Unix-like Tutorial 0728 (pdf)
July 17th, 2006 — GNU/Linux
vi 是一個歷久彌新的編輯器,也是目前在 Unix-like 系統上
最泛用的一套編輯器,幾乎大部份的 Unix-like 系統上,你
都可以看到 vi 編輯器的存在,因此學好 vi 編輯器是一件
很重要的事!
當然啦!在 Unix-like 系統中,編輯器並不是只有 vi 一套而
已,與 vi 相互抗衡的另一套強大編輯器叫做 Emacs,雖然
在這裡介紹的是 vi 編輯器,不過小弟在此建議大家,多學
一套編輯器有利無害,因為你總不能保證每台機器上都一定
要有 vi 吧!:P
vi 的用法深可深到一本書以上的容量,如果需要更詳盡的使
用方法,在這分文件中也有提供 Url 連結給大家參考。
下面是小弟快速的 command 筆記,我把自己使用 vi 以來
認為一些最適合初學者使用的 command 與用法記錄下來
,建議初學的朋友們,只要先把小弟列的那些基礎用法記
熟,就很受用無窮囉!
—Vi Quick-Note (2006.10.18)
July 15th, 2006 — GNU/Linux
這兩三天測試了一下,發現 SLED 10 預設裝好時,已經幫
你把所有桌面應用的環境幾乎全部搞好了!完全不需要在
手動設定或裝東裝西啦!
相較於以前在 Debian 下的使用經驗,我真的覺得 SLED 10
真是太棒了!尤其對於剛入門的新手而言,選擇 SLED 10
會讓自己玩的更愉快哦!(笑)
但唯一缺憾!預設居然無法播放 DVD/VCD 與一些影片檔案
格式,例如:mpg/mpeg、mp4.. 等。
於是花了一點時間 Google 之後,原來是預設的 SLED 10
套件太少了!尤其是一些多媒體影音相關的套件更少!於是
多裝了一些套件後就解決啦!
下面簡略紀錄一下我裝了那些:
- w32codec
- libdvdcss
- xine-ui
- xine-lib (libxine)
- speex
上面這些都是官方沒有提供的套件,唯有 libxine 是官方
有的,不過假使要裝 xine-ui 時,相依性的問題逼的你一
定要升級 xine-lib (於是就要在手動裝新版啦!)
我把上面這些東西統統裝一裝後,總算解決了不能播放
部份影片檔的問題啦!
至於 rpm 從那邊抓的,下面也列一下位址:
如果各位懶得上網一個個下載套件,在這裡小弟已經做好
一個壓縮包啦!所有該裝的都在裡頭了!(點我下載)
本來自己是要裝 Mplayer 的,不過看來現在不用了!哈哈!
現在使用 xine 與 kaffeine 已經可以播放所有格式了。
July 11th, 2006 — GNU/Linux
最近從 Novell 網站下載了 SuSE Linux Enterprise Desktop 10
,最讓我驚豔的是,SLED 10 已經內建把 XGL 裝好啦!
也就是說,系統一裝好的預設環境下,就可以直接享用 XGL
的特效囉!
雖然 XGL 很炫,但是個人是覺得「實質的」效益並不大啦!
就只是「很炫」而已,雖然這麼說,但我還是希望在自己的
Debian 上來搞 XGL 哈哈哈哈 ...
於是我在網路上找到了這篇:—How To Install XGL on Debian
據說是照著作保證成功哦!而且作者還有寫 Scripts 可以讓你
「一指搞定」,在 Debian 上裝好 XGL!
正打算要來實驗時,一看到這一段字:
- be sure you have Xorg 6.8 or 6.9 NOT Xorg 7.0 some problem for the moment.
當場不弄了... 因為我的 Debian 是跑 unstable source.lst 的,
Xorg 已經破 7.0 了,看來既然覺得 XGL 不實用,那我也
就不搞他啦!(其實是...)
當我要玩 XGL 時,只要到 SLED 10 下,一樣可以玩啦!
呵呵... 同時間我的 Debian 也可以好好的使用,事實上我
認為即使 Xorg 7.0 以上還是可以搞 XGL 的啦...
只是目前沒有多餘的時間可以去測這些 (這才是重點 XD)。
June 30th, 2006 — Plone/Python
在早期的 Plone 版本 ( 2.0.x 以前),新增物件的時候,
會有一個欄位需要使用者輸入 ID ( URL 的一部分),
否則預設會以像「document.2006-06-30.6242167230」
這類的名稱為 ID。
自從 Plone 2.1-alpha2 起,這項功能改變了,它會在
第一次存檔時,依據物件 Title 來自動產生 ID。
這樣的改進是相當方便,省確了打 ID 的時間,但是
相對也造成使用上的一些不便。由於它是根據物件
的 Title 自動產生 ID,因此假使 Title 是中文的話,
那麼 ID 將會進行編碼,會變成完全看不懂的英數字
組合,這讓物件的 URL 變得相當的冗長而且醜陋。
在這邊用簡單幾個步驟,分享給大家:
「如何解開 short name (ID) 之封印,讓早期可以自己
設定 ID 的時光重回。 」
—Not Auto-generate Short Name
June 24th, 2006 — Plone/Python
在這分享,如何在不安裝 Product 的預設 Plone 下
,建立一個具有基礎功能以及權限管理的討論區。
雖然功能比不上 Product 的好,但是又不失其實用性
,在此把心得記錄下來,提供參考。
—The Default Forum
June 8th, 2006 — GNU/Linux
NCLP Course 3036
section 1
.Understand the Linux story
.Use the Linux Desktop
.Locate and use Help resources in the Linux system
section 2
.Administer Linux with the YaST management utils
.Manage directories and Files in the Linux System
section 3
.Work with the Linux shell and command line
.Use Linux text editors
.Understand and view processes in the Linux system
.Manage the network configuration
—————
NCLP Course 3037
section 1
.Introduction to Managing the SUSE LINUX Enterprise Server
.Manage User Access and Security
section 2
.Manage the Linux File System
.Manage Software for SUSE LINUX Enterprise Server
.Manage System Initialization
section 3
.Manage Linux Processes and Services
.Connect the SUSE LINUX Enterprise Server to the Network
section 4
.Enable Infrastructure Services
.Enable Internet Services
section 5
.Manage Remote Access
.LiveFire Exercise
—————
NCLP Course 3038
section 1
.Install SLES 9
.Configure the Network Manually
section 2
.Configure Network Services
.Secure a SLES 9 Server
section 3
.Manage Backup and Recovery
.Create Shell Scripts
.Compile Software from Source
section 4
.Perform a Health Check and Performance Tuning
.Manage Hardware and Component Changes
section 5
.Prepare for the Novell CLP Practicum
May 25th, 2006 — GNU/Linux
接續之前所寫過的內容:
「http://yenjinc.info/?p=59」
這次寫下小弟的 LPIC Level2 參考書目與準備過程
「LPI Detailed Objectives」
LPI 很誠實,它把所有要考的內容與範圍通通列在 Objectives 上了!
而且這個 Objectives「洩題」非常嚴重 :P,舉凡它所列出來的 Terms
,幾乎都會出現在題目之中!只要你想考 LPIC ,那麼 LPI Objectives
絕對是要看的,只要搞懂裡面的內容,要考過就不是難事了。
「The LPIC-2 Exam Prep」
考 Level1 時,有人說「牛頭書」是必讀的經典書!那麼我認為考 Level2
時,這個 Exam Prep 則是「考題來源」。因為真正考過之後,很多考題
的內容都是從這裡面考出來的!搭配著 Objectives 一起準備,我相信考
過的機會應該就相當大了。
「O’Reilly Linux Cookbook」
這本書可看做是「實機操練」的一本工具書,裡頭全都是案例與情境模擬
,描述解決問題過程並探討作法!另外它的內容不少涵蓋了 Level2 考試的
範圍,於是我買了它。在考完之後,讓我大為吃驚!蠻多考題的情境模擬
居然跟這本書中的一些例子「相當雷同」!真的「蠻多」的!讓我又一度
猜測與懷疑,LPI 出題者是不是有參考這本書?
「O’Reilly LPI Linux Certification in a Nutshell, 2e」
這就是傳說中的「牛頭書」,考 Level1 必備的聖經書!雖然這裡談的是
Level2 的準備書目,但是它對於 Level2 的準備過程裡,也是相當有用!
因為 Level2 的內容多半是 Level1 的進階延伸!於是當你 Level1 的基礎
相當穩的時候,再來準備 Level2 時會有「如魚得水」一般的感受!
「Linux Professional Institute (LPI) exam prep」
這是 IBM 釋出的 LPIC 教學文件,內容很簡潔扼要,不會很多,很適合考
前的翻閱複習!別看它內容雖少,但是裡面所提到的 Key Point,在真正
的考試中,很多答案都在這裡!說起來也相當神奇,難道又是「洩題」之一
管道嗎?
「Novell Certified Linux Professional (CLP)」
※SUSE LINUX Administration (Course 3037)
※Advanced SUSE LINUX Administration (Course 3038)
這是小弟先前上過的 Novell NCLP 階段課程,NCLP 是介於 Level1 之上,
接近於 Level2 的一個認證考試。不得不說的是,3037/3038 的課程內容
對於小弟考過 Level2 的幫助不少!由於 NCLP 強調的是「實戰演練」!
若對於 3037/3038 非常熟練的話,再來準備 Level2 ,那麼考過的機會將
提升不少!唯一的缺憾就是 NCLP 階段課程學費不便宜...
「鳥哥的私房菜」
※鳥哥的 Linux 私房菜 -- 伺服器架設篇目錄
說到鳥哥的網站,想必已是朝聖之地了!:P
Level2 202 的內容,多半可以在「伺服器架設篇目錄」找到相對應的內容!
邊看邊作,用身體去記下每個架站與修改設定檔的過程,對於考試也相當有幫助。
最後值得一提的神兵力器,用來補足以上參考書目的缺陷
「Google」
小弟再準備 Level2 的過程中,除了讀上面的書目以外,有一部份的時間是花在
Google 上面。當我看到「LPI Detailed Objectives」裡有什麼不懂的內容時,
尤其又是書上找不到的,我就會把 Terms 拿到 Google 去查,往往都可以查到
想要的內容,這樣就可以完全的把 Objectives 的內容完全搞懂。
「一台隨時隨地可以操作練習的 Linux 系統 (我的小黑X40)」
唯有親身經歷過,你才能記住其中的妙法與訣竅!也就是說「看書一回事」、
「實作又是另外一回事」。隨時有台 Linux 機器在身邊,沒事就實際操作看看,
看看 manpage,盡可能的讓書本的東西成為你真正的操作經驗,用身體來體會
並理解書上的內容!看書久了會忘記,但是若將書的內容化為親身的實戰經驗
,那麼以後將受益無窮。對了啦!你的機器最好是灌「Debian GNU/Linux」...
沒有為什麼?因為我是 Debian 教徒,我要傳教
...
May 24th, 2006 — GNU/Linux

證照代表 Know What,但不保證 Know How...
有長輩曾說:
「幾張證照敵不過把你的 notebook 打開!」
證書不過是張紙,唯有真正的實戰經驗與操作經驗才能
證明能力!只有不斷的充實新知與技能,才能讓今天的
自己戰勝過昨天的自己。
May 24th, 2006 — Plone/Python
簡單記錄一下,如何設定 Plone 的頁面屬性,
把預設的連結頁面,自三欄改為兩欄。
—Properties of Page
May 19th, 2006 — GNU/Linux
繼上次的『小銀G4』創紀錄後!
這次...『小黑X40』要爆炸啦!
cyj@x40:~$ sudo fdisk -l
Disk /dev/hda: 40.0 GB, 40007761920 bytes
240 heads, 63 sectors/track, 5168 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1388 10493248+ c W95 FAT32 (LBA)
/dev/hda2 1389 3471 15747480 c W95 FAT32 (LBA)
/dev/hda3 3472 5168 12829289 5 Extended
/dev/hda5 3472 3936 3515368+ 83 Linux
/dev/hda6 3937 4008 544288+ 82 Linux swap / Solaris
/dev/hda7 4009 4381 2819848+ 83 Linux
/dev/hda8 4382 4386 37768+ 83 Linux
/dev/hda9 4387 4391 37768+ 83 Linux
/dev/hda10 4392 4463 544288+ 82 Linux swap / Solaris
/dev/hda11 4464 5168 5329768+ 83 Linux
cyj@x40:~$ df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda5 3.4G 2.6G 794M 77% /
tmpfs 248M 0 248M 0% /dev/shm
/dev/hda8 36M 30M 4.4M 88% /mnt/lvm1
/dev/hda9 36M 30M 4.4M 88% /mnt/lvm2
/dev/hda2 16G 13G 2.2G 86% /mnt/mydocs
/dev/hda7 2.7G 2.5G 212M 93% /mnt/sles9
/dev/hda11 5.1G 4.9G 223M 96% /mnt/suse
/dev/hda1 10G 7.9G 2.2G 79% /mnt/windows
tmpfs 10M 88K 10M 1% /dev
正所謂『物盡其用』... 40G的硬碟真的太小啦!
正要爆炸了!嘖!...
May 19th, 2006 — Plone/Python
於台北市立南港高中,推廣 Python、OSS 中文化,
等相關議題的文件。
這次的課程由 pwchi (pwchi@iis.sinica.edu.tw)
利用 wxPython 介紹視窗程式寫作,範例取用之前
的習題來延伸。
附件檔案有兩個 (文件版權為 pwchi 所有):
一為上課講義,一為上課投影片。
一950519 (pdf)
一950519 (ppt)
May 10th, 2006 — GNU/Linux
LPI Level 2 Topic 202: System Startup
考試要點與心得筆記:
Topic-202 (pdf)
Last modification: 2006-05-10-2350
May 10th, 2006 — GNU/Linux
LPI Level 2 Topic 201: Linux Kernel
考試要點與心得筆記:
—Topic-201 (pdf)
Last modification: 2006-05-10-1430
May 4th, 2006 — Plone/Python
於台北市立南港高中,推廣 Python、OSS 中文化,
等相關議題的文件。
這次的課程,主要延續 950421 還沒上完的內容
,並另外多補充一些相關資料。
附件檔案只有一個:
一為 950505 上課講義,上課投影片延續上週。
一950505 (doc)
May 2nd, 2006 — GNU/Linux
使用暴力法,終於使 LCD 與 Output 可以同步顯示了!
解決了 X40 長期以來的最大問題!
Section “Device”
Identifier “Intel Corporation 82852/855GM Integrated Graphics Device”
Driver “i810″
Option “MonitorLayout” “CRT,LFP”
Option “Clone” “true”
BusID “PCI:0:2:0″
EndSection
April 21st, 2006 — Plone/Python
於台北市立南港高中,推廣 Python、OSS 中文化,
等相關議題的文件。
附件檔案有兩個:
一為上課講義,一為上課投影片。
—950421 (doc)
—950421 (ppt)
April 7th, 2006 — Plone/Python
於台北市立南港高中,推廣 Python、OSS 中文化,
等相關議題的文件。
附件檔案有兩個:
一為上課講義,一為上課投影片。
—950407 (doc)
—950407 (ppt)
March 31st, 2006 — GNU/Linux
在 Linux 下連接至 VPN 網路,話說小弟的公司內網,
除了上班可以連線以外,下班離開後都必須透過 VPN
才能連的上...
在 Windows 底下非常容易就可以設定好 VPN,但是
在 Linux,若沒有人指點一二,想要輕鬆連結可能需要
費點功夫!
幸好有了「PPTP Client」這套軟體,在 Linux 下也可
以輕鬆連線了!
它有三大特點(我自己給的):
1. 好安裝
2. 好使用
3. 文件齊全
好,廢話不多說,直接給網址與安裝文件,讓各位好好享用吧!
PPTP Client:
http://pptpclient.sourceforge.net/
HOWTO:
http://pptpclient.sourceforge.net/documentation.phtml
March 31st, 2006 — GNU/Linux
March 30th, 2006 — GNU/Linux
(一):
「Drivers and Firmware」
http://ieee80211.sourceforge.net/INSTALL
http://ipw2200.sourceforge.net/INSTALL
(二):
「Wireless-Tools」
ifconfig(8), iwconfig(8), iwspy(8), iwlist(8), iwevent(8),
iwpriv(8), wireless(7).
(三):
If you want to use WPA-PSK+TKIP.. and other
mode, you can choose「WPAsupplicant」
「Wpasupplicant」
less /usr/share/doc/wpasupplicant/README.Debian
less /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz
「Create Startup Script for Wpasupplicant」
# /etc/default/wpasupplicant
# Useful flags:
# -D Wireless Driver
# -D wext less /usr/share/doc/wpasupplicant/README.Debian
# -i Interface (required, unless specified in config)
# -c Configuration file
# -d Debugging (-dd for more)
# -w ait for interface to come up
ENABLED=1 #<— important!!!
OPTIONS=”-w -i eth1 -D wext -B -c /etc/wpa_supplicant.conf”
「Make sure you have a configuration file」
# Minimal /etc/wpa_supplicant.conf to associate with open
# access points. Please see
# /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz for more
# complete configuration parameters.
# Also see the other files in /usr/share/doc/wpasupplicant/examples/ for
# specific configuration examples.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
### Example of basic WPA-PSK secured AP
network={
ssid=”Denny’s Home”
psk=”ABCDEFG”
}
「Make sure you set “ENABLED=1″ to “/etc/init.d/wpasupplicant”」
# insane defaults
OPTIONS=”-Bw” # daemonize and wait for interface
CONFIG=”/etc/wpa_supplicant.conf”
ENABLED=1 #<— important!!!
(四):
Have Fun 
February 22nd, 2006 — Plone/Python
這裡把 Plone-Site 客製化過程記錄下來,分享給各位:
「如何將 Plone 的樣式客製化成常見的 Blog 樣式」
同樣的,這份文件的客製化過程與內容,不論在哪個
系統都適用。
—Plone-Site Customize (Blog)
February 17th, 2006 — Plone/Python
一個更改 Plone Logo-URL 的範例,
同樣以圖文方式記錄下來!
—Change Logo URL
February 15th, 2006 — GNU/Linux
#!/bin/bash
read -p “輸入圖片網址(連續數字以前的網址): ” url
read -p “輸入圖片的副檔名? (ex: JPG): ” url2
read -p “輸入最後一張圖片數字: ” p_end
for((i=1;i<=$p_end;i++))
do
num=`printf “%03d” $i`
wget -t 0 $url$num.$url2
done
或者用
curl -O http://www.foo.bar/path/file[001-100].jpg
February 14th, 2006 — Plone/Python
這裡分享大家:
如何利用「ArcheTypes」來建立客製化的樣式內容
,以及介紹一些基本的開發模式。
雖然這篇文件範例是在 Mac OSX 下,但由於 Plone
跨平台的關係,因此範例內容不論哪個系統都適用哦!
—ArchExample
February 10th, 2006 — Plone/Python
在這裡分享 Plone-Site 安裝於 Mac OSX 的記錄,
大體上幾乎是「下一步+下一步」就可以完成的了!
不過還是截圖了一下,讓初學者可以更輕易的入門。
—Plone Installation (OSX)
February 8th, 2006 — Plone/Python
這份文件將基礎介紹 Plone-Site 的使用︰
從「基本安裝」、以至於「建立帳號」、「目錄總管」
,目前流行的「Blog」、「Album」等…
皆以圖文並茂的方式,分享大家如何在自己的電腦上,
建立這樣的網站!
重要的是,這份介紹完全是在 Windows 的環境上實現
,讓沒有 Unix-like 相關經驗的朋友也可以快速入門!
相關內容已另存成 word 檔案,可由附件下載。
—Install Plone (Windows)
—Add Plone Account
—File Management
—Make a Blog
—Make an Album
February 3rd, 2006 — GNU/Linux
對於使用筆記型電腦的朋友們,相信這是一個簡單卻很
實用的 Tips,在筆記型電腦上如何啟用 Suspend to
RAM & Suspend to DISK?
雖然目前的 Linux distro 在這部份已經支援相當良好,
但免不了還是有失敗的例子,以下分享小弟在 Linux 下
啟用 Suspend to RAM & DISK 的過程,提供參考。
(一)測試:
先察看您的系統是否已經支援休眠模式了。
#cat /sys/power/state
mem disk standby
(如果有 mem、disk... 等值,表示系統已支援休眠模式)
可以簡單的測試一下休眠是否成功
#echo -n mem > /sys/power/state
#echo -n disk > /sys/power/state
如果上面的測試後,系統可以順利休眠與甦醒,那麼這時
即可使用 Klaptop 或 Kpowersave (如果是 KDE 環境)
,來詳細設定 Notebook 的相關休眠動作。
PS:
如果「(一)測試」的部份,cat /sys/power/state 的值
mem 與 disk 均有,但 Suspend to DISK 是失敗的,
可以檢查一下 menu.lst (如果是 GRUB 的話),是否有
帶入 resume=XXX 的值給 kernel。
而 resume=XXX 的值,即是 resume partition
(save the suspended image)。
e.g: resume=/dev/hda7 或 resume=/dev/hdX ...
(二) 編譯核心:
//-- 不建議 Linux 新手或不熟的朋友重新編譯,避免發生
不可預期的後果。請在編譯核心之時,確保知道自己在做
什麼。--//
如果系統預設不支援休眠該怎麼辦?一種可能是相關的
ACPI 模組沒有被掛載上來,另外也許是 kernel 並沒有把
相關功能編入進去。
如果曉得模組的相關名稱為何的話,可以使用 modprobe
將相關模組掛載上來,並按照(一測試)的部份試看看休眠
模式是否順利開啟。
這裡小弟的使用方法,則是 re-build 一份 kernel,直接將
相關的 ACPI/APM 模組編入核心,小弟使用的 kernel 為:
linux-source-2.6.15 (2.6.15-3)
首先 reload 先前的 .config 檔,接著將以下相關的選項
打 * ,編入核心:
Code maturity level options ---> (注意 !!! EXPERIMENTAL!!! )
[*] Prompt for development and/or incomplete code/drivers
[*] Select only drivers expected to compile cleanly
Power management options (ACPI, APM) --->
[*] Software Suspend
(/dev/hda7) Default resume partition (這裡可設定您的 Resume partition)
[*] Encrypt suspend image
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
[*] Sleep States
[*] /proc/acpi/sleep (deprecated)
編譯完成後,建立 initrd (mkinitrd),修改 menu.lst... 等等
接著 reboot 以新的核心啟動系統,新核心啟動完畢後,
可繼續「(一)測試」 的步驟,測試系統是否已經支援休眠模式。
若 re-build kernel 後,可以順利支援 Suspend to RAM
& DISK,那麼真的恭喜您啦!
倘若還是不行,那麼可能就要朝多方向去 Debug 了,
已不在本文的範疇中了 :P。不過,不妨參考本文後面的
Reference,或許可幫助您更順利解決問題。
(三) 後記:
以上簡單描述小弟在 Linux 下啟用 Suspend to RAM
& DISK 的過程,提供參考,如果大家有相關資料或文獻
要補充那真的太感謝了!
小弟的測試環境:
測試機器: IBM X40
測試版本: Debian (with kernel 2.6.15-3)
更多資源:
http://moto.debian.org.tw/viewtopic.php?t=3149
http://moto.debian.org.tw/viewtopic.php?t=8304
http://moto.debian.org.tw/viewtopic.php?t=4286
http://www.suspend2.net/
January 6th, 2006 — GNU/Linux
其實要在 Linux Desktop 上,錄製教學影片非常的容易!
首先介紹大家 vnc2swf 這個軟體。
這套軟體有 C-version & Python-version,
這裡我們採用 Python Version。
安裝與使用方式非常的簡單:
(一) 首先配置好 Python 環境
* Python (2.3 or above)
* Pygame (1.6 or above)
* Optional: PyMedia (1.3.5 or above - required for mpeg encoding)
以 Debian 為例,我們用 apt-get install 來安裝這些軟體
# apt-get install python python-tk python-pygame
(其他 distro 請依照各家的安裝方式來安裝它)
(二) 接著至少安裝以下其中一個 VNC server
* RealVNC or TightVNC
* x11vnc
* GNOME Vino
我們這裡則是採用 x11vnc
以 Debian 為例,我們用 apt-get install 來安裝這些軟體
# apt-get install x11vnc
(其他 distro 請依照各家的安裝方式來安裝它)
(三) 下載 vnc2swf (Python version) 軟體
* Download vnc2swf (Python) tar.gz or zip
http://www.unixuser.org/~euske/vnc2swf/
(AT download section)
* 解壓縮
$ tar xzvf pyvnc2swf-0.8.1.tag.gz
(四) 開始錄製教學影片
* 啟動 VNC Server
$ x11vnc -localhost -viewonly
* 進入 vnc2swf (pyvnc2swf 解開的目錄)
$ cd pyvnc2swf-0.8.1
* 執行轉錄程式 (vnc2swf.py)
$ ./vnc2swf.py -o filename.swf
(註: 檔名可以自己取,但是副檔名要為swf,這裡的示範為 filename.swf)
(五) 查看結果
* 停留在當前目錄下,尋找 filename*
$ ls filename*
filename.html filename.swf
* filename.swf 也就是剛才所錄製完成的 Flash 檔案,filename.html
即為錄製完成並把 Flash 嵌入完成的網頁。
* 如此即大功告成啦!
(六) 後記
如此輕輕鬆鬆就可以建立一份 Flash 錄製檔案,很簡單吧!
以後各位也可以使用這種錄影的方式,
可以讓初學者更清楚的學會您所分享的文件內容哦!
當然小弟這份文件,也是直接參照 vnc2swf 網站所整理出來的文件,
有興趣了解更多實用技巧的朋友們,不妨前往一探究竟:
http://www.unixuser.org/~euske/vnc2swf/
祝 使用愉快!
January 6th, 2006 — GNU/Linux
December 27th, 2005 — GNU/Linux
IR Project FINAL 投影片大略截圖:
可由此下載檔案: —IR-FINAL (pics)
December 26th, 2005 — GNU/Linux
December 22nd, 2005 — GNU/Linux
太棒了,不眠不休的努力 Coding,終於完工了!
完成了這學期 Information Retrieval 的期末 Project!
Shell Scripts 的確就像是強力膠一般,
它可以把許多有力的 UNIX 工具連結起來!並且做更有力的事情!
這支搜尋與分析程式完全利用 Bash Shell Scripts 來完成!
把 wget、cat、sed、tr、cut、grep、find、wc、bc…
還有一堆 command-line 指令、轉向、重導向…等等,
全部串連在一起,再加上既有的邏輯控制、迴圈控制等等。
而且在寫這個 Project 的過程當中,又讓我更熟練不少 Shell Scripts
與 command-line 的應用,也學到許多在 Shell Programming 下更絕
妙的寫法!可真是獲益良多!整體的收穫比課堂的收穫還更大!
設計流程大概如下:
1.首先輸入欲查詢的網址,還有查詢字串
2.程式會分析該網址的樹狀結構 (wget)
3.再來將 HTML TAG 刪除,去除 Stop-words,並建立 Index
4.秀出符合查詢的頁面資料與網址
5.最後做結果分析 (搜尋結果頁面的權重分析…等等)
以下為程式的執行結果顯示:
PowerBook-G4:~/Project Denny$ ./ir.sh
請輸入查詢網址 :http://www.sinica.edu.tw/~cdp/project/01/index.html
請輸入查詢 Keyword :資訊貧富
網頁正在下載與分析當中.........
查詢結果顯示 :
=============================================
如何使網路媒介有如電話、電視或水電一樣,成為方便又物美價廉的民生
用品一樣?否則將造成資訊貧富差距。資訊貧富鴻溝日益明顯。
=============================================
此連結為 http://www.sinica.edu.tw/%7Ecdp/project/01/0_2.htm
查詢結果顯示 :
=============================================
(一)、如何使網路媒介有如電話、電視或水電一樣,成為方便、廉價而
普及的民生必需品?否則不只將造成資訊貧富差距現象,亦不符社會正
義原則。這是政府宜立即開始研究、籌劃的首要任務,尤其是網路的硬體
建設宜預早顧及普及、廉價之原則。
=============================================
此連結為 http://www.sinica.edu.tw/%7Ecdp/project/01/5_5.htm
查詢結果顯示 :
=============================================
(二)資訊貧富不均現象將日益明顯;掌握資訊、有資訊操作能力、有資
訊硬體設備者(無論是個人或國家),將掌控政經、文化資源,反之則受
制於資訊富有者。如此將形成嚴重的資訊鴻溝問題。
=============================================
此連結為 http://www.sinica.edu.tw/%7Ecdp/project/01/6_4.htm
查詢結果資料分析 :
=============================================
所有的文件數量為 : 59
包含 Keyword 的文件數量為 : 3
查詢出相關頁面的 Keyword 出現頻率與權重分析 :
第 1 筆 : Frequency : 2 Term-Weight : .74473 (數值越高準確度越高)
第 2 筆 : Frequency : 1 Term-Weight : .37236 (數值越高準確度越高)
第 3 筆 : Frequency : 1 Term-Weight : .37236 (數值越高準確度越高)
在此次搜尋頁面當中 index term 數量為 : 7
大略整理出 Index Term 與出現的頻率 :
社會 出現的頻率為 64
科技 出現的頻率為 108
科學 出現的頻率為 77
傳播 出現的頻率為 88
新聞 出現的頻率為 66
資訊 出現的頻率為 209
資訊科技 出現的頻率為 35
此次搜尋與 index 所花費時間 :
Starting at 21:27
Ending at 21:50
---
這次先整理完成的成果,當然還有部份需要改進的地方,作為未來工作,
在下一篇會整理完整的書面報告與檢討報告亦或發表結案投影片…等等。
December 15th, 2005 — GNU/Linux
PowerBook-G4:~/Project Denny$ ./project.sh
請輸入查詢網址 :http://linux.incs.tw
請輸入查詢 Keyword :CYJ-Denny Resume
網頁正在下載與分析當中.........
---
目前已做到的部份︰
可以針對一個範圍 (網址) 來 cache 網頁 (use wget)
,然後針對該網頁部份來作 Keyword 搜尋比對,接著
以反白的方式秀出 Keyword 出現的位置。
目前還不能做到的部份:
Search Result 無法 Ranking ,並且出來的結果沒有
相似度分析,目前僅算是 Data Retrieval 不算 IR。
已做出來且可以改善的部份:
.Cache 網頁的部份速度太慢,而且若完整的 wget
下來後,往後在做 index 與關鍵字提取 & 分析時會更慢。
.結果的顯示太粗糙,可以參照 Google 的搜尋結果展示。
.目前僅是 Console 介面,希望可以作成 Web 介面
(PHP&MySQL Interface ---> system call)。
目前必須做的部份︰
.Pre-work:將文章擷取出關鍵字,就可以算 Weight
.Use Vector Model computing Weight (Tf*iDF) to RANK
.根據算出來的 Weight 來作結果的相似度高低排序
.IR Project 顯示結果介面參考 Google 顯示介面
.解決 IR 效率的問題,目前的系統分析過程太慢
.將 Console 介面整合成 Web Interface (PHP&MySQL)
.製作結案報告書面資料與PPT & Code present
November 16th, 2005 — GNU/Linux
Information Retrieval Project
製作一套用於文字資料分析的檢索系統,
類似 Search Engine 的作用。
Crawler:
--
目前僅以 wget 來實做,詳細的功能還不算完整,
只能做到下載網頁至 local 端,而進行網頁分析。
Document Parser:
Text Processor:
--
目前僅能依照 Keyword 做簡單的網頁分析,
還無法做到複合型 Keyword Search ,而且無法做有效
的相似度評估。(那些是搜尋後真正要的,那些是不要的)
Algorithm:
Ranking:
--
這是目前 project 的瓶頸所在,需要有良好的演算法來
實做 Ranking,以及做有效的搜尋結果準確度(相似度)分析。
Performance:
--
(待以上所有過程完成後再來實做。)
From full text to a set of index terms:
.document (text+structure)
.structure recognition (structure)
.accents,spacing,etc. (text)
.Full text
.stopwords
.noun groups
.stemming
.automatic or manual indexing
.index terms
目前文字分析,暫時做到:
document (text+structure) → Full text
(且還算不是很完整的 Full Text)
Sample:
cyj@X40:~/project$ ls
0_1.htm 2_0.htm 2_5.htm 3_5.htm 4_2.htm 4_6.htm
5_3.htm 6_3.htm project.sh 0_2.htm 2_1.htm 3_1.htm
3_a_1.htm 4_3.gif 4_7.htm 5_4.htm 6_4.htm 0_3.htm
2_2.htm 3_2.htm 3_a_2.htm 4_3.htm 4_8.htm 5_5.htm
6_5.htm 1_1.htm 1_3.htm 2_3.htm 3_3.htm 3_a_3.htm
4_4.htm 5_1.htm 6_1.htm 1_2.htm 1_4.htm 2_4.htm
3_4.htm 4_1.htm 4_5.htm 5_2.htm 6_2.htm
cyj@X40:~/project$ cat project.sh
#!/bin/bash
list=`ls *.htm`
echo -e “\n”
read -p “請輸入 Keyword :” key
echo -e “\n\n”
for i in $list
do
cat $i |sed -e ‘s/<[^>]*>//g’|sed ‘s/ \+/ /g’|grep --color $key \
&& echo -e “\n\n======分析======” && echo -e “此檔名為$i” && echo -e”\n\n”
done
cyj@X40:~/project$ ./project.sh
請輸入 Keyword :測試
從另一個角度來看,中研院的古籍資料、華康的漢字軟體
等之所以能外銷,靠的是我們語文的基本資料和固有知識
。語文基本資料的整理不僅可以提升軟體的品質,促使許
多應用的開發,更可以提供良好的 『測試』 數據(如:
語音系統、輸入系統等之比較)。
======分析======
此檔名為2_4.htm
(四)、網路媒介推廣科技、醫藥資訊的可行性如何﹖
宜分近程、中程、長程階段探討。譬如已有的相關資訊
,主管機關是否已系統建檔,並取得授權,足以設立網站
,供民眾查閱﹖政府或可開始實驗性的研究,嚐試設立實
驗網站推廣愛滋症防治資訊,並 『測試』 其效果及相關
問題, 然後再逐步推動各科技、醫療網站之設立,推廣
各類科技、醫藥資訊。
======分析======
此檔名為5_5.htm
cyj@X40:~/project$
October 9th, 2005 — GNU/Linux
茲轉信 netman(網中人) 於 tw.bbs.comp.linux 該討論串的見解!
原始討論串於 http://tinyurl.com/crmp8 ,有興趣可前往瀏覽。
網中人 2004年11月25日 上午2時13分
新聞群組: tw.bbs.comp.linux
寄件人: “網中人”
日期: Thu, 25 Nov 2004 02:13:03 +0800
當地時間: 2004年11月25日(星期四) 上午2時13分
主旨: Re: 關於目前國內Linux人才就業的一些疑問......
“egghead” 撰寫於郵件新聞:4FMATl$...@ptt.cc...
> 目前各大電腦補習班以及媒體都在大力宣傳國內企業對Linux人才的渴求,
> 但是實際情況真是如此嗎?還是只是台灣又一次的趕流行?
的確需求甚殷... 不過, 要的都是”高手”啦... ^_^
有些用人單位或許願意培訓的, 但主要看受訓人是否值得投資於其身上?
而這部份就與個人特質有很大關係, 反而對 linux 有多熟並不重要.
> 沒有冒犯之意,純粹只是希望有這方面經驗的前輩能說明一下幾個問題:
> 1.國內企業對Linux人才的需求度?
從我個人管道得知, 很多單位都在瘋狂找人, 主要是如下這些方面的:
* 硬體研發(embedded & driver)
* 網站開發(web based application & database)
* 企業網管(MIS)
* 系統整合(SI)
* 教育訓練(當講師就是了)
其中, 感覺上與硬體相關的需求最多, 這或與台灣的硬體優勢有密切相關.
然而, 許多已經在這領域中工作的朋友, 卻很少出現在社群中或上來逛 BBS.
這倒蠻有意思的...
> 2.如果想就業,該取得哪些證照?
談到證照, 我奉勸如下:
* 不以證照為目的, 且不要以”輕易考取”為訴求. 重點是學到東西, 將根底打好.
* 不要依賴考古題取得證照, 就算高分 pass 也是徒然, 日後的苦頭可多著呢.
* 千萬別有”一步登天”的過度期望, 證照頂多是敲門磚而已, 真的硬仗是找到工作後.
* 哪種證照不重要, 找到工作後最好藏起來不要讓人知道, 否則會飽受其害.
若你真要考到證照才善罷甘休的話, 我建議先考 LPI Level 1 ,
然後不妨再考個 RHCE(這個很刺激! ^_^ ) , 之後或再回來考 LPI Level 2 .
啊... 這僅是個人建議, 參考一下就好. 一切以自己的實際來評量.
> ps:小弟自學Linux約一年,只是想知道這方面的專長能否為自己在就業市場加分。
多學一門技能, 總是有好處的!
當你與別人一樣處於同一起跑線時, 若你還能大聲說”我會 Linux”, 當然會有加分效果.
但我還是一再強調: 個人特質於實力, 才是真正加分的東西!
只要你真得是塊料子, 在現今資訊網路發達的年代, 是絕對不會被埋末的!
相反, 若是虛有其表, 招搖撞騙, 同樣的, 發達的資訊也很快判你 game over.
順道一提我個人對學習 linux 的一些看法好了, 或更有助你正確判斷適合自己的選擇.
Linux 這領域博大精深, 越學越無知.
最好不要套用其它系統的學習模式進來學習 Linux .
很多上層的應用面(不管是 desktop 或 server)進步很快, 學也學不完, 追也追不上.
至為需要的是自我學習的能力, 也就是需要”給我時間與 gogle 就能搞定!”這樣的能力.
這樣的能力關鍵是在於底層的基礎要打得紮實(不管是系統還是網路還是硬體),
其次就是 documentation 的能力(如何在最短時間內從漫山的資訊中過濾出你要的).
與上層應用相反, 這些基礎能力通常都是”不變應萬變”的!
只要你真的(我再強調”真的”!)學到了, 那就一輩子都受用無窮!
( learn once useforever!)
若你真的打算到補習班去進修, 最好打聽一下老師的教學風格.
看看是否合符你的學習要求?
同時, 在學習過程中, 先不要急著追求上層的應用,
花時間吸收老師的每一節課程, 尤其是關於 Linux 系統基礎的章節.
碰到不懂的, 盡量發問, 問到你自己能夠理解為止.
千萬別含糊帶過, 否則問題會滾學球般越來越大! 切記切記!
當然了, 自我的鍛煉也是非常重要的, 不能光靠上課那數小時.
請牢記我的這個忠告: 用你的手去記憶, 而不是耳朵或眼睛!
最後, 祝學習愉快! 前(錢)途無量!
--
======= http://www.study-area.org =======
風雨送春歸﹐飛雪迎春到
已是寒崖百丈冰﹐猶有花枝俏
俏也不爭春﹐只把春來報
待到山花爛漫時﹐她在叢中笑﹗
October 8th, 2005 — GNU/Linux
這一個軟體「hdparm」它可用來調整 IDE 硬碟的參數
,以求得到最佳效能。
很多人的測試下,證實 hdparm 的確可以增進硬碟的
效能,假使 HDD 規格越差,那麼增強的效果會越明顯!
(尤其是 NB’s HDD)
經過 hdparm 調整參數後,確實會有「些微」效能增加!
所以提出來跟大家分享,有興趣的朋友不妨試試看。
安裝完後,可以簡單的對自己的硬碟做一些基本檢測:
1:# hdparm -Tt /dev/hda
(可對 hda 做效能測試,會得到這顆硬碟的效能測試數據)
2:# hdparm /dev/hda
(可察看一下目前 hda 的參數設定狀態)
3:# hdparm -i /dev/hda
(可察看 hda 詳細資訊狀況與支援類型)
4:# man hdparm
(工欲善其事,必先利其器,man hdparm 這是一定要的)
了解 hdparm 的參數用法後,就可以來對硬碟做最佳化設定。
1:# hdparm -c3 -m16 /dev/hda
(打開 32-bit 存取模式,對於舊款硬碟,可提升加倍效能)
2:# hdparm -d1 -u1 /dev/hda
(反遮 IRQ 中斷,開啟 DMA 模式)
3:# hdparm -d1 -X udma5 /dev/hda
(開啟 Ultra DMA5 模式,ATA100/133)
4:# hdparm -c3 -m16 -u1 -d1 -X udma5 /dev/hda
(hda 火力全開,效能全開模式)
如果對以上參數的意義還不甚清楚的話,請務必 man hdparm!
或者查看 /usr/share/doc/hdparm/* 會有詳盡的說明!
修改開機啟動設定:
由於 hdparm 設定的參數,不能延續到下一次的開機,
若希望系統可以在每次開機時,都已做好最佳化參數設定,
那得必須修改 rc.local 檔,或者在 rcS.d/* scripts 加入
hdparm 的參數設定,如此可確保每次 reboot 後,依然
保有原先的 hdparm 設定值。
後記:
hdparm 除了在效能調教以外,對於電腦的電源管理也
很實用!若對 hdparm 電源管理有興趣,不妨參考:
http://www.gentoo.org/doc/zh_tw/power-management-guide.xml
October 8th, 2005 — GNU/Linux
LPI Level 2 考的範圍很廣,這不是一本書可涵蓋完的!
可先從「The LPIC-2 Exam Prep」來讀:
http://snow.nl/dist/xhtmlc/index.html
接著必須往 L-2 的「Detailed Objectives」細讀,
對於「key item」要能夠多練習,多看「man page」。
http://www.lpi.org/en/lpic.html
再來需針對「objectives」來找「書籍」或「網路資料」。
http://www.tenlong.com.tw/
http://www.google.com.tw/linux
考前,當然要多看看「其他人考過 L-2 的心得分享」!
另外也可多做「考古題」,增加對於英文題型的熟悉度!
http://phorum.vbird.org/viewforum.php?f=7
http://moto.debian.org.tw/viewforum.php?f=31
有關 LPIC 的三級介紹,詳細內容與考題範例說明:
https://www.lpi.org/zh_tw/lpic.html
Exam 201:Detailed Objectives
https://www.lpi.org/en/obj_201.html
Exam 202:Detailed Objectives
https://www.lpi.org/en/obj_202.html
有人曾說:
「其實 L-2 考的東西不難!」
「最難的部份就是,『掏出錢來報名……』」
October 8th, 2005 — GNU/Linux
分享心得:「如何讓 X 可以支援寬螢幕顯示器」
(以 Intel 855/852GM 為例)
首先,到這兒:
http://xtiming.sourceforge.net/cgi-bin/xtiming.pl/
輸入機器的寬螢幕解析度,例如:1024×600… 等等
然後輸入螢幕的 Refresh Rate (掃瞄更新頻率)。
之後會得到一組 XFree86 Modeline,例如:
ModeLine “1024×600@60″ 48.11 1024 1056 1232 1264 600 612 618 631
接著來編輯 /etc/X11/XF86Config-4 找到 Section “Monitor”
把這一組 ModeLine,完整的加入到 Section Monitor 下方。
然後再找到 SubSection:
在 “Display” 的地方,把寬螢幕解析度加入到下方 Modes 之中。
例如,原本的設定是這樣:
Modes “1024×768″ “800×600″ “640×480″
改為:
Modes “1024×600″ “1280×768″ “1024×768″ “800×600″ “640×480″
(也就是把寬螢幕解析度寫入 Modes 中而已)
接著儲存離開,並重新啟動 X
# startx
如果以上方法,無法直接順利驅動寬螢幕解析度,
則必須在搭配 855resolution 這軟體。
安裝完畢後,可在 /etc/rc?.d/ (依照你的 Runlevel)
加入開機初始設定,假使螢幕解析度是 1280×768 則下:
# 855resolution 5c 1280 768
以 Intel 內建的顯示晶片 (855/852) 來講,假使純粹
修改 XFree86 Modeline,依然無法顯示寬螢幕,那麼
再搭載 855resolution,幾乎就都可以成功了!
September 28th, 2005 — GNU/Linux
同樣也是應急用,隨手寫的 CD 轉 MP3 手稿,需要 CDFS
與 LAME 支援才可,僅自家用,先記錄下來 (有空在改)。
#!/bin/bash
mntpoint=”/dev/scd0″
mntpoint2=”/mnt/cdrom”
echo -e “\n請輸入mp3編碼位元率 Kbps:”
read -p “(32 40 48 56 64 80 96 112 128 160 192 224 256 320) ” bits
echo -e “\n正在將光碟片掛載成CDFS格式\n======================>\n”
`sudo modprobe cdfs && sleep 3;sudo mount -t cdfs $mntpoint $mntpoint2`
lastnu=`ls -l $mntpoint2 |tail -n 1|sed ‘s/ \+/ /g’|cut -d” ” -f8|cut -d”.” -f1|cut -d”-” -f2`
echo -e “\n這片CD總共有$lastnu首曲目,開始進行轉錄.........\n”
for((i=1;i<=lastnu;i++));do
if [[ "$i" -lt "10" ]];then
`lame -h -b $bits -m s $mntpoint2/*0$i.wav ./0$i.mp3`
else
`lame -h -b $bits -m s $mntpoint2/*$i.wav ./$i.mp3`
fi
done
echo -e “\n<======================\n音樂光碟已經轉錄mp3完成!\n”
`sudo eject $mntpoint2 && sleep 3;sudo rmmod cdfs`
September 28th, 2005 — GNU/Linux
為了應急,替我的小黑 X40,隨手寫的 Full Backup
Script,僅自家用,先記錄下來 (有空在改)。
#!/bin/bash
mntpoint=”/mnt/backup”
hddstate=`mount $mntpoint 2> /dev/null && sudo chown cyj.cyj $mntpoint && df|grep sda5|sed ‘s/ \+/ /g’|cut -d” ” -f1`
declare -i freespace=`test -z $hddstate || df|grep sda5|sed ‘s/ \+/ /g’|cut -d” ” -f4`
bktime=`date +%F-%H%M`
backup_now() {
echo -e “\nBackup starting now!\n==================================>”
`mkdir -p $mntpoint/FullBK/$bktime`
bkpath=”$mntpoint/FullBK/$bktime”
bkpath2=”$mntpoint/FullBK/other”
`sudo cp -a /mydocs /EIO_Binders/ /bin/ /boot/ /dev/ /etc/ /home/ /lib/ /root/ /sbin/ /usr/ /var/ $bkpath2/* $bkpath`
`sleep 5;umount $mntpoint`
}
freespace_lt_10g() {
if !([ -z $hddstate ]) ; then
echo -e “\nIt’s too less freespace to backup!.. removing old backup files!\n==================================>”
oldfiles=`ls -l $mntpoint/FullBK/|head -2|tail -1|sed ‘s/ \+/ /g’|cut -d” ” -f8`
`sudo rm -rf $mntpoint/FullBK/$oldfiles;sleep 5`
backup_now
fi
}
freespace_gt_10g() {
if !([ -z $hddstate ]) ; then
backup_now
fi
}
if !([ -z $hddstate ]) ; then
if [ "$freespace" -lt "10240000" ];then
freespace_lt_10g
else
freespace_gt_10g
fi
echo -e “\nok! well done!\n<==================================\n”
else
echo -e “\nno usb_hdd interface found.\n<==================================\n”
fi
July 15th, 2005 — Index