發表文章

目前顯示的是 2月, 2012的文章

CentOS 究竟該如何發音呢?

圖片
CentOS - The Community ENTerprise Operating System, 是在 Linux 中非常常被使用的一支。 但這個字如何發音引起許多人的爭論, 這篇就是要解釋他到底該怎麼發音! 支持不同發音的人都有他們自己的想法與信念, 像把他當成一整個字來念就念:sent - oss, 把 Cent 和 OS 兩個分開來念就變成:sent - ohh - ess, 也有人把 C 所代表的 Community 用 k 發音, 發音就變成了 kent - oss 或 kent - ohh - ess。 最終的解答出自這篇討論: How do you say "CentOS" ? 其中有人回覆了一個影片連結, 裡面是 CentOS 中的一個 Team Member 在說話, 看了影片後就知道他們內部的人是怎麼發音啦! 影片連結: http://video.google.com/videoplay?docid=8498828072523143942&hl=en 同樣的問題也發生在 Linux 身上, 下面的影片是由 Linux 的 creater Linus Torvalds 現身說法: 關鍵字:CentOS, pronounce, 正確, 正式, 發音, 念法, 音標

Hyper-V Snapshot 快照原理

圖片
關於 Hyper-V Snapshot 相關概念及實作原理, 找到一個頗專業的參考資料: http://itproctology.blogspot.com/search?q=snapshot 。 有很多篇,之後有空再一篇一篇慢慢啃。 圖片來源:http://shuiwuhen.pixnet.net/blog/post/8775112 其他相關資料: Virtual Hard Disk (VHD) 規格、應用、效能介紹 Virtual Machine Backup on Citrix XenServer:虛擬機器備份與快照 關鍵字:Hyper-V, Snapshot, 快照

Java:針對Array中的值作排序

圖片
上兩篇針對陣列與字串轉換、陣列移除重複項目作了介紹, 有興趣可以先參考: Java:陣列與字串轉換,Array to String 和 String to Array Java:移除陣列Array中重複的值 圖片來源: http://www.easyvectors.com/browse/other/number-sorting-game-clip-art 這篇則是要介紹如何對陣例中的值或字串作排序, 排序的方法有很多種, 好奇的話可以參考許久以前的文章, Sorting Algorithms:排序演算法 , 當中有一段 youtube 上的影片,詳細地介紹了各種排序方法。 下面的程式碼除了介紹把陣列中的項目作排序外, 也同場加映利用 TreeSet 同時將陣列作排序及移除重複項目。 適度地利用 Java 內建的資料結構,可以省下超多工喔! 1 package werdna1222coldcodes . blogspot . com . demo . array ; 2 3 import java . text . ParseException ; 4 import java . util . Arrays ; 5 import java . util . Set ; 6 import java . util . TreeSet ; 7 8 public class ArraySortDemo { 9 10 public static void main ( String [] args ) throws ParseException { 11 12 // 建立有重複項目之 int array 13 int intArray [] = { 4 , 2 , 5 , 1 , 5 , 2 , 4 , 3 }; 14 15 // 利用 Arrays.sort 來排序 16 // 輸出結果:[1, 2, 2, 3, 4, 4, 5, 5] 17 arraySort ( intArray ); 18 19 // 使用 20 T

Java:移除陣列Array中重複的值

圖片
隱隱感覺到發展為系列文的跡象, 之前一篇介紹的是陣列與字串的轉換, 連結在: Java:陣列與字串轉換,Array to String 和 String to Array  。 而這一篇則是要簡單介紹一下如何移除陣列中重複的值或項目。 圖片來源: http://blog.vinhkhoa.com/article/3-functions-to-extend-Coldfusion-array 要達到移除陣列中的重複項目,傳統的作法是另外建一個陣列, 然後在每次把新項目加入之前檢查新陣列中是否已有應項目。 上面的想法很直覺,但實作起來最難的地方應該是不知道新陣列該建多大, 不過可以利用 ArrayList 加入項目後再轉為陣列即可。 除了上面所說的方法外,下面的程式碼是直接利用 Set 中項目或值不會重複的特性, 只要一個一個把值放進去,就可以自動移除重複的項目了!超簡單! 1 package werdna1222coldcodes . blogspot . com . demo . array ; 2 3 import java . text . ParseException ; 4 import java . util . HashSet ; 5 import java . util . Set ; 6 7 public class ArrayRemoveDuplicateDemo { 8 9 public static void main ( String [] args ) throws ParseException { 10 11 // 建立有重複項目之 int array 12 int duplicateArray [] = { 4 , 2 , 5 , 1 , 5 , 2 , 4 , 3 }; 13 14 // 利用 Set 的特性,將所有項目放入 Set 15 中即可移除重複的項目 16 Set < Integer > intSet = new HashSet < Integer >(); 17

