2007年2月27日

Java 怎麼判斷檔案的 ContentType/MIME-Type ?

其實在利用上傳元件做檔案上傳動作時,上傳元件會順便傳回該上傳檔案的 ContentType/MIME-Type 的資訊,可是如果沒有把該項資訊塞入資料庫的話該怎麼辦呢?

透過 Get the Mime Type from a File 這篇文章得知有兩種方法:

  1. javax.activation.MimetypesFileTypeMap:據該文的說法,這是透過檢查附檔名方式判定
  2. JMimeMagic lib:似乎是針對檔案的特徵進行識別的。
不過前述文章中對 JMimeMagic 的程式範例應該是舊版的,新版的話直接參考官網上的 MagicTest.java

另外,JMimeMagic 有提供 Maven2 支援,設定如下:

<dependency>
  <groupId>jmimemagic</groupId>
  <artifactId>jmimemagic</artifactId>
  <version>0.1.1</version>
</dependency>

2007年2月26日

年假回憶錄

很快的九天年假就這麼沒了,該是結算一下過年期間幹了啥事的時候了。
  1. 教長輩們努力玩 Wii :其實,我還真擔心 Wii Remote 飛出去砸到啥哩!
  2. 看了漫畫『美味的關係』前 15 集:不過因為劇情由一開始以料理為主轉變成以錯縱複雜的愛情為主的關係,並沒打算再往下看了。好吧,其實是因為我只喜歡一對一的,單純的愛情故事。
  3. 看完漫畫『吃飯了沒』:其實故事的起、承、轉、合真的老套,不過好歹了算是部勵志的料理漫畫。
  4. 在各項和舍弟的對抗賽中(包含 Wii Sports Bowling、Wii Sports Boxing、Boxhead more rooms、猜拳… )大勝,從年初一到初五的早餐都是他負責買單,總戰績為 8 勝 2 敗 1 平手。想起去年慘敗在其手下的慘況就深深覺得…
  5. 整理 Server 主機,並將顯示卡由 X300 昇級到 X700:現在我很害怕把主機板啥的弄壞掉說。
  6. 安裝 beryl 再度受挫:改用 Open Source 版的 radeon driver 時,卻看到 xorg-server 回報沒有 radeon 這個 module,虧我還特地重編了好幾次的 xorg-server 說…
  7. 開始寫 Resume:不過老實說還沒寫到重點部份,而且我寫到一半就開始研究起用 ant 來編譯 latex 的可行性,再說… 放假真的很累嘛… (謎之音:害羞個啥啊?)
  8. 跑了趟嘉義:發現嘉義縣公車的蛻變與嘉義客運的不知長進。

2007年2月24日

沒有無名的日子?

一切都始於 XDite沒有無名的日子,我該怎麼辦? 中所提供的素材,於是有不少網友各自做了 一些影片。我想應該是不會有人拿去參加無名辦的那個比賽活動吧?

不過針對影片的錄影部份個人是覺得換鏡的節奏是快了些,快到還沒意識到要強調無名的什麼狀況時,鏡頭已經跳到下一個議題上了。

總的來說,我會比較喜歡 Dryden 的版本,不過更希望能出現一個匯整各家創意的終極版本作為這個事件的完美句點。

2007年2月15日

台灣微軟正式承認 Windows 軟體品質不佳

由 PCDVD:使用WINDOWS正版獲得的品質 一文得知,台灣微軟(應該吧)正式承認 Windows 軟體品質不佳。

有圖有真相:
微軟對 Windows 品質的說法

又到了檢討信用卡持卡狀態的時候了

先前有申辦富邦 A Money 信用卡的人在這幾日應該都陸陸續續收到了信用卡權益修訂通知,最主要的改變就是現金回饋方式做了 大幅修改 大幅調降。

