2009年7月21日 星期二

Mediawiki 的錯誤應用方式

Mediawiki 的錯誤應用方式

我對 Mediawiki 的認知:
Mediawiki 眾所周知就是共筆系統 ,  是大家可以一起分工寫一篇文章(或是很多很多篇文章)
這樣的系統提供的是一個"活的"文件系統

什 麼是活的文件系統
就是一份文件可以不斷的成長(它可以是某甲創造出來  , 某乙編修 , 某丙審核)
同時它也提供了整個的歷程檢視跟版 本控管 ,
每個修改歷程都被紀錄下來



對於公司來說 , 如果要把Mediawiki 用在系統開發上 ,
就 是可以把手冊(使用者手冊 , 安裝手冊 , XXX手冊)
都透過 Mediawiki 撰寫 ,

甚至於可以是一個主編把某份 文件的大綱訂出來後 ,
讓多個人同時分工去編輯大綱下的某個小節的內容
Mediawiki 也提供針對內容進行全文檢索功能


OK , 接下來 , 要來講錯誤的Mediawiki 應用方式
聽過某間公司的某個單位 , 他們是這樣用Mediawiki的 ,
他們只 是把 Mediawiki 當作一個擺文件的Portal ,
所有的文件都是WORD , PDF 等等 , (一堆專案文件的檔案)
然 後只把  Wiki 本身只是拿來作這些文件的LINK 入口 ...

Oh...天啊 , 真的錯很大 ,... ,
如果要 這樣用 , 不如搞個檔案管理系統 , 例如 MS Share Point Portal Server
這種用法根本就沒有發揮 Mediawiki 的效用 ,...,
真正專案的內容都藏在附件檔案(WORD , EXCEL , PROJECT)檔案中 , 這樣子要 Wiki 做什麼?

共筆系統就是頁面內容就是文件 , 就是你要賦予它生命的地方 , 它可以被很多人擴充 , 被討論 , 被修改 ,
所 以當你要寫專案範圍或是需求範圍時 , 甚至可以請 User 上去寫屬於他們的部份 ,
然後你們這方可以在 User 寫完的同時 , 也針對審閱的看法 , 直接進行修改或是說明審閱的意見 ,
因為它有版本歷程 , 所以每一次修改 , 都像是活的 ,(因為每一頁內容  , 都可以加上一串討論 , 所以線上討論的結果 , 搭配內容 , 就像是每一次會議紀錄 加上 最後的產出)
也因此 , 它可以是最佳的線上即時專案內容的匯總區 , + 討論區 , + 即時的專案規格區...

想想 , 每次當你使用 WORD 寫了第 1 版的專案文件 , 然後 User 看過 , 大家就可以指指點點 , 然後再加上你的主管 , User 的主管 , 主管的主管 , 甚至開發商 , 到最後 WORD 檔可能是第 n 版 , 但是討論的過程不見了 , 被修改的某個條文 , 出自於某個人的要求變更 , 也沒人知道...

最 重要的是文件最好不要同時散給多個人過目 , 否則修改的地方有衝突就糟了 ,
反之 ,  使用 Wiki 就是讓每個人都發表意見 , 但是同時 , 每個人修改的地方 , 也都留下歷程 ,
不論是改的好或是改的不好 , 也都可以讓後來者有跡可循

再說 , 很多公司或是企業最喜歡導標準化文件 , 但是常常第一關 ,
同類的文件 , 結構大不相同 , 或者是同一份WORD文件光是要調整結構 , 就要能搞得不是很聽話的WORD
使用 WIKI 則不需要 , 因為它的段落結構就是哪樣 , 只要訂出一個範例的段落結構 ,(或是樣板模板)
其 他人就很容易共用


拜託 , 不要再拿 Mediawiki 來當垃圾掩埋場 ,
(專案文件檔案一大堆 , 當作 link 附件 , 埋進去 , 你會重新找的到 , 然後拿出來用才有鬼  )

每種軟體必有其適用之處 , 有其強項所在 , 也有其弱項所在 ,
拜託別亂用 , 用完之後 , 就說某某軟體很難用...

碰到這種開著數頓吊車吊一盒雞蛋上 5 樓 , 然後還要怪吊車很難用 , 這種人還蠻多的....
也不要開著跑車 , 硬是想要當作送菜大卡車 , 要把 幾十簍的高麗菜運來運去的


冷 完了....
拜託 , Mediawiki 不是垃圾掩埋場 , 不要再亂埋文件了....
(這不是肯得雞....很老掉牙的廣告台詞 了.....)