Java:陣列與字串轉換,Array to String 和 String to Array

圖片
在 Java 中雖然有 ArrayList 等好用的 Collection 物件, 但因為陣列簡單易用,寫程式時還是常常會用到。 圖片來源: http://pages.cs.wisc.edu/~willb/cs302/summer-07/projects/project2/ 然而當我們在使用 Array 時, 有時會有需求是將 Array 中的物件內容列印出來, 這時我們就需要將 Array 轉換為字串, 雖然我們可以用 for 或 iterator 自己拼出字串,但其實還有更快的方法! 除了把陣列轉換為字串外,從另一方面來看, 我們也會有將 Array String 重新轉換成 Array 的需求。 以下的程式碼以簡單的 int array 為例, 說明 Array to String 和 String to Array 的轉換方式。 若使用的不是 int,則在程式中修改為所想要的 object type 即可。 以下為程式碼及說明: 1 package werdna1222coldcodes . blogspot . com . demo . array ; 2 3 import java . text . ParseException ; 4 import java . util . Arrays ; 5 6 public class ArrayStringConvertDemo { 7 8 public static void main ( String [] args ) throws ParseException { 9 10 // 建立有重複項目之 int array 11 int intArray [] = { 4 , 2 , 5 , 1 , 5 , 2 , 4 , 3 }; 12 13 // 將 int array 轉換成 array string 14 String arrayString = intArrayToArrayString ( intArray ); 15 16 // 將剛剛產生之 array string 再轉為 in

博客來AP策略聯盟商品推薦連結自動轉換工具

圖片
大約兩個月前寫了 部落格廣告賺錢術(二) , 當中曾推薦「博客來AP策略聯盟」, 而在使用博客來 AP 策略聯盟時必須登入網站 在 銷售連結產生器 頁面將商品連結轉換成自己的銷售連結。 如商品連結:http://www.books.com.tw/exep/prod/booksfile.php?item=0010522255 轉換後會變成: http://www.books.com.tw/ exep/assp.php/your_ap_id/ exep/prod/booksfile.php?item=0010522255 這種轉換雖然不難,但久而久之還是會覺得麻煩, 如果可以在寫文章時直接貼上連結而不用轉換,那該有多好呢? 為了讓自己方便點,我參考了 無敵貼紙 一文, 研究後改寫出下面的程式,稱之為「 博客來AP策略聯盟商品推薦連結自動轉換工具 」XD 現在只要在部落格或網站頁面中插入下面這一段 javascript, 並將紅色的部份改為自己的 AP 推薦帳號, 就可以在使用者點擊博客來連結時, 自動將使用者導向我們 AP帳號的推薦連結了! <script language="JavaScript"><!-- booksap_id = ' your_ap_id '; //--></script> <script type="text/javascript" src="http://dl.dropbox.com/u/38084735/blog/werdna1222coldcodes/booksap.js"/></script> 除了將商品連結轉換為推薦連結外, 這個工具也可以自動將舊的推薦連結更新為新的, 例如放在部落格上的是舊 AP 帳號的推薦連結, 在使用這個工具後他將在使用者點擊時自動轉成新帳號的推薦連結, 讓我們不用到舊的推薦文章中一個一個把連結更改過來, 這對帳號轉換或無法續約時非常有用喔! 以下來舉個轉換的例子,假設是先前火紅的「賈伯斯傳」的連結, 當我們設定了以上的 javascript 後,無論我們直接放上商品連結, http://www.books.co