老實說銀行這種自行變更契約內容的作法蠻令人肚爛的,所以該開始考慮另外辦張別家的信用卡的時候了。很早以前有聽說華南銀行的信用卡現金回饋其實比北富邦好,A Money 之所以知名度較高也不過就是廣告費花的比較多而以。

對了,把這問題提報給水果日報的話不知道會演變成怎樣?(那個網站爆料要填的資料太多了,放棄之!)

其他參閱:

2007年2月14日

馬遭起訴 決選總統

昨日最慘烈,今日上版面之重大新聞:
  1. 蘋果日報:馬遭起訴 決選總統
  2. 蘋果日報:法界:邏輯正確結果荒唐
各路(部落)格揆相關看法:
  1. 苦牢之最後一年:馬英九因特別費案被起訴
  2. Phanix’s Blog:起訴即停權 v.s. 排黑條款
  3. 卓別林的美麗人生:選總統,證清白?
個人看法:
  1. 馬英九的反應不過是再一次的證實『這些自稱為法律人的傢伙總是狂妄的以為自己懂法律,所以無論做什麼事都不會違法,更不該被起訴』,前一個案例是 陳水扁
  2. 表面上台灣的司法似乎已經獨立,可是政治人物的對台灣司法根本就不曾尊重過。不然不會在馬英九被起訴時就疾呼這是政治干預司法,是司法史上最黑暗的一天;而扁嫂被起訴時卻稱讚其為司法獨立建立威信。當然還有一位自以為訂定法律的人就會懂法律的立法委員,政治干預司法其實本來就是現在進行式而以。
  3. 不管是陳水扁還是馬英九,他們被起訴的主因同樣都是對公款的私用,結果國民黨、民進黨、甚至是親民黨竟然都是嚴以律人,寬以待己。從這點看來 2008 年人民還能把政權交給誰呢?
  4. 對於馬英九打算以 2008 大選去證明其清白的參選預告,只能說台灣司法制度完完全全被馬英九給踩在地上了。『當選等於清白』這句話究竟是那個死豬頭說的?
  5. 不知為什麼馬英九的清白與否不是在法庭上爭取而是訴諸選舉呢?難不成是因為真的不清不白所以只好轉移焦點?
  6. 先前馬英九在國務機要費案起訴時說過陳水扁『身為國家元首,居然涉及貪污,陳水扁已無資格代表國家,行使憲法所賦予的權力』,拿過去馬英九的話來檢驗現在馬英九的作為後,不禁想問問馬英九為什麼會覺得有資格去參選 2008 總統大位,擔任國家元首呢?
  7. 對於法界人士中的某一審庭長所稱「這是一份完全不符合人民法律情感的起訴書!」給人的感覺就是陳水扁可以起訴,但是馬英九就是不可以起訴。司法是要看證據的,這位庭長的發言卻是法律是配合犯罪嫌疑人而量身打造的。難怪一般平民老百姓總是對司法的公正性抱持著懷疑的態度。
其他:
  1. 藍營人士一向的作為都不曾考慮過 2008 後自身執政的需求,馬英九會被起訴其實也是藍營在國務機要費案上努力的成果。
  2. 藍營大概沒想過下次執政時的機密外交要怎麼進行吧?不過藍營還有前外交部長蔣孝嚴在,或許可以期待他在愈來愈多外交限制下如何開拓台灣國際邦誼的表現。

2007年2月13日

Hibernate 和 XDoclet

這兩天本來一直努力想把 .java 檔轉成 Hibernate 使用的 hbm.xml 對照表。最後從各討論區中才發現搞不好原來附的那個 hbm.xml 檔才是真正的原始檔,正確的作法應該是由該 hbm.xml 檔轉成 .java 檔才對。

馬的,怎會這樣?現在換成 Maven 2 要叫用 hbm2java 有嚴重的困難了…

2007年2月12日

關於高鐵的 Stakeholder

