2007年12月30日 星期日

中文姓名欄位長度有沒有跟著修改??


中文姓名欄位長度有沒有跟著修改??

中文姓名欄位長度有沒有跟著修改??





看看最近的新聞
http://tw.news.yahoo.com/article/url/d/a/071227/8/qo7s.html

爭取8個字名 原民婆婆累翻了

原文部份摘要:

拿到剛剛出爐的身分證,看著姓名欄裡的名字「黎百.辛系.拉拉庫斯」,心裡充滿激動。黎百.辛系.拉拉庫斯:「真的,我真的太高興了!我實在是感到很高興啦,總算我可以大聲地說,我是『拉拉庫斯』的孩子。」

原文部份摘要到此結束


在做系統設計時 , 關於中文姓名 , 一般都只會保留 4 個中文字長度 (如果是用 big5 編碼就是 8 個byte)
看一下上面的新聞 , 8個字的中文姓名 , 還要加上.的分隔字元 , 算算至少是10個中文字 , 就是 20 個 byte長度 ,

為何要談這個 , 因為這個會跟你的資料庫要保留的資料欄位長度有關 ,

同時也會跟你的報表設計有關

以報表來說 , 在設計時 , 一定會試著去套一些資料 , 然後看看欄位的內容會不會壓到隔壁的欄位 , 如果會 , 可能就要調整欄位間的間隔 , 字型大小等等 , 但是在套資料時 , 中文姓名決大部分都是使用3個字去套 , 根本就沒有想過要用到 10 個中文字的長度去套

另外企業要對客戶送出資料時 , 收件人的姓名也會置中 , 然後中間加入適當的空白,或者加大字型
但是那是 3 個中文字的作法 ...


所以除非你們的系統或是你們的客戶未來不會有原住民 ,
如果有的會, 就必需要考慮進行 , 有到 10 個中文字長度的中文姓名欄位....


問題是, 原住民的中文姓名(漢字翻譯姓名) , 長度加上分隔字元.最長的名字到底是多長?
誰能夠回答這個問題呢???

2007年12月21日 星期五

軟體介紹-Omondo- UML 繪圖工具(有免費版的) ,支援UML2

Omondo UML
這一套也是基於Java Eclipse 平台開發出來的UML繪圖工具 ,
所以需要Eclipse , 然後支援UML2的標準

重點是他們也是有釋出免費版

步驟很簡單:
到這個網頁去
http://www.eclipsedownload.com/download_free_eclipse_3.3.html

上面把你需要下載的檔案 ,都變成網頁的連結 ,所以你需要下載以下這五個檔案

Eclipse is required.
Bundled EMF (Eclipse Modeling Framework )
Bundled GEF (Graphical Editor Framework)
mdt-uml2-SDK
Bundled UML2
超連結都在上面的網址裡 , 直接跟著網址網頁裡面的超連結下載就是...

(1)解壓縮 eclipse-SDK-3.3.1.1-linux-gtk.tar.gz(注意這是Linux用的) ,會得到一個eclipse 目錄
(2)解壓縮 emf-sdo-xsd-SDK-2.3.1.tar.gz (會得到一個eclipse 目錄 , 請跟(1)的目錄合併)
(3)解壓縮 GEF-ALL-3.3.1.tar.gz (會得到一個eclipse 目錄 , 請跟(1)的目錄合併)
(4)解壓縮 mdt-uml2-SDK-I200709211011.zip (會得到一個eclipse 目錄 , 請
跟(1)的目錄合併) <---

然後把把(1) eclipse 目錄放到一個特定目錄如 /opt 下(變成 /opt/eclipse)

接著執行安裝動作
開啟終端機 執行以下指令,
sudo java -jar eclipseUML_E330_2007_freeEdition_3.3.0.v20071030.jar

接著會出現GUI安裝視窗 , 其中會詢問你的 eclipse裝在哪裡 ....

然後就是下一步 ,下一步裝好後


當然就是啟動你的 eclipse 來玩....

另一個免費而且支援UML2的UML繪圖工具

還是沒抓圖 ....有點懶

2007年12月11日 星期二

下載安裝離線版維基百科

下載安裝離線版維基百科


不需要一定要掛在網路上
<嗯 , 硬碟空間要夠大 , 如果妳想要下載英文版的 維基百科 , 如果是中文版的也不小 維基百科>

合不合法? 當然合法 , 在合理的使用範圍內

環 境的準備: (以下是以在 Ubuntu 環境下作說明 , Windows其實應該也適用)
請參閱我的

在UBuntu 7.10 上安裝設定 UBuntu Mediawiki

http://tw.myblog.yahoo.com/jw!9b0o7zqYEQTp3BKYq3oYpZO.gQ--/article?mid=578&prev=583&next=567

說 明 ,並且將 Mediawiki 安裝設定完成


注意:
在要繼續往下作之前 , 如果你已經在你的 Mediawiki上有編輯一些頁面了 ,請你自己想辦法把它備份下來 , 因為接下的動作可能清掉你原有的頁面....

八道程序完成下 載安裝好你的離線版維基百科....<不過你的硬碟空間要留夠...>