開放原始碼(開源)授權(Open Source License)比較:GPL, LGPL, BSD, Apache, MIT

圖片
開放原始碼 (開源碼, open source) 當初被設計出來的理念非常崇高, 甚至可以說作者是帶著理想而設計出這樣子的授權(協議, License)。 相信大家或多或少都聽說過開放原始碼的好處, 藉由每個人讓自己的程式碼透過網路在世界自由流通, 讓程式可以被全世界有著同樣理念的 programmer 檢視、修正及改進, 將可以讓程式與軟體的撰寫、修正更快、更加安全, 規模也不再限於單人的能力,而可以發展出更大的系統。 然而雖然每個人都想自由地分享各自的程式, 但其實大家背後真正的想法還是會不同, 例如有人什麼也不想要,只要這個程式能更好更多人用即可; 有的則想要留下名聲,讓每個使用的人都知道原作者是誰; 有的則又規定這套程式一定不可以被拿來賣錢等等。 因為有太多這些複雜的因素,加上 programmer 又很討厭法律事, 為了讓開放原始碼可以更簡單更容易, 便開始有個人、單位或組織建立了開源授權協議 (Open Source License), 目前常用的大多已經過 Open Source Initiative 核準, 核準後的授權協議書全文都可以在 Open Source Licenses 上找到。 若不熟悉英文,或覺得看英文加法律實在太痛苦了! 台灣也有個 自由軟體鑄造場 (Open Source Software Foundry,簡稱 OSSF) , 網站中針對常見的 Open Source License 都有全文翻譯,大家可以去看看。 目前最常見也最常被討論及使用的 License 有 GPL, LGPL, BSD, Apache, MIT 等。 GNU General Public License 2.0(GPL) : GPL 是 License 中最具開放原始碼精神的, 然而他在崇尚自由之時,也要求 (強迫) 所有人一起崇尚自由, 病毒式的感染、傳染常被用來形容 GPL , 因為所有只要 「引用/修改/衍生自 GPL 授權程式碼的軟體也必須採用GPL授權」 , 且要求未來所有的使用者、開發者也必須採用同樣的條款。 基於這樣的限制,所以商業軟體或是不打算公開程式碼的軟體和 GPL不可以有任何牽連, 否則受到感染後就只能依 GPL 規定開放原始碼了。 著名的GPL自由軟體

如何在 Excel 儲存格中輸入及查詢取代換行?

圖片
從小到大用了 10 幾年的 Excel 了, 一直以來似乎也用得很上手很習慣,不曾出過什麼大包。 但今天竟然遇上一個感覺超容易但卻一直無法解決的問題: 「到底該怎麼在 Excel 的儲存格中換行呢?」 圖片來源: http://www.qweas.com/reviews/excel_converter.htm 一直以來我們習以為常的換行, 要嘛就是直接按 Enter ,頂多是 Word 裡頭還會用到 Shift + Enter , 但今天怎麼試都沒有用,google 查了以後才發現原來是要用 Alt + Enter 啊! 另外因為換行看不到實際的文字, 在尋找及取代時也是一樣直接按下  Alt + Enter  喔! 大家可以馬上開個 excel 來試試玩看看。 關鍵字:excel, 換行, 符號, 字元, 儲存格, 指令, 取代, 尋找, 搜尋, 查詢 參考資料: 如何在Excel輸入及取代換行符號

在網頁中嵌入顯示程式碼:全系列效果比較及教學整理