沿續自高鐵售票系統的軟體開發、系統設計之爭後,開始有了 Stakeholder 相關的討論:
  1. 喲哪桑 Speaking | 管理.軟體.產品.專案:品質不好,誰有責任?
  2. 喲哪桑 Speaking | 管理.軟體.產品.專案:Stakeholder Management
  3. 同人的生活派對:內行人看門道,外行人看熱鬧
  4. 獨孤木with diggirl.net:stakeholder是誰?
  5. 對台灣高鐵售票系統之我見
基本上,看完前述的討論後突然發覺一個問題:Stakeholder 只有一個人而以嗎?

引述自獨孤木:stakeholder是誰?
可是只要有個高層說,你要為這種事做準備,要不然休想過關,林北的章就是不蓋,永遠別想驗收過關。這個人就是我們的stakeholder。因為他說了算。

我一直以為所謂的 stakeholder 指的是『在專案生命週期內直接或間接會對專案的執行結果產生長期或短期、有形或無形影響的所有角色(包括個人或組織)的總合』。在這個說法下出錢的不只是老大,他也是個 stakeholder、專案經理承擔專案成敗之責,所以他也是 stakeholder、系統使用者是 stakeholder、甚至連那個沒啥名氣的地方小報社都 可能 是個 stakeholder。

獨孤木所指的角色應該是屬於 key stakeholder,而 key stakeholder 也不會只有一個。弄清楚專案中有那些 stakeholder 並識別出有那些人是 key man 以及這些 key man 的關鍵程度正是 Stakeholder Management 的主要目的啊。

2007年2月11日

以正名為名的鬧劇

最近扁政府很努力的在搞國營事業正名活動,影響所及,包含中鋼、中油、中船、中航(其實是華航啦,所以下一個就是中華電信嗎?)、還有中郵統統一團亂中。

對於扁政府一頭熱的在台灣內部搞正名活動,不禁想問這樣的正名有什麼意義可言?這樣隨意搞搞就能讓台灣打開世界能見度嗎?如果不能保證的話,那麼相關正名所衍生的費用可不可以請民進黨籌措支付呢?

除了這些國營單位的正名是場鬧劇外,其所屬工會的反應也很詭異。不知道企業改名之後對員工權利是造成了什麼影響,不然怎會搞的 有人想要去潑汽油 呢?

正名,一場扁政府與工會間合演的鬧劇。

2007年2月10日

Wii 入手

為了讓家裡的長輩能夠多動腦、多動身體,所以拗了舍弟買了一台 Wii 。雖然他明明年終領的比我多,雖然他明明尾牙中了 5 萬元,可是他還是堅持只願意支付 NT$13,000 ,不足的部份要我自己貼。

一旦決定購入後,價錢通常不會以最便宜作為考量,真正重要的是零配件的完整性。於是就在 Wii 本體、Wii Play(第一次的 Wii)、Wii Sports、SDガンダム スカッドハンマーズ(SD 鋼彈流星槌)、,Nunchuck(俗稱雙截棍左手把)、果凍套 x 2(保護、識別用)後,總計 NT$16,000,除了 Wii 本體外(比一個月前整整貴了 NT$2,000)其中最令人生氣的是 Nunchuck ,當每個店家都聲稱缺貨的同時只能含淚以最低報價再加 NT$200 的價格佔有。

這台主機預計在下週年假期間交給家裡長輩使用,所以其實前面所列的遊戲中本不該出現鋼彈流星槌的,但是英明的舍弟說:『如果長輩可以接受這類遊戲的話,再到嘉義買就好了,我們過年也是要玩樂的啊』,就這樣,我現在很努力在破關中。希望在過年前能將這套遊戲破關,再交給我弟去玩。

2007年2月8日

網協一日數變 盧彥勳無法代表中華隊出賽