2009年7月19日 星期日

在UBUNTU 上玩 COBOL -使用備忘錄

在UBUNTU 上玩 COBOL -使用備忘錄
UBUNTU 8.10 , Eclipse 3.4 , Cobol IDE , Open COBOL ,

注意事項:
以下的 COBOL範例(Hello.cob , Hello3.cob)是我參照
Teach Yourself COBOL in 21 days Second Edition
上面的 入門範例 , 所改寫出來的 , 僅供測試使用


(1)下載安裝 Cobol IDE
Download Cobol IDE
http://www.eclipse.org/downloads/download.php?file=/cobol/downloads/cobol_plugins_3.4.0_linux32.zip
解 壓縮 cobol_plugins_3.4.0_linux32.zip
然後把解開之後 features & plugins 複製到你的 Eclipse 目錄下

(2)安裝 OpenCobol
Synaptic套件安 裝程式 , 輸入 Open-Cobol 然後就可安裝

(3) fujitsu cobol 手動建立連結 (可忽略此步驟)
ln -s /usr/bin/cobc /opt/FJSVcbl/bin/cobol
cobc  是open-cobol 的執行檔 ,
cobol 是 fujitsu cobol (net cobol) 的執行檔
在這裡是為了欺騙 Cobol IDE 的自動建置(build.xml) - 詳情後述

(4)執行 Eclipse

(4.1) 建立cobol專案
File -> New -> Other -> COBOL -> COBOL Project(圖片 COBOL-001.jpg)
p1



Project name:輸入 MyLabCOBOL001(圖片 COBOL-002.jpg)按下Next
p2

Target name:輸入 MyLabCOBOL001(圖片 COBOL-003.jpg)按下Finish
p3

(4.2)建立cobol source - Hello.cob
在專案下的Source Files按下滑鼠右鍵 ,出現功能表
New -> COBOL Source(圖片 COBOL-004.jpg)
File name: 輸入 Hello
PROGRAM-ID: 會自動同上面的名稱也是 Hello
按下Finish
p4

(4.3)修改 Hello.cob 的內容
COBOL IDE 會自動建立 Hello.cob 預設內容如下(圖片 COBOL-005.jpg)
p5

修改Hello.cob 為以下內容(圖片 COBOL-006.jpg)
====Hello.cob START=====
*Hello.cob
 IDENTIFICATION DIVISION.
 PROGRAM-ID.   Hello.
 ENVIRONMENT    DIVISION.
 CONFIGURATION  SECTION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 PROCEDURE DIVISION.    
 PROGRAM-BEGIN.  
     DISPLAY "你說中文也會通".
 PROGRAM-EXIT.
     EXIT PROGRAM.

 PROGRAM-DONE.
     STOP RUN.

END PROGRAM Hello.
====Hello.cob END=====
p6

(4.4)手動編譯 Hello.cob 這隻COBOL
開啟終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令
cobc -o Hello -x Hello.cob

命令說明如下:
告訴它輸出的執行檔的名稱是 Hello(-o Hello) ,
要編譯 Hello.cob 為執行檔(-x Hello.cob)
編譯的時候如果有警告可以暫時不理會 , 只要它會過就可以


如果沒有問題 , 我們的第一隻 Cobol 程式已經完成編譯 , 可以執行
開啟終端機視窗 , 輸入以下指令
./Hello
程式執行結果顯示 "你說中文也會通"(圖片 COBOL-007.jpg)
p7

(5)解說為何要設定在 (3) fujitsu cobol 手動建立連結
回過頭來看專案目錄下有一個 build.xml (圖片 COBOL-008.jpg)
p8

其中的COBOL編譯器設定是 /opt/FJSVcbl/bin/cobol
但是 UBUNTU 上面並沒有  fujitsu cobol  , 所以我們只好手動的建立連結去欺騙 COBOL IDE的動作
事實上 , (3)不做 , 也不會有問題,(只是會在IDE的CONSOLE出現編譯錯誤訊息)
因為我們是要手動編譯(4.4)

注意:
不要嘗試著 去修改build.xml , 因為COBOL IDE 會在你修改或是新增 COBOL SOURCE 之後
重新產生 build.xml , 等於你修改的統統無效 , 而且它會在你每次按下 Ctrl + S存檔之後
就去執行 build.xml
這個是沒有甚麼效用的 , 當然你可以去拿 COBOL IDE 的 SOURCE 重新修改跟調整之後變成你要的
但是在這邊 , 我只要要玩玩COBOL, 只是利用 COBOL IDE去顯示COBOL語法的標記
所以我只用最快速的方法 , 讓它可以執行
有興趣要改build.xml 請參閱附錄2 , 但是沒什麼效果