(1)下載離線版維基百科
下 載 維基百科備份檔
到官方網站頁面 http://download.wikipedia.org/
選 擇 連結 Database backup dumps (http://download.wikipedia.org/backup-index.html)

在 此頁面中 ,
如果是中文版維基百科 , 尋找 zhwiki
如果要英文版維基百科 , 尋找 enwiki

這裡我們使 用 中文版維基百科 作範例
到此頁面中
http://download.wikipedia.org/zhwiki/20071119/
All pages, current versions only.
pages-meta-current.xml.bz2 239.6 MB
( http://download.wikimedia.org/zhwiki/20071119/zhwiki-20071119-pages-meta-current.xml.bz2)
將 它下載下來 ,下載完成後, 千萬不要把它解壓縮...

(2)清除相關既有頁面資料
使 用 MySQL QueryBrowser 連線 MySQL
Server Hostname: localhost
UserName: root
Password: XXXX
然後資料庫選擇 wikidb
輸入以下指令 , 並執行
delete from page;

delete from revision;
delete from text;

(3) 準備匯入工具所需要的環境
在這裡 ,你必須要安裝好 JDK , (Ubuntu下套件管理程式選擇 sun-java5-jdk ,如果套件管理程式有附件套件提示需要選擇 ,也請選要安裝)
而且 MySQL JDBC Driver 也需要安裝(Ubuntu下套件管理程式選擇 libmysql-java (這是JDBC Driver for MySQL) ,如果套件管理程式有附件套件提示需要選擇 ,也請選要安裝)

(4)下載匯入工具
請 下載此工具 , 到你的機器上 , 假設下載到你的桌面上
http://download.wikimedia.org/tools/mwdumper.jar

(5) 匯入動作前的注意事項
在這裡因為是只匯入中文部份的維基百科條目(檔案只有幾百MB) , 所以有些相關的參數設定 ,都只需要預設值就可以執行

如果你是要匯入英文版的維基百科 , 那包含 MySQL , 跟Java的參數都需要再微調

(6) 執行匯入動作
以下動作 ,會跟你的電腦速度有關 , 可能至少要作一兩個小時 , 不過在同時間 ,你還是可以使用電腦
現 在開啟一個命令列視窗 , (我們假設下載下來的資料檔跟匯入工具都放在桌面上)
輸入以下指令(下面這是一行指令)
java -jar mwdumper.jar --format=sql:1.5 zhwiki-20071119-pages-meta-current.xml.bz2 | mysql -u root -p wikidb
接 著會出現 Enter Password , 請輸入你的 MySQL 的 root 的密碼

接著 就會開始進行匯入流程 , 有點久 , 所以請有點耐心
在匯入完成後....

(7)下載 Mediawiki需要的 extensions
ㄟ 還不能好好的看到離線版的維基百科 ,
我們還需要下載Mediawiki的相關 extensions

我們需要透過 SVN去取回相關的 extensions , 當然透過 Firefox 從Web介面也可以取回
到這個網址
http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions

請 對應以下 目錄結構 , 在你的本機的/var/lib/mediawiki1.10下的手動建立四個子目錄
extensions\
+->ParserFunctions
+->Cite
+->CategoryTree
+->wikihiero
然後到上述網址
http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/
把之下的 php檔下載並放到對應的目錄下
extensions\
+->ParserFunctions\

(以下類推 , 自己作)
http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Cite/
http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/CategoryTree
http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/wikihiero

如 果你想要使用 SVN 一次把目錄跟檔案拉回來也是可以 , 請參考最下方的參考文件說明

(8)修改 LocalSettings.php
執行以下指令
sudo gedit /etc/mediawiki1.10/LocalSettings.php
加上以下幾行
require_once("$IP/extensions/ParserFunctions/ParserFunctions.php");
$wgUseTidy=true;
require_once("$IP/extensions/Cite/Cite.php");
$wgUseAjax = true;
require_once("$IP/extensions/CategoryTree/CategoryTree.php");
require_once("$IP/extensions/wikihiero/wikihiero.php");
然 後存檔離開

*注意事項:
在Windows 上修改 LocalSettings.php 要小心 ,特別是如果你用記事本(NOTEPAD.exe)修改存檔的話 ,
小心出現存檔後 ,你的 Mediawiki 會出現 甚麼 header 已輸出的錯誤訊息 ,
那是因為php 會預設使用 UTF-8編碼存檔 , 但是Windows上的UTF-8據說有些古怪 ...,
如 果你不幸碰到了 ,請下載 UltraEdit試用版 , 來重新開啟 Localsettings.php
然後透過 UltraEdit的轉碼功能 轉換 ,然後存檔

(9)開啟你的Mediawiki , 就可以看到離線版的中文維基百科
http://localhost/mediawiki

使 用心得, 發現有些分類還是沒有在本機上 , 而且發現簡體中文的條目數竟然多過繁體中文 , 所以像是有些公司的介紹 ,即便是全球化公司 , 上面的內容也只提到大陸的據點 ,而不會提到台灣

*參考資料
官方網頁參考資 料
http://meta.wikimedia.org/wiki/Data_dumps
< 這一篇 , 有十分詳盡的參數修改說明 , 包含 MySQL參數的修改 , 如果你要匯入英文版的維基百科, 建議照著作>

這裡 就提到為甚麼要提供維基百科的 dump 出來
Wikimedia provides public dumps of our wiki's content:
  • for archival/backup purposes
  • for offline use <-- 為了可以離線使用
  • for academic research
  • for republishing (don't forget to follow the license terms)
  • for fun! <-- 為了高興 ,好吧...
所以個人安裝 離線版的維基百科來使用是完全合法的....不過要注意授權

我參考的 另一邊大陸網友的說明文章(架設Wikipedia的本地鏡像)
http://www.xxlinux.com/linux/article/network/server/20070904/9623.html


終 於把它寫完了, 我的步驟基本上都是測試過的 , 包含 MySQL沒有像參考網頁那樣去異動任何參數 ,也可以成功完成(剛好因為 中文維基的檔案比較小 幾百MB)

好吧...好好享受你的離線版維基百科
<其實, 我只是想要離線看 編輯手冊....>

2007年12月9日 星期日

在UBuntu 7.10 上安裝設定 UBuntu Mediawiki

在 Ubuntu 7.10 上安裝 UBuntu 版的 Mediawiki 很簡單 , 只需要跟我這樣作

我查過 國外的討論區 , 或者是 大陸那邊的討論區 , 他們的安裝設定都太過繁瑣 ,
而且不保證可以成功

如果你想在 UBuntu 上面安裝 Mediawiki , 就跟著我按照以下的步驟進行
以下會用幾乎是笨蛋法的方式(就是透過 Synaptic套件管理程式 去完成大部分的安裝步驟)

要安裝 Mediawiki , 共有以下幾個套件主體需要安裝
  • MySQL
  • Apache
  • PHP5
  • Mediawiki

(I)安裝 MySQL
使用 系統->管理->Synaptic套件管理程式 搜尋 mysql ,
然後選擇 以下三個 , 選擇之後 , 系統如果提示要安裝其他附屬套件 , 就回答 是
mysql-server
mysql-client
mysql-admin
安裝過程 , 系統會詢問 MySQL 的 root 的密碼 , 請您輸入您要的密碼(自己要記得...)

(2) 安裝 Apache2
使用 系統->管理->Synaptic套件管理程式 搜尋 apache2 ,
然後選擇 以下這一個 , 選擇之後 , 系統如果提示要安裝其他附屬套件 , 就回答 是
apache2

安裝完成後 , 請確認安裝是否成功 ,
開啟 Firefox 輸入 http://localhost , 如果成功會看到以下的畫面


















(3)安裝 PHP5
使用 系統->管理->Synaptic套件管理程式 搜尋 php5 ,
然後選擇 以下這兩個 , 選擇之後 , 系統如果提示要安裝其他附屬套件 , 就回答 是
php5
php5-mysql

開啟 Firefox 輸入 http://localhost , 如果成功會看到以下的畫面
<畫面上會多出PHP 的字樣>


















建立測試的php 頁面 , 我們開啟gedit 輸入以下內容 然後存檔成 index.php














開啟終端機視窗 , 輸入以下指令
cd /var/www/
sudo mkdir myphptest
sudo cp ~/Desktop/index.php /var/www/myphptest/

開啟 Firefox 輸入 http://localhost 應該可以看到 多了一個連接myphptest , 點進去 ,



















應該會正常出現畫面 標題會是 Hello World


到此確認 Apache + PHP5 安裝成功
為何會多作這個測試 , 是因為有的時候 , 我們在安裝php5 + apache 時 , 系統並沒有正確的吃到設定值
<之前就是跟著國外網站或是大陸網站改了一堆設定值後 , 發現有問題 , 所以才多此測試>

<是的 , 使用 Ubuntu 內建的套件 , 你千萬不要太勤勞 , 自己去改設定>


(4)安裝 Mediawiki 檔案
使用 系統->管理->Synaptic套件管理程式 搜尋 mediawiki ,
然後選擇 以下這個 , 選擇之後 , 系統如果提示要安裝其他附屬套件 , 就回答 是
mediawiki

裝完請重開機 , 很笨 , 但是可以確保設定檔沒問題...

(5)唯一的手動設定修改
開啟終端機視窗輸入以下指令
cd /etc/mediawiki1.10
sudo gedit apache.conf

只需要將 #Alias /mediawiki /var/lib/mediawiki1.10 前面的 # 拿掉就可以了
改成 Alias /mediawiki /var/lib/mediawiki1.10
然後存檔




























接著執行以下指令重新啟動 Apache2 , 讓mediawiki 的設定生效
sudo /etc/init.d/apache2 restart


(6)設定Mediawik
開啟 Firefox 輸入 http://localhost/mediawiki/
會出現以下畫面 , 請直接點選畫面上連結進入設定畫面























看到以下(1) 的提示 , 表示你的環境設定是 OK 的可以進行安裝 Mediawik
在(2) Wiki name 欄位輸入你的 Wiki 名稱 , 我的設定值是 myDemoWiki
在(3)Language 欄位 選擇zh-tw 中文(台灣) , 當然預設值是en 英文 , 你可以直接用預設值
在(4)Password 密碼欄位 , 輸入你的Wiki 管理者(WikiSysop使用的密碼 , 請輸入 , 自己要記得




接著下拉畫面 , 在 Database config 的地方
在這裡 , Mediawiki 會建立一個DB Name 為 wikidb , 然後DB User 為 wikiuser
請在(5) 的 DB Password 欄位輸入給 wikiuser 使用的密碼

然後在(6) Use superuser account 這裡打勾 , 因為
然後在(7) 的地方填入mysql 的 root 帳號的密碼

<這裡不需要手動預先建立 wiki 需要的DB 跟 User >

然後按下(8) Install MediaWiki




如果一切順利的話 , 你會看到以下畫面 ,
在(A) 的表示安裝成功,
沒問題的話 , 我們就點選 (B) this link 進入 Mediawiki






















在安裝設定的初次畫面中 , 你會在首頁 http://localhost/mediawiki/index.php 看到以下畫面
請開啟終端機視窗 , 輸入以下指令
sudo -i
mv /var/lib/mediawiki1.10/config/LocalSettings.php /etc/mediawiki1.10/
注意 , 上面的路徑 , 是跟UBuntu Mediawiki 目前安裝的版本有關 , 如果你的版本不一樣的話 , 請修改你的指令

請注意看一下下圖,如果你沒有執行上面那兩行指令的話 ,應該會出現下面的提示畫面
請你搬移 config目錄下的 LocalSettings.php 到上一層目錄(
/var/lib/mediawiki1.10/)

但是請往上一張圖去看 ,剛剛安裝完畢的提示訊息是請你把
config目錄下的 LocalSettings.php 搬移到 /etc/mediawiki1.10/目錄下
這兩者 其實都可以 , 但是UBuntu的設定慣例會比較偏向所謂的Server設定方式 ,也就是把設定檔統一放到 /etc/的對應目錄下 , 然後設定所謂的 連結 , 指過去


























重新整理 你的 Firefox , 或者是重新輸入 http://localhost/mediawiki/index.php 就可以了


































附記事項:
1.為何這裡一直說是 UBuntu 版的 Mediawiki , 因為 它會跟你從 Mediawiki 下載回來的 Mediawiki 的安裝設定程序不太一樣 ,
UBuntu 版的套件 , 會把原來的來源 , 拆成 設定檔 , 程式檔 , log 檔 , 變數等等 ....
會跟原始的套件位置不太一樣
UBuntu 版的 Apache2 跟你從Apache下載回來的 Apache2 , 目錄位置會不太一樣

不過 , 反正用 UBuntu 就是要省事 , 能夠不要去動設定的話 , 就不要去動

2.這整個的安裝步驟中 ,
嚴格的來說 , 我們只有真的手動去修改了一個設定檔 apache.conf (/etc/mediawiki1.10/apache.conf)
跟手動搬移了一個
LocalSettings.php (不過不管你用那一版都需要作這件事)

所以在 UBuntu 7.10 上安裝 Mediawiki 沒有太複雜 , 按照上面的步驟作就一定會成功...

2007年12月8日 星期六

挑選 Notebook 筆記型電腦的幾項選項指標

這兩天資訊月要閉幕了 , 想搶便宜的可以去看看

挑選 Notebook 筆記型電腦的幾項選項指標
1.螢幕大小 (  12" , 13.3" , 14" , 15" )
2.重量     (   1.5 kg , 2kg , 2.5kg , 3kg)
3.出風口位置 (左方 , 右方 , 正後方)
4.熱度     
5.風扇音量

檢查項目: 螢幕是否有亮點

1.螢幕大小 (  12" , 13.3" , 14" , 15" )
螢幕越小 ,當然體積也會小 , 重量也會變輕 , 但是字體也會變小...
所以怕傷眼的還是挑自己能夠接受的大小
<注意事項: 有些超輕薄機型會沒有內建光碟機 而必須外接光碟機 , 所以要注意>

2.重量     (   1.5 kg , 2kg , 2.5kg , 3kg)
機器當然是越輕越好 , 但是也會看你選擇的螢幕大小而影響( 2 ~ 2.5 kg 大概是一般可接受值)
      

3.出風口位置 (左方 , 右方 , 正後方)
出風口在正後方是最好的 , 不管左手或是右手都不會吹到熱風

4.熱度
把手放到鍵盤跟面板區 , 摸摸看會不會太燙...自己會不會受不了(現在可是冷冷的冬天 , 到夏天你就知道...)
   
5.風扇音量
在一間小房間 , 如果你一直聽到風扇呼呼的聲音 , 那可真的會令人受不了
(不過在資訊月會場現場太吵了 , 所以聽不出來...)



ㄟ , CPU , 記憶體 , 硬碟大小 , 獨立顯卡 , 怎麼都沒提?
現在的CPU 其實速度已經都差不多了 , 告訴我 2.0 GHz 跟 1.8 Ghz 對你的差別在哪裡?

記憶體 , 現在的資訊月機種都是 1 GB 起跳 , 只有少數是512 MB , 而且還會再送你 1 GB
以一般使用者來說都夠了

硬碟 120 GB 跟 160 GB 硬碟對一般使用者來說也都夠了

獨立顯卡 , 除非你玩 3D遊戲或是繪圖軟體
否則對你的影響也不大

所以我把前面 5 項列為重點指標 , 其他像品牌或是價格 ,
如果當你已經先決定好前面 5 項指標了, 你就有一些基本選擇了

假設有兩台機器 , 一台是 Acer 一台是華碩 , (或者再舉其他品牌  Toshiba , Thinkpad 這裡只是舉例)
但是前五項指標中 , 某一台機器的熱度比較高 , 風扇比較吵 , 請問你會選那一台?
你還是會先挑品牌嗎?

當然這些是我個人的觀感 , 剛剛幫妹妹(一般使用 , 無特殊需求)這些指標讓她挑好一台筆電 買好使用中

2007年11月25日 星期日

Ubuntu 省電的工具軟體

這是我在網路逛得時候看到的
原文連接在此 , 找到浪費電的元兇


1. 你只需要在Ubuntu 的套件管理員中尋找 Powertop 然後安裝就可以了
2.安裝完成後不會有功能連結出現
  所以你要自己 開啟終端機視窗 , 輸入 powertop
3.畫面上會出現中文的說明提示  , 你可以根據提示按一下對應的按鍵
  程式就會自動幫你進行調整

根據測試的結果 , 我的Notebook 在使用電池的狀態下 , 感覺上是有撐得比較久
<風 扇感覺上也沒有那麼狂吹了...>

不過要注意的是 , 我不確定使用 AMD 的CPU 的電腦是否也能被支援...

2007年11月23日 星期五

尊嚴_當幸福來敲門_東大特訓班


尊嚴_當幸福來敲門_東大特訓班2007/11/23 15:21

尊嚴 , 當幸福來敲門 , 東大特訓班
這三者的關係在哪裡?

尊嚴 這篇文章是別人轉寄給我的
李家同教授寫的 , 裡面談到了窮人的尊嚴
(有興趣的人 , 可以用 Google , 輸入 尊嚴 李家同 就可以看到)
文章結尾摘要如下:

因為老楊知道窮人最需要的不是麵包而已,而是尊嚴。老楊當義工時的態度,無非是要使窮人感到尊嚴。
...

我們通常會說我們應該同情窮人,要對窮人有慈悲心。老楊顯然在告訴我們,我們該尊敬窮人,因為他們最缺乏的就是別人對他的尊敬。這種想法,來自一個數字:六十八。
老楊常常強調數據的重要性,他是對的,因為這個數字改變了他的一生。
摘要到此結束...

當幸福來敲門 , 應該有不少人看過這一片 , 一個貧窮的爸爸帶著兒子 ,為了生活東奔西跑的 , 甚至連房租都付不出來 , 然後不知道自己的晚上有哪裡能夠過夜或是吃飯 , 要拼老命在人流中排隊 , 就為了收容所可以有一頓晚飯 , 有一個地方可以安睡 , 貧賤夫妻百事哀 , 沒有錢 , 被人催房租 , 老婆一個人要兼兩個班 , 被錢追著跑 , 慘到一個不行...


你告訴我 , 窮人的尊嚴在哪裡? 這是我看完 尊嚴 這篇文章 還有 當幸福來敲門 這一片的直接感受
如果你是一個為了生活費東奔西跑的窮人 , 當你連下一餐的著落在哪裡都不知道的時候 , 你真的還會有所為的尊嚴嗎?
<
我並不是對李家同教授不尊敬 , 相反地我很尊敬他 ,
至少跟李遠哲比 , 我會認為李家同教授是個學者 , 至少談的做的都是學者該做的
>

再看到東大特訓班 , 這部漫畫 , 我會直覺的反映出上述了論點 , 有些文章 , 你不能直接的去看字面上的說明 , 你必須要去深思 背後的意義
同時記得 東大特訓班漫畫中提到的 "社會的遊戲規則" , 規則一定是由較強者制定的 ,
所以你可以了解到 窮人有沒有尊嚴這件事 , 不是由窮人制定的 ,

其中從 "尊嚴" 這篇文章中, 你也可以發現到裡面寫的是一個有錢人對窮人的感受 , 而不是一個窮人對於窮人的感受...有錢人要不要尊敬窮人(給窮人尊嚴) 是由有錢人決定而不是由窮人決定

雖然很現實 , 但是這社會的遊戲規則就是如此(看東大特訓班 入迷了)


如果你是個窮人 , 當你看到 "尊嚴" 這篇文章 , 你還會全然接受的話 , 我只能說 , 你大概沒有翻身的機會了 , 因為 這篇文章是寫給有錢人看的 , 是有錢人對於窮人要尊敬的說法>

當你是個窮人 , 你還期待別人要尊敬你的時候 , 可能你就只能當一輩子的窮人了...

看一下 當幸福來敲門 , 那個窮爸爸帶著兒子有一餐沒一餐的慘狀 , 那種晚上沒有地方睡的極度不安全感 , 必須為了晚上有地方睡跟插隊的人大吵 , 尊嚴在哪裡?

只有當你能夠有一個穩定的工作 , 生活有著落 , 不再擔心下一餐在哪裡的時候 , 你才有基本立場談尊嚴...
<
再次強調 ,
我並不是對李家同教授不尊敬 , 相反地我很尊敬他 ,
至少跟李遠哲比 , 我會認為李家同教授是個學者 , 至少談的做的都是學者該做的
>

東大特訓班-考試內容反映出學校想要的學生類型


東大特訓班-考試內容反映出學校想要的學生類型

2007/11/23 14:16
其實從漫畫也可以學到一些經驗
漫畫 東大特訓班

裡面提到考試內容 , 可以反映出學校想要的學生類型
(日本大學聯考好像是兩段式考試 , 第一段是中心考 , 第二段是各大學的複試 , 在第二段各大學的考試內容會不一樣)

從這裡我們可以看一下某些公司對於 IT 人員的要求或者是求職考試 ,
應該也是要能夠反映出他們要的是甚麼樣的人才

有些公司會考國文 , 英文 , 智力測驗 , 或者是一些其他有的沒有的,

<之前 , 我還碰過 , 某一家公司 , 要你在半個小時內用 VB 寫出一個月曆(不能使用現成的月曆控制項)>
<另外有一家 , 是因為他們公司使用的某套軟體是外國廠商的 , 但是是很冷門的軟體 (好像國內大廠常常會有錢買一些怪東西進來)>

但是你也可以在網路上看到有些人反應某些公司在求才時候開出的技能要求 , 就是要包山包海的那一種(要會寫程式 , 會網管 , 會Web應用程式 , 會資料庫, 會美工 , 會....)

這個反映出 , 那家公司應該是很小的公司(人數很少 , 所以才會要求要全功能集於一身的通才) ,
另外一個可能就是公司的負責人員對於公司需要甚麼樣的人完全沒有概念 , 所以亂開一通 , ....
<這類型的工作 , 通常是薪資低 , 又很瞎忙的那種...>
<通常IT部門越大 , 分工就會越精細 , 只有像小工廠之類的MIS才會包山包海>

同樣的 , 如果面試的時候 , 問你能不能配合加班 ,
後面可能也有幾種意思 , 一種是公司很忙 , 常常需要加班 ,
需要加班 , 也有幾種意思, 一種是人力不足 , 一種是工作過重
即便是加班還有分是有加班費的還是沒有加班費的 ...

下次如果再看到有類似的求職考試或是面試 ,
根據考試的內容 , 你可以先思考看看對方到底想要的是那一種類型的人才...

2007年11月19日 星期一

Ubuntu CUPS 產生PDF 問題處理

Ubuntu CUPS 產生PDF 問題處理

Ubuntu 內建虛擬印表機 , 有兩個
一個是 PostScript 可以產生 .ps 檔
另一個是 CUPS 據稱可以產生 pdf 檔

但是經過試用的結果 . 透過CUPS 產生的 pdf 檔 , 沒有辦法使用Adobe Reader 開啟

所 以這個時候就要用怪招...
1) 使用 CUPS 或 PsotScript 列印到檔案 , 存檔成 xxx.ps
2) 使用指令 ps2pdf 轉換 .ps 變成 .pdf
   EX: ps2pdf xxx.ps xxx.pdf
3) 這樣就可以使用 Adobe Reader 正常的開啟 xxx.pdf 了

雖然有點笨且麻煩 , 不過它能夠正常的 Work

2007年11月15日 星期四

Google 手機作業系統開發套件 - android sdk 試玩

Google 手機作業系統開發套件 - android sdk 試玩
<別問我 , 為何這個時間會出現在網路上 , 因為失眠很嚴重...>

Google 的手機 Gphone 沒出現但是
Google 推出的是一個開放作業平台android

它的開發套件 android SDK 也已經可以下載
開發套件支援使用不同作業系統平 台的開發人員

下載網址
http://code.google.com/android/download.html

共 有
1.Linux (android_sdk_linux_m3-rc20a.zip)
2.Windows (android_sdk_windows_m3-rc20a.zip)
3.Mac

你需要有已經安裝並設定好的 JDK 1.5/1.6 的環境

(a) 下載套件

(b) 解壓縮套件
以 下以我使用的Ubuntu 7.10 Desktop 來作說明
下載之後解壓縮 android_sdk_linux_m3-rc20a.zip
得 到一個子目錄 android_sdk_linux_m3-rc20a

(c) 搬移 SDK 到 /opt 目錄下
將 它搬到 /opt 路徑下
完整的路徑為 /opt/android_sdk_linux_m3-rc20a
(使用Windows 的人自己找地方放)

(d) 修改環境變數
然後需要修改 PATH 變數
在 Ubuntu 7.10 中是修改 ~/.bashrc 這個檔
新增以下內容到 ~/.bashrc
#200711 Google Phone SDK
export PATH=$PATH:/opt/android_sdk_linux_m3-rc20a/tools
然後存檔 , 試著開啟一個 終端機 , 如果有錯誤訊息, 則表示你在 .bashrc 這個檔案中的設定有錯
如果有錯 請自己檢查

(e) 啟動手機模擬器
試著開啟一個 終端機 , 輸入以下指令
cd /opt/android_sdk_linux_m3-rc20a/tools
./emulator

接 著會出現 一個手機模擬器的畫面
手機的介面仍然是英文的
p1.jpg



































注意:
初始畫面會有點久 ,
(會出現紅光閃閃閃 , 作這玩意的人 ,
當初應該是 霹靂車 影集的影迷...要有點年紀的網友才會有看過霹靂車的影集...)
p2,jpg






































































特別是當你沒有連結在 Internet 環境時 , 它會出現錯誤訊息
但是仍然可以使用

手機裡 面包含 Google Search & Google Map (當然 , 如果你沒有連線到 Internet 這兩個功能是無法使用的)

試 著叫出Browser ,




輸入 Yahoo ,
p4.jpg




































找到 Taiwan , 點選 ,
p5.jpg




































可以出現 中文的台灣奇摩 顯示無誤
p6.jpg



































(不過目前沒有辦法有手機內建的輸入法去輸入中文)

試著叫出 Google Map ,
p7.jpg


































顯示台北市的地圖 (中文顯示是可以的)
p8.jpg


































<如果你是在 Windows 平台的 , 請自行處理對應的設定 , 因為目前我的環境只有 Ubuntu 可以用>

<待續...開發工具設定 Eclipse & Plug-in>

2007年11月14日 星期三

效能測試工具 JMeter 簡介

效能測試工具 JMeter 簡介

Java版的 Web 效能測試工具 JMeter

官方網站在此
http://jakarta.apache.org/jmeter/

可以進行 Web 站台的效能測試

有些商用系統如 Business Flow 之工具
它會需要在 User 端安裝 Plug-in 之類的套件 ,
並且需要使用者在使用 Web Browser時搭配 Plug-in 去執行啟動流程 , 核可流程之類的動作
而且會需要進行 使用者帳號的整合驗證的話

使用Jmeter 可能就不太適合(因為可能會抓不到對應的網頁可以測試)

2007年11月9日 星期五

推薦漫畫-東大特訓班


推薦漫畫-東大特訓班

東大特訓班
這是這兩天在看的漫畫 , 目前出版到第18集
(根據網路上查到的資料 , 有出日劇 . 老師是阿部寬 主演的 , 另一個關鍵字是 "龍櫻" , 不過日劇因為漫畫仍在連載的關係 , 無法等到漫畫連載完成 , 所以日劇部份有一定部份的自創劇情)

故事的背景是 某私立高中因為經營不當(招收不到一定人數的學生)導致學校幾近破產
一名律師處理該校的律師決定重整該校

而打出 東大保證班的口號 , 3年送100名學生去上東大(是東京大學 , 那個是日本漫畫 , 所以不會是東海大學...)

好了 , 雖然是校園漫畫 , 不過這不是麻辣教師 GTO ,
裡面講的學習的技巧 , 考試的技巧 , 記憶的技巧 , 甚至是思考的技巧...
要用正面的態度去思考與面對問題
裡面講解了 國文 , 數學 , 英文 , 物理 , 歷史等學習技巧

這些所有的技巧是包含了相當的科學根據...
它被原著者轉換成了故事放在漫畫裡面

這套漫畫適合推薦給
1. 學生(國中/高中) , 怎樣有效的學習
2.家長 <- 考生的家長應有怎樣正確的態度 去面對考生 , 而不給考生壓力與負擔
3.學校老師
4.出題者

看了這部漫畫 只能說相見恨晚 , 因為我早已過了學生時代
不過還有很多小朋友 , 現在仍在學 ,你們還來的及

在看的時候  , 也會回憶起求學過程中 , 某些老師曾經試著這樣作 , 這些老師的用心...


上面講到了學校的老師跟出題者 ,
漫畫中 , 提到了一些出題者的技巧跟應考者與出題者的對話,
也反應出來 , 一個好的題目 , 背後會被賦予一些隱含的關鍵內容 , 以及如何正確的閱讀跟解讀題目...
<我是不太確認我們國內那些大考中心的教授們是否有認真的學習過如何出題
因為每年都會有些題目的答案是引人爭議的 , 這點漫畫裡面有提到出題者應如何避免
>

這部漫畫是我衷心的推薦 , 先用了這些技巧的學生將會有更多的優勢去有效的學習

2007年10月25日 星期四

目前在工作機上得UBUNTU上得作業軟體

分類 功能 軟體名稱 備註
遊戲 遊戲模擬器 xmame mame(Windows)
遊戲 USB GamePad usbview

P2P P2P aMule eMule(Windows)
影音 DVD播放 VLC Media Player PowerDVD(Windows)
IM IM Gaim MSN/GoogleTalk
Web 瀏覽器 FireFox MS IE(Windows)
辦公 辦公軟體 Open Office MS Office(Windows)
文件 PDF Viewer Evince Adobe Reader(Windows)
編輯 編輯軟體 Gedit Notepad/UltraEdit(Windows)
壓縮 壓縮軟體 rar WinRAR(Windows)
字典 字典軟體 星際譯王

字典 發音軟體 Festival(語音合成)

中文 輸入法 新酷音(注音)

























2007年10月23日 星期二

有片就看-荒野大飆客


有片就看-荒野大飆客

荒野大飆客

完全是看到某個部落格友的介紹(抱歉 因為是到處逛逛 所以不記得是哪個部落格友了)
所以才興起想要去租 dvd 來看的念頭

四個中年阿伯摩托車爆笑日記 笑點不少
四個看起來老實本分的阿伯 有工作 有家庭 有小孩

唯一的興趣 就是四個人一起出去騎車 在酒吧喝個小酒
但是其他車隊的某人傳來另外的車友的死訊

四個人想起那個死去的車友與他們的年紀相近 可是卻掛了
其中一人提議 四個人一起真正的出去旅行 沒有行程表 只有自由

中間發生許多爆笑的事 ,

當然大家為了證實自己不是喪失勇氣的阿伯 ,當然也做了一些平常根本不會作而且是瘋狂的舉動
(例如 去拍鬥牛的牛屁股 , 結果是 每個人都被鬥牛頂到半空中 摔個半死 但是事後大家還是很高興 就因為這件事是他們沒想過也不會想到要去做的事)

不過
這個真的是在提醒已經超過三十歲的老人家
從出社會到現在 到底獲得了甚麼又喪失了甚麼

在以前年輕的學生時代 可以一無所畏的去作任何想要做的事
但是出了社會 過了幾年 卻是越來越綁手綁腳 畏首畏尾

欠缺了甚麼 勇氣是否還在身上
怕什麼 ? 是怕現有的一切會失去嗎 ?

之前有人說:現在不做的 以後永遠都不會去做

所以有人用騎腳踏車環島 也有人騎著小50 機車用24 小時環島....


想做的要即時的去做

有多久沒有作過瘋狂的事了?


後記:
這片DVD的導演及編劇講解 以及幕後花絮也不錯看....

2007年10月21日 星期日

UBUNTU 上的遊戲模擬器 xmame


UBUNTU 上的遊戲模擬器 xmame

試用了 UBUNTU 上的遊戲模擬器 XMAME 感覺還不錯

透過 <系統><管理>
然後搜尋 XMAME 然後安裝就可以了

啟動指令:  XMAME XXXX.zip
XXXX.zip 是遊戲ROM的檔案

1.切換到 全螢幕 Alt + PageDow
2.調大畫面 Ctrl + PageUp
3. ESC 結束
4. Tab 設定輸入 遊戲手把等按鍵對應

2007年10月20日 星期六

手不要太賤

手不要太賤

這兩天因為手太賤 

在玩 ubuntu 時 , 原本是要把 UBUNTU 裝在 usb 外接硬碟中玩的 (之前有成功設定過)
成功了一次 , 後來手賤第一次 , 看到更新管理程式有 7.10可以更新
就選更新 ,結果把UBUNTU 搞掛了

然後就重裝 ,結果重裝的時候,手賤第二次,沒有選進階選項把開機磁區選到 USBHD 去
結果就把原本NOTEBOOK 裡面的 XP 啟動磁區搞掛了

因為NOTEBOOK 附的 XP 沒有安裝光碟,它是還原光碟,
所以用原版光碟拯救 MBR 的方法根本就沒的用

不過就算了,將錯就錯把 UBUNTU 變成 NOTEBOOK 的正式作業系統
到目前為止還不錯用

原 本WINDOWS 上的某些作業就找一下有沒有替代品換過來

VMWARE SERVER 也已經安裝好並且試用 OK (因為 Linux Kernel 是 2.6.20 需要額外下 PATCH)

RAR 需要另外安裝

PDF 也可以檢視

遊 戲手把也都可以抓的到 (USBVIEW)
遊戲模擬器是 xmame 不過問題太多

Web 現在用的是內附的 FIREFOX

輸 入法用的是 新酷音 (類似注音輸入)

還沒有試過的是看 DVD 這類工作


安裝程式非常方便只要透過套件管理員 就可以做好一切 ,不過一定要連線在 INTERNET

2007年9月30日 星期日

企業內Web應用系統設計與實做注意事項

企業內Web應用系統設計與實做注意事項

在企業內部 , 因為潮流的關係 , 應用系統也慢慢由以往的 Desktop 應用程式(Client/Server) 轉換成 Web 應用系統 ,
仍然有一些人(不論是內部或外包廠商) 根本沒有用腦子好好想過 , 所以就會有雖然是使用 Web 應用系統但是仍舊套用 Desktop 應用程式的方式去設計與實做
這樣會有什麼問題?
舉例來說 , 有些企業可能會有需要人工按下一個按鈕 , 然後那個工作可能是轉檔程式或者是其他需要較久處理時間的作業 , 以往如果是使用 VB6開發程式 , 反正頂多出現 一個沙漏 , 或者是進度bar 顯示目前正在處理中 , 然後作業完成 , 跳出一個對話窗表示處理完畢 , 有可能是 1 小時 或者是更久 , 反正就是放著讓它跑

這樣的模式套用到 Web系統會有什麼問題 ???
Web 的Timeout 會是第一個問題 
一般網頁的處理的Timeout 設定都不會設的很長  , 所以碰到這種長時間作業的 , 就會發生 , 作業到一半就會 timeout 的問題 , 就會有廠商可能直接將 timeout 時間設定更長 , 這樣也只是頭痛醫頭 , 一點意義都沒有 , 想想看 , 如果有一個作業需要 5 個小時 , Web 的timeout 時間你想要設的多長 ?

建議的設計方式:
這種長時間作業的 , 應該是要設定成 非同步的處理模式 , User 透過網頁按下 開始處理 , 系統收到 Request 後 , 應該是設定成 Server端的排程作業 去處理 , 然後 網頁立刻回覆 , 已設入排程 , 結束...
User 應該是在事後 , 的某個時間點再去檢視 Server端排程作業狀態頁面 , 看看 先前的作業的作業狀態是 已完成 , 或是仍在進行中 , 或是已結束但是有錯誤發生 , 另外如 何時開始作業 , 何時完成作業 也應該是在該頁面中檢視

為何不是像建議的設計方式這樣做?
因為廠商可能沒腦子 , 或者是為了省事(省人力 , 省錢) ,
用原來的Client , Server 的寫法 , 只需要寫一個 處理頁面就完成了(雖然它會有我上面所說的重大問題) ,
如果換成我上面所說的建議設計方式 , 則需要寫的頁面會變多 , 但是不會有上述所說的重大問題 , 但是需要較多的人力跟開發成本

另外  DB 的 Timeout 會是第二個問題
在現在使用 J2EE Server 的企業有不少 , 也都會去設定 DataSource ,
但是 仍然可以發現到 很多企業的系統 , 對於相同的資料庫並沒有切出多組的 DataSource來作區隔設定
這樣的問題是什麼?
例如你是線上同步作業的 DataSource 與 大量批次轉檔非同步作業的DataSource 是否是使用相同的DataSource 或者是不同的DataSource ??? ,
兩者的Timeout 設定可能就需要不一樣的設定 , 大量轉檔作業可能需要耗時 5 個小時 , 那去使用一般的DataSource 時 , 可能程式跑到一半就會 Timeout 掉 , 你要去修改 一般的 DataSource 的 timeout 時間為 5 個小時嗎 ? 那麼其他線上作業的程式(Web)使用這個DataSource 時 , 它可能會變成 Web Page 的回應時間可能會拉長 , 使用者等待的時間會拖的更長....

建議的解決設計:
將 批次大量作業使用的 DataSource 與 線上作業使用的 DataSource 分開設定

在企業內部設計應用系統 , 不是讓系統執行工作後就沒事了 ,
你還必須考慮 , 該工作何時執行 , 何時結束 , 結束狀態是成功 , 或失敗 , 失敗的原因是什麼 ,
發生錯誤了 , 系統要能自動化的發出通知 , 通知維護人員進行檢視與處理
系統如何做失敗的錯誤回復 , 把原先的工作繼續成功的處理完畢 , 這些都是必須考慮的

 如果沒有好好考慮就會發生 , 錯誤發生了 , 沒人知道 , 或者是無法做後續的錯誤回復處理

2007年9月18日 星期二

方向偏差 結果就差個十萬八千里-2

方向偏差 結果就差個十萬八千里-續


使用WebService要考慮的還包含:
 a.交易控制處理的機制 是否有做到完整的交易控制 , 如果沒有會發生什麼事?
b. 安全性處理的機制 是否有做到完整的安全處理 , 想想看 , 有關客戶的個人隱私資訊 , 變成了 WebService , 然後以明碼的方式 在網路上傳來傳去 , 然後可能沒有半點認證或是授權 , 然後內容也沒有encrypt   

2007年9月9日 星期日

方向偏差 結果就差個十萬八千里-1

方向偏差 結果就差個十萬八千里

2007/09/09 17:27
這是從某人就職的公司聽到的 ,
V是負責規劃 SOA & WebService & XML 的人員
只不過某V 完全沒有設計及使用 XML 的經驗
也沒有寫過WebService , 也沒有寫過WebService的Client端的經驗 ,
SOA就更不用談了...

連拿到有問題的XML都不了解錯在哪裡或是如何改正,
但是這樣的人選就是要負責規劃公司未來使用的XML , WebService , SOA...

千萬別問我 
為何不找曾經有設計過XML內容 , 有在系統中實際應用過 XML 內容的同仁負責
或者是有程式設計經驗的同仁來負責
[現在的潮流是 任何一個阿貓阿狗
只要看過了
"深入淺出物件導向分析與設計"
或者是
XXXX Cook book
或者是
XXX 設計樣式
之類的 , 沒有寫過半行程式碼 , 不會任何程式語言的 都可以出來侃侃而談 系統架構的設計 , 哪裡對 , 哪裡不對
<這些書沒有什麼不對的 , 都很好也都很經典 ,
只是一些人的心態上有問題 , 一票阿貓阿狗因為沒有寫程式的經驗 , 就在當 SA ,SD 甚至是 Architect , 然後看到書上提到 "XXX 設計樣式" 或者是 "XXX Cookbook" 完全沒理解那些內容的適用處與適用範圍 , 就胡搞瞎搞的套用到 公司的系統上面去 ,
結果自然是亂七八糟 , 慘不忍睹 ,
然後那些人可能還會跳出來說: XXX 設計樣式一點用都沒有 , 是垃圾....之類的 ,

為了這些胡搞瞎搞 , 沒有實際程式寫作經驗的人 ,
某些大師只好出來寫
"XXX反樣式"
來明確的告訴你 , 哪些情況下 , 不適用哪些樣式....

IT 有一種很奇怪的階級情節 , 就是 Programmer 是最低下的 , 往上升級然後是 SD , SA , Architect

水往地處流 , 人往高處爬 , 是沒有太大的錯誤 ,
錯的是在於 , 一堆高處職階的 , SD ,SA , Architect 竟然是使用沒有程式寫作經驗的人去擔任 ,
因為連程式都寫不好 , 所以讓他們去做 SD , SA , Architect ???
>
]

回到正題 , 完全沒有經驗的沒有基礎的人 要來帶領大家如何開發 SOA系統 , WebService , XML ,
方向會不會有偏差呢? 差了多少呢? 誰知道呢? 誰負責呢?

{某公司內WebService的應用 , 在某些的人的錯誤領導下 , 正朝向濫用錯用的狀況
大家都知道 , 程式語言的 API 呼叫是最直接也最快速的 , 不論是效能或是資源都耗用都是最直接的 ,
但是如果是那類完全不會寫程式不了解狀況的人來帶領 , 就會變成 , 什麼都會變成是 WebService ,
可以會出現的後果是什麼 , 就是這些人講不上來的地方 ,
會有什麼後果嗎?
首先:
當你使用 WebService 時 , 你必須定義對應的 XML Schema ,
將資料的傳入傳出都必須要轉換為是 XML 的內容格式 ,
當然 Client 跟 Server端也都要進行額外的XML驗證與解析 , 之後才是真正的處理...

意思是 當你呼叫 x.helloWorld("say Hi") 這樣的 API 時 , 換成 WebService 他的資料量(XML)
會由可能是幾十個 byte 變成幾百個 byte , 甚至是幾千個 byte (看你的資料嚴謹度與套用的物件多寡) 在網路上傳輸 , 也會在 client & Server端的記憶體存在

這樣的影響是 ,
(1)網路之間的傳輸量會變大 , 需要比原來大 10 或者 數十倍的傳輸頻寬
(2)系統在收到資料時需要先進行XML驗證與解析 , 原來使用的記憶體可能是也比原來大 10 或者 數十倍的記憶體大小
(3)因為要額外進行XML驗證與解析 , 所以也需要額外的CPU使用量
因為這些額外的需要 , 要問的是 企業內部是否做好了因應的準備 , 換了更快 CPU , 更多數十倍記憶體 , 更多數十倍網路頻寬的Server與網路架構 ? 如果都沒有 ?
系統會發生什麼事??? 三不五時 , 系統會出現 Out of memory 或者是 CPU 滿載 , 或者是網路塞爆

要說明的不是 WebService 不能使用 , 而是要用之前 , 因應的配套措施做好了沒???
是不是用在適用的範圍內?

如果有 Native API 可以使用 , 然後系統不是跨程式語言 , 也不是跨平台的情況下 , 卻仍然有人堅持一定要使用 WebService 去做到 Native API 可以達到的事 ,
那就要看那間公司是不是有買了換了更快 CPU , 更多數十倍記憶體 , 更多數十倍網路頻寬的Server與網路架構 ? 如果都沒有 ?
那就會出現對比於公司的業務量的成長, 出現不成比例的需求: 機器永遠不夠快 , 記憶體不夠用 , 網路不夠寬 , 這樣的需求出來...
}

2007年8月26日 星期日

Wiimote 連接Windows 藍芽注意事項



最近弄了一副 Wiimote 搖桿來玩 ,
主要是想試 連接 Windows XP 的情況
順便買了藍芽接收器 華碩 WL-BTD202 來用

剛開始試了很多次 , 只要新增裝置後 , 藍芽中心 一開啟 視窗就 hang 住
也是了更新 WIDCOMM 的更新程式 , 仍然無用
到華碩網站去報案一樣,給的是官方的客服回答,一點幫助都沒有

最後終於試出一個可以正常動作的程序

Step0: 首先 藍芽服務必須是停止的(藍芽服務圖示是藍紅狀態)
Step1: 開啟藍芽中心
Stpe2: 啟動 Bluetooth 裝置(藍芽服務圖示是藍白狀態)
Step3: 新增藍芽裝置 ,
注意要從工作列的右下角的藍芽服務圖示去新增 , 不要從 藍芽中心的視窗的選單去新增

Step4: 免輸入驗證碼 (按 略過 按鈕) , (藍芽服務圖示是藍綠狀態 表示 搖桿已經連線)
Step5: 執行 Wiimote 程式
然後就可以看到狀態了
很鳥的情況是 , 一定要按照這樣的順序才能正常動作
例如1 , 沒有先開啟 我的藍芽中心視窗的話 , 在後續動作新增裝置完要跳出 我的藍芽中心視窗時 就會 hang 住 , 根據我的朋友的反應 , 他的狀況是出現 籃底白字的 Windows 當機畫面

例如2 , 新增藍芽裝置 , 如果不是從工作列右下角的藍芽服務圖示去新增的話 ,
而是由 我的藍芽中心 視窗的選單去新增裝置的話 , 在輸入驗證碼的視窗畫面 , 你如果要按 略過 按鈕
則會一直無法略過而停在那個畫面
(根據我的朋友的說法 , 可以輸入 4 個 0 來當作驗證碼 , 不過我沒有試過)

很鳥的解法 , 但是對我有用 , 如果其他人有碰到類似的狀況 , 也可以試試看

2007年7月21日 星期六

大逃殺


大逃殺

如果你只看過電影版的大逃殺 , 你會覺得故事背景設定的有點扯 ,
國家(某些特定的單位的主導者)因為認為國家的競爭力衰退 , 是因為和平的日子大家過的太爽了 ,
所以社會出現了太多米蟲 , 每個人渾渾噩噩的過日子 , 為了提升競爭力 , 讓人回到有生存競爭的心態 ,
選出一個班級的少男少女 , 然後放到一個小島上 , 每個人給定不同的武器或是工具 , 然後給定一定的時間 , 要彼此之間互相殘殺 , 然後到了時間之後 , 如果生存者超過 一個人 , 則所有的生存者就全部殺掉...
(這是大逃殺I 電影的基本設定 )

一開始 看到 大逃殺 , 是在租書店租到 大逃殺 II ,
看完之後 , 想說看看有沒有 大逃殺 I 可以看 , 結果租書店沒有 , (人的天性 , 就跟看到星際大戰 IV , 你就會想看看 那 I , II , III 的內容是蛇麼)

不過呢 , 有 漫畫版 的大逃殺 I , 大概是 12 還是13集 , 所以就先看了(漫畫版的名稱好像叫 生存遊戲)
後來逛到光華商場時 , 發現了 特賣片 一片 99 元的大逃殺 I ,
買回來看過之後 , 又上網去看了一下其他人對於大逃殺 I 電影的討論 , 發現評價不是很好 ,
因為我看過電影版 I , II , 跟 漫畫版 , 所以可以知道為何大家的評價不是很好

原因在於 漫畫版的大逃殺 , 裡面幾乎多多少少都會有每個角色的情緒 , 背景 的相關描述 , 即便是配角也都會有 , 而電影版的大逃殺因為角色太多 , 所以刪掉了很多角色的背景描述或者是內心想法的片段 , 當這些片段 都被刪除之後 , 剩下的就是很表面的 , 角色之間的彼此打打殺殺 , 甚至因為刪除了某些片段 , 所以你會覺得電影版 I  角色或者是劇情的轉折之間會有些莫名其妙或者是突兀.
不過 , 基本上來說 , 電影版 , 已經刪掉很多 情色片段 , 跟血腥片段了 , 電影版仍然是屬於 成年者才能看的
而漫畫版就更 情色跟血腥了...(基本上 大逃殺 完全不適合給 未成年人 觀看)
說一下,其中的幾個差別,
電影版 大逃殺 I 中負責指揮行動的那個老師 , 是一個在家被女兒嫌棄 , 在校被學生看不起的老師 , 有些討厭 , 卻又有些可憐 ,
漫畫版 , 大逃殺 , 指揮行動的老師 , 完全是個豬頭 , 兼心理變態 , 完全是以看到學生的死亡為樂 , 期間還強暴了 主角在育幼院的女老師(電影版 沒有這一段)

大魔王級角色1
另外像 , 相馬光子 , 剛剛提到的情色部分 , 都來自於她 ,
漫畫版中 , 有不少她的片段描述 , 她也算是大魔王級別的角色 , 為了求生存獲取金錢 , 不惜犧牲肉體 , 進行援助交際 , 或者是充當大哥的女人 , 極度保養自己的肉體 , 所以在島上還有辦法從容的洗澡跟換美美乾淨的衣服 , 同時間也是個變臉快速 , 有雙面人的性格 , 一個是真實自我的狠角色 , 一個是裝做清純可憐的少女 , 還挑撥 幾個男人為她拼鬥 , 在過程中 , 也可以出賣肉體去騙取男人的信任 , 分派到的武器是鐮刀 , 喜歡用鐮刀 , 割斷別人的喉嚨 ... , 甚至在最後碰到另一個學生 桐山和雄 時 , 也不惜希望能夠出賣肉體 , 來求取生存....
電影版中 , 相馬光子 這個算是魔王級角色的戲份就被刪的一踏糊塗 , 當然也沒有什麼情色部分出現 , 只有在相馬光子 要死亡時的記憶片段 , 表示她會那麼求生存 , 是因為小時後被母親出賣給戀童症的變態中年男子 (基本上這一段就很突兀 , 因為前面的片段中 , 並沒有任何著墨於相馬光子 性格與行為的描述 , 但是漫畫中有  )   , 基本上跟漫畫差很多 , 已經是亂改的程度了

大魔王級角色2
桐山和雄(天才學生)
漫畫版中 , 他是家中極度有錢的學生 , 與其他同學也是同窗三年 , 他沒有人類感情與情緒的存在 , 但是是一個高度天才 , 廚藝 , 音樂 , 武術 , 運動 , 幾乎是過目即學 , 而且因為沒有人性 , 所以也是超級殺神 , 有大半的學生都被他追殺 , 而且成功的殺死
在他死亡的片段中 , 才說明 , 原來他的沒人性 , 是因為小時候出車禍 , 有碎片刺入他的腦中 , 所以導致他的無情緒 , 無人類感情的情況

電影版中 , 桐山和雄 變成是一個轉學生 , 也沒有他的背景描述 , 純粹只是出現他拿著武器殺殺殺 , 然後最後被 其他人殺死
(基本上也是被亂改一通的角色)

漫畫中 , 七原秋也 跟 中川典子 是逃出島上 , 用的好像是 川田章吾 聯絡到的船隻逃離 ....
(然後川田章吾 掛了)
跟電影的結局不太一樣

另外還有亂搞的地方是
電影版中 , 中川典子 跟那個老師好像存在若有似無的關聯(有點像是 中年男子 著迷於 少女一般),所以那個老師最後才會放過七原秋也 跟 中川典子

另外像電影 大逃殺 II , 就存純只是為了滿足 大逃殺 I 電影的影迷衍生出來的產物 ,
規則修改的更嚴苛 , 相同座號的男生跟女生都被配成一組一組的 ,  只要一組中的其中的男生或是女方死去 , 同一組的倖存者的項圈也會爆炸 , 就是要死兩個一起死


以下說的是漫畫版的部分
大逃殺 吸引人的地方在於 人性的與角色性格描述 , 而不在於中間過程的打打殺殺 ,
只是電影版 , 只能表現出外在的打打殺殺 , 所以導致有人對電影 大逃殺I 的評語不是很好
例如 , 遊戲規則 , 限定只能有一個人生存下來 , 所以你會發現 ,
有的平時性格可能很懦弱的人就會先下手為強 , 因為他怕大家會先對他下手
有的人會想要整合大家 , 聯絡大家 , 看看能不能找出一個方法 , 大家一起逃出去...
又因為規則的關係 , 所以有的人看到有其他人出現 , 就認為對方是要來殺自己的 , 就先攻擊再說
人與人之間的信任感 , 在生死關頭有時就是那麼的脆弱...
也有一對情侶檔 , 因為女方不願意為了生存下來而殺人 , 所以男女雙方一起跳海殉情...
這些都是人性的掙扎 ,...電影版中 , 可能是內容太多了 , 為了趕時間 , 這些你完全不會感受到

今天到書局去看到了 大逃殺 小說的中文翻譯 , 一時昏頭 , 竟然沒有買....後悔中
我想小說中的情節 應該會比漫畫還要多...

2007年6月13日 星期三

如何分辨不佳的程式設計網站

如何分辨不佳的程式設計網站


2007/06/03 01:38
程式設計的生涯中 , 沒有人能夠保證自己是什麼都會什麼都精 ,
所以尋找一個好的程式設計的相關參考網站也是一個重要的項目
針對學習 Java 的同好 , JavaWorld 算是一個不錯的參考網站(http://www.javaworld.com.tw)
它的討論區都有相關人員在管理 , 另外發問的人員的問題 , 以及回覆 , 品質跟等級都較高...


基於隱惡揚善的原則 , 好的組織或人事物 , 我們就直接把全名公告 , 不好的組織或人事物 , 我們只好描述其事跡 , 讓大家自己去判斷是非對錯 , 不寫出名稱
本篇的主題是: 如何分辨不佳的程式設計網站

參考一下 , 某程式設計網站 , 宣稱有 16 萬位系統開發人員 , 可彼此討論技術和解決系統開發上的問題
看一下內容 , 累積文章數 37 萬, 幫他計算一下 , 每個系統開發人員只累積了不到3篇文章
另外它宣稱的有16萬多位的系統開發人員 ,
進去討論區逛一下 , 你就會知道 , 一大堆學生在上面問問題的 , 問題類型大概是: 我們老師出了XX 作業 , 有沒有人可以寫範例給我看 , 或者是直接在上面發包的 , 要不然就是 有沒有人可以解說 XX 程式碼的意思 ,....
這些學生也都被涵蓋在 16 萬多位的系統開發人員 , 灌水也灌的太兇了吧...(比例有多少 , 看一下問作業問題的文章數有多少就可以猜猜看...)

另外如果再去看裡面的貢獻值 , 真正有解決系統開發問題的 , 只是少數的 不到 100 人
彼此討論技術?  那個站台 , 可以看到某些人直接對其他人以言論進行人身攻擊 , 已經到達觸法的情形了(例如間接的指控某些人有精神方面的疾病該去吃藥看醫生等等) 也沒有看到站台的管理人員出來管理

 (也只能說那站台的管理人員運氣不錯沒有被告 ,
 因為如果在網站上 , 有人進行犯罪 , 而網站經營管理者沒有處理 ,網站的經營者是必需要負起相關刑責的 , 也就是說 , 如果那個被進行人身攻擊的人對該站台經營管理者及 對他使用言論進行人身攻擊的人 提起告訴的話 , 那就有的看了)

會幫忙解答問題的只有少數幾個 ...但是看一下那些問題 , 有一半是學生的作業問題 , 也就是入門等級的問題 , 連技術問題或是系統開發問題都稱不上...

我看了那些失序的發言 , 只能說那個站台的參考價值不高 ,
彼此互助的氛圍也都沒有 , 看到的是某些人只在那裡耍嘴皮子打筆戰 , 不然就是講一些沒營養的內容或是 進行人身攻擊的 , 
一堆回覆內容都不是彼此幫忙解決系統開發問題或是技術問題的 ,
這種站台會被我歸為  "不佳的程式設計網站" , 因為參考價值為 0
有沒有好的回應文章或是主題 , 有 , 不過不多 , 要自己去大海撈針 , 如果你願意把 37 萬篇主題跟回應看完的話...



比較一下 JavaWorld  , 只要你公告不當的下載連結 或者是有不當的發言 , 管理人員會把你的公告刪除 , 避免違法之虞 , ...(比起某站台 , 完全是無政府狀態 , 真的是差太多了)
而JavaWorld他們的成員share 的比例比較高 , 多的是自主性的 share , 例如有人整理好的筆記 , 考試學習心得 , 或者是實用的程式及範例甚至是技術之間的討論

嗯, 舉 JavaWorld 為例只是因為老人家是用Java的 , 其他的像 ASP , PHP , ....等等其他應該也有不少不錯的站台 , 不過老人家我就沒有接觸了...

2007年6月2日 星期六

J2EE 設計樣式應用 一書的範例程式碼

J2EE 設計樣式應用 一書的範例程式碼

2007/06/02 19:23
J2EE 設計樣式應用 ( J2EE Design Patterns Applied )  一書的範例程式碼
這本書的原始出版社為 Wrox
老外寫的書 , 範例程式碼大都是放在作者的網站或者是出版社的網站上
可是這本書的範例程式碼
你到 www.wrox.com 這個網站上絕對找不到 ....

翻看 JavaWorld 的網站 , 有人提供他先前下載到的Sample Code的 個人超連結 , 不過被 JavaWorld 的管理者給刪除了(那個連結) .[從這點可以看到 JavaWorld 是比較有在管理的 ]
(根據那篇文章的說法是 Wrox 的財務出狀況後 , 所以那本書的範例程式碼 , 就沒在 www.wrox.com 上出現了) ,

經過一番尋找 , 這本書的範例程式碼 , 可以在 Apress 這個出版社的網站上下載 ,
 ( J2EE Design Patterns Applied )
http://support.apress.com/signup.asp?bP=/books.asp?s=0%26bID=1861005288&supportFile=1861005288/5288.zip

範例程式碼就在上面請自己去抓,大小為 414 KB左右 , 國外有人反應抓下的檔只有 8KB , 後來發現是他們使用的 Proxy Server 造成的

2007年3月3日 星期六

工具軟體介紹 JAGO



工具軟體介紹 JAGO

這個軟體有兩個功能

一個是當作連線到圍棋Server的Client , 另一個功能則是當做 SGF 的編輯器

SGF 是圍棋棋譜檔案格式的一種

http://www.rene-grothmann.de/jago/
Java Go Client & SGF editor v4.9

如果你的 JAVA_HOME & PATH 有正確設定的話
只需在檔案總管 double click  這個檔 jago.jar
就可以執行

它的SGF editor 令人讚賞的地方有二 ,
一是變化圖的種類 , 它是使用圖型化表示
二是對於 sgf 裡面的棋評註解的編碼讀取 , 可以讀取使用簡體中文內容的 sgf檔
只需要設定編碼為 GB2312 就可以正常顯示 , 不需要去將 sgf 檔的內容去做任何修改



























































































(如果你曾經在網路上有去尋找圍棋棋譜 , 然後使用其他的圍棋程式去開啟 SGF 確看到亂碼的話 , 

有一種可能是因為那個 棋譜檔案的編碼格式使用的是大陸簡體中文的編碼 , 所以開啟時顯示成亂碼 , 使用 JAGO 就可以直接檢視簡體中文)

[原始文章日期: 2007/03/03 13:24]


2007年2月28日 星期三

Web Services best practices


承續上篇關於WebServices的錯誤應用說明後 ,
來介紹一下Web Services best practices
以下內容出自 IBM Redbook : sg247257.pdf
Web Services Handbook for WebSphere Application Server Version 6.1
內容的Page.228(AdobeReader頁碼)
            Page.198(PDF頁碼)
提到關於~Generic best practices~
(1)Be WS-I compliant
(2)Use simple data types
(3)Avoid nillable primitives
(4)Avoid fine-grained Web services
(5)Avoid Web services for intra-application communication
(6)Use short attribute, property, and tag names
(7)Avoid deep nesting of XML structures
(8)Apply common sense (also known as being defensive)
第1點是要符合WS-I的標準
第2點是要使用簡單資料型別(就是一般的基本資料型別)
裡面的第4點提到 fine-grained 一般是直譯為"細粒" , 就是說到要避免過細的WebServices的使用
另外如(6)(7)就是關於XML傳輸的資料量的問題 , 太長的attributes , property , 太深的XML結構都會造成XML 資料量變大 , 而可能導致佔用大量的網路頻寬
此外還有(5)提到避免用於intra的應用程式的通訊 ,這點也說明了 , 不要濫用WebServices於系統的建議


世上沒有萬靈藥 , 沒有一種藥可以治療所有的各種病痛
技術與樣式也是一樣 , 需要看場合 , 看需要的應用 , 濫用技術與樣式不是好事
提出此篇來與前一篇 WebServices的錯誤應用來對照呼應

有興趣看完原文的人 , 可上 IBM 的紅皮書網站 , 下載上面提到的 PDF , 來看詳細內容

2007年2月25日 星期日

WebServices技術的錯誤運用

WebServices技術的錯誤運用



每當有些新的技術出來 , 就會有人把它掛在嘴邊 , 似乎是萬能丹
可是要小心不要落入錯用新的技術的陷阱中
WebService s? 現在已經不新了吧
隨便舉個應用的例子好了 ,
有些 FlowEngine的產品或是要與FlowEngine整合的系統 , 馬上想到要使用的方式就是 WebServices ,
這種想法有沒有問題呢?


首先要記得 WebServices
1.叫用遠端的服務 ,
2.參數的傳入與結果的傳回都是使用 XML 格式
叫用遠端的服務 , 看起來沒有什麼大問題啊?
事實上 , 如果你有點年紀有使用過 COM+ 跟 EJB 的話 ,
COM+ , EJB 也都是提供遠端呼叫的元件規範
在那個時候 , 就有人濫用這種方式而導致網路與系統效能的降低
舉例來說:
假設Server端有一個 COM+ 物件 X , 提供 methodA , methodB , methodC 三個 Function Call
而你有一個Client端程式的交易是需要呼叫 methodA , 然後呼叫 methodB , 然後呼叫 methodC,
那你會發現透過 TCP方式,你的網路呼叫的往返次數至少是6次,
如果你在Server端有一個 COM+ 物件 Y 提供 methodTran , method內部就是包含了 methodA , methodB , methodC的呼叫
而你的Client端程式去叫用 Y.methodTran 時 , 網路呼叫的往返次數只有 2 次
這中間對於效能就有影響了,網路往返的次數少,花費在網路上的時間就減少,積少成多,效能就變快了
此外在網路呼叫的次數上 , 也會影響網路的頻寬使用
所以在 COM+ 時代 , 就有人提出相關的使用樣式

類似的狀況, 在EJB也反映出來相關的問題 , 所以Core J2EE Patterns 樣式中 , 就出現了DTO(Data Transfer Object)
就是為了避免呼叫EJB的method 時 , 傳入傳回的都是單一的屬性值 , 但是卻要進行多次的網路呼叫,
將可以進行一次網路呼叫並且取回的結果封裝成一個物件傳回 , 為的也是相同的原因 ,
避免多次網路呼叫 , 系統效能會變差 , 並且影響網路頻寬 ,

不是要談 WebServices 嗎? , 怎麼開始講古了呢? , 講到 EJB / COM+ 去了?
重複上面提到的 WebServices的基本要項首先要記得 WebServices 1.叫用遠端的服務 , 2.參數的傳入與結果的傳回都是使用 XML 格式當然這裡面有個潛規則就是叫用遠端服務如何叫用 是透過網路 , 看起來好像是廢話 , 沒有網路如何呼叫遠端服務?
剛剛談到了 COM+ , EJB 在提供遠端服務的 method 時 , 其中一個影響要素就是 網路
當然使用的網路協定還是基於TCP協定(HTTP/FTP/SMTP)
所以COM+ / EJB 碰到的問題 , WebService 還是一樣會碰到 , 就是不要提供過細的method服務

你可以想像有人可能會濫用過細的WebServices 然後用在可能是上千萬筆的檔案轉換上面(Ex:轉檔) ,
可能是上千萬 次的WebService Call, 這個除了帶來程式的效能很差的結果之外 ,
也可能會影響到網路的頻寬使用
記得上面提到 WebServices的要項2嗎? 2.參數的傳入與結果的傳回都是使用 XML 格式
也就是說如果你呼叫過細的method 服務 , 你需要傳入XML ,也需要傳回XML , 這樣的資料量 , 可能遠遠大於你真正要傳回的資料
這些會吃掉你的網路頻寬 , 而當網路頻寬被吃掉 , 就是其他別的系統可能也需要網路頻寬 , 卻因為網路頻寬不足而導致別的系統服務的效能
也變差
所以不要濫用WebServices ,
如果你不是把它使用在交易服務 , 而是許多細小的資料查詢上面的話 , 那你就是濫用了
回過頭來看 , 最原始的問題
"有些 FlowEngine的產品或是要與FlowEngine整合的系統 , 馬上想到要使用的方式就是 WebServices ,這種想法有沒有問題呢?"

那要看看你的 Flow Engine 的呼叫對象 , 到底是會呼叫非常多次細項的資料處理的WebServices 還是呼叫一次交易處理的WebServices
如果是前者 , 那我只能提醒你 , 你的系統可能會有效能不佳並且導致整個網路頻寬被佔用的情況
如果你的人員或是外包商中會提出這樣的系統設計的 , 也請注意 , 他們可能只是知道有個WebServices的技術可以用 , 但是卻不會進一步深思 , 用法有沒有問題

WebServices 不是不好 , 而是要小心的用 , 正確的用 ,
用的不好 , 只能說你再換一個 128顆CPU的主機(現在應該還沒有這種商用主機吧 , 誇張的說法)系統還是跑不快... 當然如果你的Server間的網路都改用光纖或許可以改善...
關於系統效能不佳 , 平台人員要求換機器那又是另外的主題了...
這篇主題中還有一個要點沒有提到的就是關於交易處理的部分 , 它也是影響系統效能表現的要點

不要說我舉的例子太蠢 , 不會有人犯這種蠢錯誤 ,
就是有看過 , 而且還不少...

2007年2月12日 星期一

分析與設計03-企業需求2

接續 分析與設計02-企業需求

上面提到了 , 有些項目是在進行系統分析與設計時 , 必須要一併考慮進去的

例如 如何降低系統維護人力的這個要求
有些系統常常只考慮正常狀況 , 但是如果發生了異常狀況 ,  則可能會需要大量的人力來進行後續的處理與作業 ,


又或者是說到了 Server 的Cluster 配置 , 這裡面就會牽扯到兩台或是多台Server 之間 , 關於 Web Session 的共用(或者是同步)等等.在進行系統設計時必須要稍微注意一下


舉例來說 , 有某廠商在設計排程程式時 , 根本沒有考慮Cluster的狀態 , 結果我們一問他們 ,
在Cluster 環境下 , 是不是會各跑各的(2台 Server上的相同工作各自執行) ,
結果廠商就說兩邊都會起來執行(有些工作是只應該被執行一次的 , 而不是兩次的)
或者是檔案的產生 , 因為有2 台Server就必須要考慮 ,

如果user由Server1 切到 Server2時 , Server2可能取不到剛剛 Server1上面的檔案 , 而導致失敗.
當然聰明的人馬上就會想到要將Server1 與 Server2 的檔案存取點是 mount 一個共用的Server3上的Share 路徑.這樣做也沒有問題.

只是這些其實是要再設計的時候就考慮進去的,因為這些細節會影響到日後各項細項的工作.

分析與設計02-企業需求


在面對企業內部需求 , 有些系統就必須要考慮到十分周詳與長遠
例如 , 企業上會有些要求 , 例如 , 系統維護人力必須要低 , Down Time 要短 , 還是 Fail over 等等

因應這些需求 , 就會有一些配套的解決方式 ,
例如: Fail over 跟 Down time 的需求就會有 Cluster 或者是 Load Balance 等等解決方案
而系統維護人力要低 , 則必須要從分析跟設計開始著手 , 搭配一些自動化的監控軟體.


這裡面必須要提出來談的是,千萬不要一開始就看所謂的監控log file 這樣的問題點入手 ,
那根本不是有企業等級眼光的人員提出來的 ,


我看過某家公司的某些人員一開始提監控就是提監控 log file , 而不是先提系統該如何被監控 , 哪些事件是要由哪些角色來進行處理 , 這個只能說他們是小孩子在開大車

為何這樣說呢 ? 大型企業一般來說  , 可能會把 IT 的人員角色切的很細 , 管理 Database 的人員 , 管理 AP Server 的人員 , 管理網路的人員 , 管理應用系統的人員.

而大型企業的系統的 log , 有可能一天就是幾千條 , 甚至上萬條紀錄 , 如果你一開始就只是去談 log 的監控而不是由 log 的上游看起 , 那我只能告訴你 , 那是垃圾 , 垃圾進 , 垃圾出.


不相信嗎? 去看一下企業內部的相關管理系統的人員,他們一天可能會收到上百封由監控系統發出alert email ,

你猜猜看那些人員會怎麼看這些mail ,
答案是直接略過 , 為什麼 ?
理由1: alert 太多了 , 所以分不出來 , 那些是真正重要的 , 哪些是不重要的
理由2: alert 沒有足夠明確的訊息 , 管理Database 的人員(或者是管Server的人)不知道要如何進行下一步的處理 , 那些可能只有系統的維護人員才會了解


所以當你要開始規劃公司的監控機制之前 , 請先從系統最上游開始分析 , 要求系統在分析設計時 , 就要把那些錯誤 , 是必需要由哪些角色去處理 , 跟做什麼的全部釐清 , 甚至要把log 也拆離出來 , 商業作業的log跟系統錯誤的log 要切出來.


我看過某公司的某個Enterprise Architect 在規劃監控機制時 , 連腦子動都不動的 , 就談 log file 的監控 , 似乎以為有監控 log file 就能滿足企業的需要 , 結果明明上游(會產生log file 的系統)就是攪和在一起 ,


要記住 不要為了 XX 而 XX.
在這裡來說就是:不要為了監控而監控.要記住監控真正的原意是什麼.
如果你的上游完全沒有訂出事件的類型,錯誤的情況,處理的方式,甚至是切出log 那麼就會發生 , AP Server 管理人員一天會收到 幾百封的mail , 裡面可能是 JDBC Exception , File not found 各式各樣的問題 , 但是管理人員根本沒有辦法去處理.
結果這樣監控的結果等於就是有跟沒有是一樣的.



要記住 不要為了 XX 而 XX.
不要為了 UML 而 UML 了
不要為了 CMM 而 CMM
不要為了 PM 而 PM

分析與設計01-錯誤案例解析

在進行系統分析與設計時 , 沒有經驗或是沒有動腦的SA/SD 常常會給出錯誤的分析與設計結果
為何說是分析與設計 , 而不單提分析或是單提設計呢 ?
因為常常有很多人以為分析人員可以不需要了解技術 , 不需要了解實作 , 所以常常搞了一堆不會寫程式的人來當 SA ,
可是要記住 , SD 的上游 是SA 的產出 , 當 SA 的產出就是錯誤的時候 , 你就不要期望 SD 的產出會是對的
所以以下的解說,會把 SA/SD 等等混在一起解說
案例1: Web 應用系統的設計 - 長時間的批次作業
使用情境:
在企業環境下 , 可能有某些作業是需要'長時間的且是大量資料處理的作業項目 , 這些作業有一種是由排程自動定時啟動執行(不需要人工介入 , 去啟動) , 另一類則是需要由人工介入 , 來啟動.

原始需求分析:
在web 系統 , 某某頁面,由操作人員輸入"起始年月","結束年月",然後按下"開始轉檔作業"按鈕.
轉檔作業執行結束後,頁面顯示轉檔作業執行成功.

解說:
這上面的需求有幾個盲點,
盲點1: 這是web系統
盲點2: 轉檔作業的需要時間
盲點3:轉檔作業的結束狀態與結果
盲點4: 轉檔作業的過程狀態與監控

首先是web 系統的問題 , web 系統一般來說會有 session timeout 的設定 , 避免有人員連入系統之後 , 一直沒有登出而佔用系統的資源.
而需求上是使用者直接由Web頁面輸入資料,按下按鈕之後,然後系統直接轉檔,轉檔完成後,就直接顯示結果在頁面上.(這是同步作業的樣式 , 但是錯 , 這個需求應該要轉成非同步作業的樣式)
這樣的做法在 desktop 的應用程式可行 , 但是在Web 應用程式上卻是大錯特錯 , 理由是很有可能會因為 session timeout 而結束轉檔作業, 有人會說 那把 session timeout 調長一點 , 例如 24 小時(那肯定是大外行的人會這樣說)  , 有哪一個人會真的需要掛在系統上 24 小時的 , 如果設成這樣 , 不如將 session 設成永不 timeout , (那為何要設計 session timeout 呢 ? , 就是要避免系統資源的浪費 , 希望系統在相同的硬體架構下可以服務更多的使用者)

第二是轉檔作業的時間,可能需要一次整批處理幾百萬筆的資料,不太可能在30分鐘內處理完成,可能需要幾個鐘頭才能處理完成.
第三是轉檔作業執行結束,轉檔不見得一定會成功,如果失敗了要如何處理?
這個也是大外行的分析跟設計人員常犯的錯誤 ,
他們都會只考慮作業一定會成功 , 而不考慮如果發生錯誤要如何進行錯誤處理與錯誤回覆
所以如果你問他們如果發生錯誤 , 頁面會如何顯示時 , 他們就答不出來,
如果發生錯誤時 , 轉檔的資料是否會 Rollback 還是會部分寫入 , 他們可能也會答不出來 ,

我的建議解: 請將上述的需求由同步處理 轉成 非同步處理的樣式
需求:
在web 系統 , 某某頁面,由操作人員輸入"起始年月","結束年月",然後按下"開始轉檔作業"按鈕.(頁面會將需求轉成排入批次作業 , 並取得處理批號 , 這裡就是要轉成非同步處理 , 而不是直接進行作業然後等到作業處理完成後 , 才回應結果)
頁面回應 轉檔作業處理批號.
另有批次處理監控頁面,顯示批次處理作業的處理批號,起始時間 , 結束時間 , 目前處理狀態(啟動/處理中/結束) , 結束狀態(成功/失敗) , 結束狀態備註(失敗原因) , 處理筆數 , 啟動人員代碼 , 系統代碼 , 作業代碼.

系統背端會有一服務程式每隔 10 min(閒距可以調整) 去監控批次處理作業的狀態,
如果有發現到批次處理作業沒有結束時間 , 但是起始時間已經超過 4 小時者 , 則需要發警訊(Email) 給系統維護人員進行檢視 , 看看是否該批次作業已經當掉 , 需要重新執行或是進行其他補救動作等等

補充說明:
還有很多更細節的需求 , 例如系統需要根據起始年月 , 結束年月到資料庫的某某 table 去取什麼資料 , 做處理 , 或是要對起始年月 , 結束年月進行輸入資料的檢核等等 , 這些就不用特別標示出來談 , 因為這些是更基本的.


有的沒經驗或是沒有動腦想的分析設計人員真的會做出如上例的原始需求分析,
而且他們還沒有意識到哪裡有錯誤,反正這樣也能執行,然後就Coding , 結果就會是慘不忍睹 ,
這些是我在公司的外包廠商碰到的經驗 , 他們還會理直氣壯的告訴你 , Session Timeout 設長一點(反正就是要你改公司的Server 設定來配合他們的程式)

2007年2月3日 星期六

除錯心法5


心法10: 不要忘記檢查環境的基本設定-1: 日期時間


有時候軟體系統執行不正常 , 不是因為程式的問題 , 而是因為環境設定的不正確
舉例來說 ,
有些人可能會去調整 Server 的時間設定 , 例如把時間往前調或是往後調 ,
這些設定可能會導致 Server 上的軟體運作不正常 ,
特別是在Cluster 架構下 , 你又只異動其中一台Server


或者是在J2EE Server 環境下 ,
舉例來說 , Tomcat Server 會根據 jsp 檔的修改日期時間 , 來決定要不要重新將jsp 編譯
很久之前 , 有同事去異動了Server上的時間 . 然後當他不斷的去修改 jsp , 卻發現jsp執行的結果 , 一直是舊的jsp頁面執行結果 , 查了很久,才發現是有人異動了Server上的時間 , 導致 Server 檢查jsp 的日期時間時 , 認為 jsp 是不須重新編譯的情況 , 結果不論同事怎麼修改 jsp 就是不會有更新的結果出來

心法11: 不要忘記檢查環境的基本設定-2: Client 的 IE 的編碼設定
之前有發生過 User 來反應 , 他看到系統的頁面 , 是一片空白 ,我們的頁面輸出是big5,
原先以為是系統有問題 , 但是跟其他人的機器一比對,其他人的執行結果都正常 ,
發現只有他的會這樣

去檢查了他的 IE 設定 , 發現他把編碼設定成 UTF-8 , 結果導致頁面出現一片空白

2007年1月8日 星期一

工具介紹-Paros


工具介紹-Paros

Paros 是使用 Java 開發的工具 (可以從 Source Forge 網站下載)
它可以充當 proxy , 並且顯示 瀏覽器與網站中間的 http request & response 的詳細內容
(這個對於要除錯 網站程式 或者是要學習 http 通訊協定是很有用的)
除此之外可以充當簡易版的網站弱點掃描工具
<<我在撰寫 WEB 程式特別是 ExtJS 在除錯時 , 特別有用 , 可以看到到底是因為後端沒有把資料傳回來 , 還是因為前端的 SCRIPT 寫錯>>

此工具啟動後的預設位置為 localhost , port 為 8080
所以 IE 的 proxy 要設定為 localhost , 8080 port
注意事項:
IE 的Proxy 預設值是給   區域網路使用的(如果你是在公司透過區域網路上網 , 此項目就是了)
但是如果你是在家中透過 ADSL 撥接上網 , 則需要設定的 Proxy 是要修改 ADSL 連線的設定的 Proxy 才會有用