新聞: 其他: 看法:
  1. 印象中網球選手對網協的不滿並不是最近才開始,更早之前就有看過退休職業女子選手(名字忘了)對網協的不滿。
  2. 如果只是一個網球選手的不滿或許只是誤會,但如果知名的網球選手對網協幾乎都有意見的話,那麼就不得不令人懷疑網協的作為了。
  3. 網路上已有將網協改名的提議:中華民國網球阻礙協會,簡稱:網礙(不要聽歪了)。
  4. 體委會難到只能咕噥兩句而不能對網協加以整頓嗎?

2007年2月6日

Maven2: 刪除非預設條件下之目錄或檔案

將專案源碼打包到部署包裝檔 (jar/war) 檔後,當然要試試可否重新編譯及部署,在解開 jar/war 檔後第一眼看見的卻是依附於 jar/war 結構所額外產生的檔案或目錄,如下例:
ada@www ~/Eclipse/SnipSnap/target $ tree -L 2 -F --dirsfirst macro
macro
|-- META-INF/
|   |-- maven/
|   |-- services/
|   `-- MANIFEST.MF
|-- net/
|   `-- adahsu/
|-- src/
|   |-- main/
|   |-- site/
|   `-- test/
`-- pom.xml
從這可以發現其實 META-INF/ 及 net/ 兩個目錄其實是不必要的。橫豎留著礙眼,人工去刪除是個方法,但讓 maven2 自行處置會更好。

透過 maven-antrun-plugin 去刪除是個方法,不過 Maven2 官網提供一個更方便且專業的方法:Delete Additional Files Not Exposed to Maven,這樣只要執行 clean 這個 goal 就可以將所有不需要的目錄、檔案通通刪掉。

以下是使用範例:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-clean-plugin</artifactId>
      <configuration>
        <filesets>
          <fileset>
            <directory>META-INF</directory>
          </fileset>
          <fileset>
            <directory>net</directory>
          </fileset>
        </filesets>
      </configuration>
    </plugin>
  </plugins>
</build>

Maven2: 將指定目錄、檔案一併打包

先前提過個人習慣將一個軟體開發專案的相關資訊統統塞入部署包裝 (jar / war) 檔中,昨晚終於從別人家(就是 radeox 啦)的 pom.xml 中找到範例。
一開始的想法是以為在 resources 區段中直接指明要將某一目錄掛到部署包裝檔中,不過實作後發現檔案複製的方式與期望不符,因此不可行(也可能只是不會設定)。
後來,從前述 radeox 的 pom.xml 中發現其實 Maven2 可以整合 ant 的任務 (task) ,只要透過 maven-antrun-plugin 這個 plugin 即可。所以若想將整個 src/ 目錄放進部署包裝檔的話,只要在 build 區塊下使用 maven-antrun-plugin 並指定相關任務 (tasks) 內容後即可包裹出含有 src/ 目錄的部署包裝檔。
<build>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-source</id>
        <phase>generate-sources</phase>
        <configuration>
          <tasks>
            <echo>Copying src/ to target jar. </echo>
            <copy todir="${project.build.outputDirectory}/src">
              <fileset dir="src/"/>
            </copy>
            <copy todir="${project.build.outputDirectory}"
                  file="pom.xml"/>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</build>
現在,最頭大的是那些 expression 變數要在那邊查啊?