圖片
在網頁嵌入程式碼這系列不知不覺也寫了不少, 如果都只看單篇的話很難比較出每種顯示的效果有何不同, 因此這一篇就是要在不同的設定中使用同一段程式碼, 直接讓大家看看效果的差異,也方便大家選用! 圖片來源: http://www.css-school.ru/s-build/2306-glavnaya-prostye-html-zagotovki-dlya-stranic.html 在網頁中嵌入顯示程式碼:HighLight 軟體 使用 HighLight 的好處是可以產生類似各 IDE 的顏色組合, 像下面的配色是不是讓我們想起了 eclipse 呢? 1 public class HelloWorld { 2 3 public static void main ( String [] args ) { 4 System . out . println ( "Hello, world!" ); 5 } 6 } 在網頁中嵌入顯示程式碼:CSS Block 相當簡潔的顯示方式,適合只有一兩行或一小段程式、設定檔使用。 public class HelloWorld { public static void main (String[] args) { System.out.println("Hello, world!");     } } 在網頁中嵌入顯示程式碼:Google Code Prettify 透過這個也可以為程式碼上色,且不用像 HighLight 一樣要手動轉換。 public class HelloWorld { public static void main (String[] args) { System.out.println("Hello, world!");     } } 在網頁中嵌入顯示程式碼:CSS Block + Google Code Prettify 把 CSS Block 和 Google 上色結合起來效果似乎也很不錯, 而且設定超簡單,幾乎不用額外設定! 教學請見連結文章的最下面處! public class

在網頁中嵌入顯示程式碼:Pastie

圖片
(2012.02.05更新) 全系列顯示效果比較已完成,可參考: 在網頁中嵌入顯示程式碼:全系列效果比較及教學整理 , 選擇自己較想要的效果後再進入單篇文章看每種外掛的設定教學。 在前三篇中已介紹了不同的嵌入顯示程式碼的方式, 分別是用 HighLight 、 CSS Block 和 Google Code Prettify 來達成, 但他們的設定可能都需要一些步驟,比較麻煩。 在現在什麼都講求網路化、雲端化的時代, 連 PDF、PPT、Word 都已經可以被放在網路上了, (請參考 Scribd:將PDF、PPT、DOC嵌入放上BLOG ) 要將程式碼放上網路再嵌入至部落格文章中當然也是輕而易舉, 這篇我們要介紹的就是 Pastie 這個網站。 圖片來源: http://www.technewsworld.com/story/70690.html 使用的方式因為太簡單了我就不截圖教學了, 進入網站後可以直接貼上程式碼, 並於右上角選擇你的程式語言是什麼(這會影響語法顏色), 接著按下右下角的 paste,也可以上鎖! 按下後便產生一串網址,網址可以直接跟別人分享, 這樣別人就可以看到我們的程式並馬上與我們討論,相當方便。 一樣在右上角可以選擇不同的顏色組合,挑選自己想要的話, 在右方 Embed 處可以複製 script 語法, 將語法貼到文章中就可以成功顯示囉! 效果如下: 關鍵字:程式碼, 顯示, 網頁, 文章, 內嵌, 嵌入, 放入, 部落格, blog, blogger, css, 總整理, 推薦, 教學, 語法, 上色

Quartz in Spring:使用多個Scheduler的參數設定

圖片
多數人在使用 Quartz 時一開始都只使用一個 Scheduler, 而且通常也只執行一個排程, 然而隨著經驗累積、project變大、需求變多, 慢慢地也會出現要執行多個排程工作的需求。 這篇就是要解釋如何在 Spring 的 xml 設定檔中達成這個目的。 圖片來源: http://quartz-scheduler.org/ 在開始多個排程設定前我們先來複習一下單一排程工作的設定: 下面 xml 中整體的概念其實是由  schedulerFactoryBean  抓到預設的 scheduler, 讓預設的 scheduler ,執行排程  cronTrigger ,而排程執行的目標是  jobDetail , 也就是  targetClass  中  executeMethod  要做的事 。 以下由 xml 依序解釋每個段落的設定有何意義: 第一行是要讓 Spring 抓到  targetClass  的 Bean, 下面一段則是定義要執行的工作  jobDetail , 這個工作的目標為  targetClass  中的  executeMethod 。 接著設定一個排程  cronTrigger  來執行  jobDetail , 藉由設定 cronExpression 可以調整要執行的時間, 而最下面則是利用  schedulerFactoryBean  抓到名字是空字串的預設 Scheduler, 預設 Scheduler 就是實際去執行排程的執行者, 可以執行不只一個排程 。 <bean id=" targetClass " class="my.project.class"/> <bean id=" jobDetail " class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref=" targetClass "/> <property name=&qu