(6)新增 COBOL SOURCE - Hello3.cob
內 容如下
====Hello3.cob START====
*Hello3.cob
 IDENTIFICATION DIVISION.
 PROGRAM-ID.   Hello3.
 ENVIRONMENT    DIVISION.
 CONFIGURATION  SECTION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01  FIRST-NUMBER      PICTURE IS 99.
 01  SECOND-NUMBER     PICTURE IS 99.
 01  THE-RESULT        PICTURE IS 999.
 01  THE-NAME          PICTURE IS XXXXXXXXXX.
 01  THE-MESSAGE       PIC X(20).
 01  THE-NUMBER        PIC 99(2).

 PROCEDURE DIVISION.    
 PROGRAM-BEGIN.
     DISPLAY "Enter the first number:(0-99)".
     ACCEPT FIRST-NUMBER.
     DISPLAY "Enter the second number:(0-99)".
     ACCEPT SECOND-NUMBER.
     COMPUTE THE-RESULT = FIRST-NUMBER + SECOND-NUMBER.
     DISPLAY "The result is:" THE-RESULT.
     
     MOVE "HELLO " TO THE-MESSAGE.
     DISPLAY "Enter someone's name.".
     ACCEPT THE-NAME.
     DISPLAY THE-MESSAGE THE-NAME.
     
     MOVE 12 TO THE-NUMBER.
     COMPUTE THE-RESULT = THE-NUMBER + 99.
     DISPLAY THE-NUMBER "+ 99 = " THE-RESULT.     
     CALL "Hello".
  PROGRAM-DONE.
     STOP RUN.   
 END PROGRAM Hello3.
====Hello3.cob END====

(7)編譯及執行 Hello3.cob(圖片 COBOL-010.jpg)
開 啟終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令
cobc -o Hello3 -x Hello3.cob

如果沒有問題 , 我們的第2隻 Cobol 程式已經完成編譯 , 可以執行
開啟終 端機視窗 , 輸入以下指令
./Hello3
它要你輸入數字(first number): 請隨便輸入0~99的數字 , 按下Enter
它要你輸入數字(second number): 請隨便輸入0~99的數字 , 按下Enter
畫面會顯示兩個數字加總的結果

然後要你輸入命名(someone's name): 請隨便輸入 , 按下 Enter
畫面會顯示 HELLO %你輸入的姓名%

然後畫面最後一行會出現
libcob: Cannot find module 'Hello'

這個是我們的程式中有呼叫Hello的外部Module , 但是它找不到對應的 Hello.so

所以我們重新編譯 Hello
開啟 終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令: 注意這次不要加額外的參數
cobc Hello.cob
p9

然 後重新執行 Hello3 (Hello3不需要重新編譯)
./Hello3
最後你可以看到 Hello3成功的呼叫  Hello並且顯示 Hello的內容在畫面上
(圖片 COBOL-011.jpg)

p10


cobol 呼叫外部 MODULE的成功關鍵點在於 XXX.so是否可以存取的到
p11

如果你有按照我上面的步驟 進行
那麼 , 那麼你應該在  60 分鐘以內可以完成上面的動作

包 含建立 COBOL SOURCE , 編譯 , 執行
還包含了 CALL 外部的 MODULE ,
就是這麼簡單 ,
備忘錄 就是備忘 ,


附錄1:
Open-COBOL可以檢查語法的相容性 ,如果是要檢查是否符合IBM的COBOL
加上 -std=ibm ,
範例:
cobc -std=ibm -o Hello -x Hello.cob

附錄2: (如果你不會 Java就不要理會這段了 , 這段有玩Java的會知道在做什麼)
自 建立ANT build2.xml (為何不建立 build.xml , 因為會被COBOL IDE給蓋掉)








   



   




執行的時候
ant -f build2.xml

run-cobol.sh 內容如下
cobc -std=ibm -o $1 -x $2

也因此我才不建議直接去修改 build.xml>


附錄3:
COBOL範例程式電子書 , 這本內容夠淺顯(請自己上網路上找 , 有WEB版)
Teach Yourself COBOL in 21 days Second_Edition

在UBUNTU上玩COBOL到此結束