※ 2007-02-07 補充:先前可能真的設定錯誤,以下的設定可以讓 maven2 自動完成檔案複製的動作而無需 antrun 的介入。
<resources>
  <resource>
    <directory>${basedir}</directory>
    <includes>
      <include>src/**</include>
    </includes>
  </resource>
  <resource>
    <directory>${basedir}</directory>
    <includes>
      <include>pom.xml</include>
    </includes>
  </resource>
</resources>

※2010-11-18 補充:最後實作的方式是在 maven-war-plugin 中操作,如下:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.0.2</version>
  <configuration>
    <docencoding>UTF-8</docencoding>
    <webResources>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/webapp</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <includes>
          <include>src/**</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <includes>
          <include>pom.xml</include>
          <include>initial.sh</include>
        </includes>
      </resource>
    </webResources>
  </configuration>
</plugin>

2007年2月5日

Maven2: 使用 scp/sftp 進行網站部署時注意事項

在 Maven 2 中想要執行部署作業時,可以透過 SCP、SFTP、SSHEXEC、以及 FTP,其中 FTP 因為無法支援多階目錄上傳等作業(應該是懶的寫)所以除了用來部署網頁應用程式外,其他像是 repository 或 site 的部署作業都會優先考慮使用 SCP 或 SFTP (SSHEXEC 有跨平台的問題),不過最好用的應該還是 SCP 吧,它實際的動作是把待部署的檔案打包成一個 zip 檔上傳到遠方主機後再予以解開,相對來說效率最好。

在 Windows 環境下不管是 SCP 或 SFTP 下進行部署作業時,有很大的機會看到以下這個訊息並等待部署人員輸入 yes 以便繼續部署作業。通常還會發現這個訊息竟然是每次都會出現,不禁懷疑是不是什麼地方沒設定才會被迫透過人工的介入以完成整個部署作業。

[INFO] [site:deploy]
The authenticity of host 'aa.bb.cc.dd' can't be established.
RSA key fingerprint is ee:77:22:ff:aa:33:66:dd:22:ee:11:99:ff:dd:77:55.
Are you sure you want to continue connecting? (yes/no):

其實,就和 OpenSSH 一樣,Maven 2 使用的 JSch -- Java Secure Channel 會搜尋使用者家目錄下有無 .ssh/ 目錄,並將相關設定寫入該目錄下特定檔案中(和 OpenSSH 相容)。會造成 Maven 2 一直出現前述訊息的原因在於 JSch 無法存取到 "%USERPROFILE%\.ssh" 或 "$HOME/.ssh" 目錄(JSch 不會主動建立),所以解決的方式只須收建立該目錄後,JSch 即可自動建立相應的檔案 (known_hosts) ,也就不會一而再、再而三的要求部署人員介入部署作業了。

另外,如果有指定使用 key pair 方式登入的話,會在 SSH 連線時出現類似以下的訊息,可以注意看看。

Using private key: C:\ssh-key\my.webtest.privateKey

2005-08-31 #1

Maven 2 初始化

  1. Maven 官方網站 下載 Maven 2。
  2. Installation Instructions 說明完成執行環境設定動作。
  3. 於 DOS 視窗下執行 m2 install 初始化 Maven 2。
  4. 然後等著看它出現 FAIL …

2007年2月4日

力霸事件/遣返失敗蔣孝嚴批評 陳唐山怒斥:沒常識

新聞: 看法:
  1. 不知道為什麼每次有外交上的議題,蔣立委孝嚴先生就會出來批評外交部。和軍購案一樣,要不就請蔣立委回鍋接任外交部長,不然就請閉嘴站旁邊去。現在的立委就只會出一張嘴而以,其他有啥事做的到的?有啦!打群架。
  2. 每次蔣立委都拿過去他那個時候的外交部是如何如何,現在的外交部卻是怎樣怎樣在批評外交部。恕我問一句:當年章外交部長時代有一個動不動扯政府後腿的在野黨嗎?在蔣立委開口批評外交部之前請先想想國民黨本身在追緝王又曾這件事情上能做啥努力,又做了什麼努力,可以嗎?
  3. 再說當年的時空背景與現在的時空背景差異這麼大,個人是很難相信蔣立委在王令曾這一件事情的處理上就能夠將王又曾捉回台灣的。不然,請蔣立委回鍋接外交部長做給這些外交部的菜鳥長官看看如何?
  4. 啊,我忘了國民黨的人才其實只屬於國民黨而不屬於台灣的,所以他們家主席是不會同意蔣立委重新接掌外交部的。

2007年2月3日

使用 Maven 2 的一些心得

經過一陣子的練習與試用後,設為 Maven 2 應該真的可以簡化 Java 軟體的部署與追蹤動作。

怎麼說呢?

  1. 快速完成專案初始作業:透過定型化的目錄結構,不只可以迅速的完成專案的初始化階段,還可以快速的將原先的軟體專案轉換到 Maven 2 上。
  2. 完整的專案狀態報表支援:透過自動化發佈功能可以讓專案成員甚或使用者隨時掌握專案進度。
  3. 支援 SCM 源碼管理系統:這部份目前還沒玩到,不過也許日後會有一個專案放棄 POM 的檔案庫專區,然後於半夜時分自行 checkout 專案的相關 pom.xml 檔後,再透過 Maven 2 自動 export (我很難理解為什麼大家都喜歡用 co 做 checkout 的動作)出所有的源碼,然後再進行 compile、test、deploy 等等程序,然後還會把整個專案的狀態更新到網站中。
  4. 支援多階層專案管理:類似 Subversion 的 external 屬性,在專案的 code reuse 上提供了相當程度的支援。怎麼在 Maven 2 與 Subversion 兩個相似功能之間進行搭配可能是個有趣的議題。
  5. 相較於 Maven 1 ,Maven 2 的設定真的簡單許多。
前述的第 1 及 第 2 點是目前最重要的心得,而第 3 及第 4 點是後續要練習的部份。

不過使用 Maven 2 上最大的困擾是卡在如何讓 Maven 2 將整個開發環境給塞進 jar / war 檔中。先前曾提到個人習慣將完整開發設定附在打包的 jar 或 war 檔上,這樣做等於是提供了一個備份機制在正式運作的系統中,即使開發用主機陣亡時也能迅速的從正式系統中下載 jar / war 檔接觸進行開發。當然這樣的思考方式其實和使用 SCM 有點相違背,畢竟所有的資料可以重新由 SCM 中 checkout 出來即可,但是未來接手的人會不會習慣使用 SCM 呢?天知道。

另外也同時思考如何讓 Maven 2 在建立目標檔案時能與 Subversion 間版本號同步的問題,有點類似 build number 的概念,像是如果 Subversion 檔案庫中目前的記錄版本是 Rev: 123 ,而 pom.xml 中指定的軟體版本是 1.0 時,能組態出 myPackage-1.0.123.jar 這樣的檔案名稱。透過 filter 不知可否達成?

2007年2月2日

在身體不適時,最好不要看『烏龍派出所』

今早起床突覺頭疼不已,用過早膳服過藥後又躺回床上休息。

後來因為太安靜(單身者的悲哀)的關係就打開電視想感受一下不再是一個人的孤獨。在看過洛克比空難事件調查後不小心轉到了衛視頻道。12:00 播的是海賊王,然後接著是烏龍派出所。

不可否認的,烏龍派出所那有台灣味的配音讓我不由得看的出神,而且被那爆笑的劇情搞的狂笑不已。要知道在頭疼時又用力狂笑其實會讓腦袋更加疼痛(腦壓升高?那是誰說每日大笑可以延年益壽的),於是就在這種莫名其妙的感覺下把今天(其實應該是重播的吧)的劇情給看完了。

唉,還是把電視關了以免疼痛加劇才是。

2007年2月1日

Linux 發行套件的選擇

個人目前是使用 Gentoo 這個 Linux 發行套件,對於發行套件的選擇,網路上總會有一些爭論不休的討論,以下是針對 Gentoo 的一部份討論串:
  1. Why Gentoo Shouldn’t be on Your Server
  2. What distribution will *YOU* switch to?
其實一旦選擇了某個 Linux 發行套件後,基於人類天生的墯性因素是不太容易再重新去適應其他的發行套件的。不想換的原因當然很多,其中一個理由可能是和軟體套件安裝的便利性以及衍生的軟體設定便利性兩項有關吧。

一開始其實也以 RedHat 發行套件為主要系統,從 RedHat 7 開始一直升版到 RedHat 9 為止。後來因為 RedHat 不再提供 Security Update (up2date) 服務而開始找尋其他發行套件,那段時間內總共在 VMWARE 上試過 SuSE、Debian、Gentoo 等三套。

  1. SuSE: SuSE 裝起來很炫,不過因為被 yast 套件管理機制搞的有點莫名其妙,加上當時少有中文方面的資訊(Novell 尚未併購 SuSE)所以在許多問題得不到解答的情形下就刪掉了。
  2. Debian: 個人對於 Debian 的安裝程式印象特別深刻,尤其是只需一張開機磁片就可以透過網路進行完整安裝的作法更是深感佩服。不過最後因為在 X 的安裝、設定上受盡挫折之故也就放棄了。
  3. Gentoo: 其實 Gentoo 我裝過兩遍,分別是在安裝 SuSE 前及 Debian 後。第一次裝的時候好像是 2004.0 吧,第二次裝時已改版到 2004.3 。第一次安裝時因為 kernel 編譯問題,最後以失敗收場;第二次則由於 GOT 的成立而得以完成整個中文化環境的建置。
由於當時已經完成 Gentoo 的安裝工作,當然也就再懶的去試其他發行套件的優劣,因此對於後來新興的 Ubuntu 或是臥龍小三的 B2D 等就沒有再去接觸,雖然許多人都蠻推薦的。

那麼 Linux 新手如何選擇一套適用於個人的發行套件呢?最簡單的想法就是全部裝一遍玩玩,看看那一套用起來最順手。講起來很簡單,可是順手與否的定義為何呢?個人的想法是從套件管理機制上來做抉擇,只要嘗試安裝 1 ~ 2 套非系統預設安裝的軟體(如果是軟體開發人員則以預定使用的開發及執行環境為主)後即可概略瞭解後續維運時可能遇上的問題。

透過套件管理機制 進行軟體安裝時,依據對安裝作業的介入程度差異,大概可以分成以下的等級:

  1. 最佳:什麼都不用調整即可完成安裝,還可以選擇安裝的版本別
  2. 次佳:什麼都不用調整即可完成安裝,不過只有一種版本可以選擇
  3. 稍佳:透過調整後即可完成安裝,還可以選擇安裝的版本別
  4. 可:透過調整後即可完成安裝,不過只能安裝一種版本
  5. 差:不管怎麼調整都找不到可供安裝的版本
其實前述的比較方式中遺漏了另一個重點:裝起來的軟體是不是可以用?

會這麼說的原因在於許多的軟體提供了許多的調整選項以便符合多數人的不同需求,在某些套件管理機制中就會被拆解成多個小模組。好處是不必為了一個小需要而必須將軟體整個裝起來;壞處是很可能搞了半天才發現指定的軟體名稱錯誤而必須追加安裝正確軟體名稱的程序。在測試時或許可將此情形列為加、減分項目裡,但在系統的管理上應該沒有太大的影響(因為只有第一次裝時比較會傷腦筋而以)。

由於角色差異、需求不同、或是個人習性等等的關係,對同一個發行套件就會有不同的接受度。當選擇了一個發行套件後也必須做出一定程度的妥協。這裡不對新手使用那個發行套件做建議,因為這是個人的選擇權,取決於個人可以妥協的程度。

不過話說回來近來已經不再建議週遭朋友使用 Linux 了。不是因為 Linux 比較差,只是發現每次做完建議後似乎還會伴隨一大堆怎麼安裝、如何設定之類的詢問電話,我幹嘛這麼累啊?為什麼付錢給廠商做 Windows 平台的維護工作就那麼阿沙力,對 Linux 平台卻摳到只想要免費的服務呢?

不再提供建議後果然就雲淡風清啦!