<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
	<title>程式設計</title>
	<link>http://blog.roodo.com/rss20/topic/topic_article_1204.xml</link>
	<description>談談程式設計的心得吧。</description>
	<language>zh-tw</language>
	<generator>Roodo Blog System</generator>
	<copyright>All Rights Reserved</copyright>
	<item>
		<title>台股收盤股價過濾工具 / &lt;font size=4&gt;沒有羊的部落格&lt;/font&gt;</title>
		<description>     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 這次是 kmJohn 大說台股已經跌這麼深了，要開始做選股過濾的動作，希望能過濾出收盤價在某個價位以上的公司，於是這個小程式誕生了，只有單純過濾股價功能，當然過濾前要能連上網路抓取最新收盤價。</description>
		<link>http://blog.roodo.com/harpist/archives/7554223.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 11 Nov 2008 17:38:06 +0800</pubDate>
					</item>
	<item>
		<title>簡單的Mozilla Ubiquity應用2：將目前網頁貼上推推王的命令 / 簡睿隨筆 《科技篇》</title>
		<description> 使用Ubiquity將目前瀏覽網頁貼上推推王的命令如下。網址列會填入目前網頁的網址，選取的文字會填入「描述」欄位，命令的參數會形成標籤，若標籤為 tech則會自動轉換成「科技」，例如：funp Google Web2.0 tech。                             // V1.0.1 2008/09/01修改  CmdUtils.CreateCommand({ &amp;nbsp; name: &amp;quot;funp&amp;quot;, &amp;nbsp; author: { name: &amp;quot;emisjerry&amp;quot;}, &amp;nbsp; contributors: [&amp;quot;emisjerry&amp;quot;], &amp;nbsp; license: &amp;quot;GPL&amp;quot;, &amp;nbsp; description: &amp;quot;選取好描述文字，把本篇文章貼上推推王&amp;quot;, &amp;nbsp; takes: {&amp;quot;輸入標籤名稱&amp;quot;: noun_arb_text}, &amp;nbsp; icon: &amp;quot;http://funp.com/favicon.ico&amp;quot;, &amp;nbsp; execute: function(directObject) { &amp;nbsp;&amp;nbsp;&amp;nbsp; var _sSelection = CmdUtils.getSelection(); &amp;nbsp;&amp;nbsp;&amp;nbsp; //window.alert(_sSelection + &#039;:&#039; + context.focusedWindow.location.href); &amp;nbsp;&amp;nbsp;&amp;nbsp; var _aTags = directObject.text.split(&amp;quot; &amp;quot;);&amp;nbsp; // 把輸入字串分成陣列 &amp;nbsp;&amp;nbsp;&amp;nbsp; var _sTags = &amp;quot;&amp;quot;; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (var ele in _aTags) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _sTags += &amp;quot;&amp;amp;tags[]=&amp;quot; + encodeURIComponent(_aTags[ele]); &amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; if (_sTags == &amp;quot;&amp;quot;) _sTags = &amp;quot;&amp;amp;tags[]=科技&amp;quot;;&amp;nbsp; // 未輸入標籤則預設為科技 &amp;nbsp;&amp;nbsp;&amp;nbsp; else _sTags = _sTags.replace(/tech/, &#039;科技&#039;);&amp;nbsp; // 把tech標籤換成科技, 加快輸入速度 &amp;nbsp;&amp;nbsp;&amp;nbsp; Utils.openUrlInBrowser(&amp;quot;http://funp.com/push/submit/?popup&amp;amp;url=&amp;quot; + &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; encodeURIComponent(context.focusedWindow.location.href) + &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&amp;amp;t=&amp;quot;+encodeURIComponent(_sSelection)+_sTags); &amp;nbsp; } });                       你可以把上述命令直接貼入Ubiquity Command Editor，或瀏覽 我的命令網頁 再訂閱它。    ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/7079431.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 31 Aug 2008 18:43:09 +0800</pubDate>
					</item>
	<item>
		<title>DZone推出了超美觀速查表網站 / 簡睿隨筆 《科技篇》</title>
		<description>  沒想到看來毫不起眼的速查表（Cheat Sheet）也能做到如此專業與美觀！ DZone Network 推出了 REFCARDZ 網站，由多名書籍作 者操刀，彙集了多種電腦資訊領域的速查表，雖說是為了推銷網站上的電腦書籍（Manning Publications的in Action系列），但仍有值得參考與可觀之處。以下列出幾個我有興趣的速查表：    IntelliJ IDEA：有7頁  jQuery Selectors：有6頁  Design Patterns  NetBeans IDE 6.1 Java Editor  Windows PowerShell  Spring configuration  Getting Started with Ajax  ．．．  似乎是每周推出一個表，Core CSS 2排到9月22日了   取得的方法很簡單：到 Dzone 註冊一下， 再登入就能點選要下載的速查表，DZone會把速查表PDF檔寄到你填的信箱裡。    ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/6930615.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 22 Aug 2008 22:51:45 +0800</pubDate>
					</item>
	<item>
		<title>幾篇值得注意的Subversion相關文章 / 簡睿隨筆 《科技篇》</title>
		<description>今天看到的幾篇值得注意的 Subversion 相關文章，先留個紀錄：     Subversion branching in my experience      Subversion Cheat Sheet      Learning how to resolve conflicts within Subversion (SVN) using TortoiseSVN      How To Upgrade WordPress Using Subversion      Introduction to Subversion for .NET Developers    ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/6749849.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 10 Aug 2008 20:58:42 +0800</pubDate>
					</item>
	<item>
		<title>試用SmartSVN 4造成的混亂 / 簡睿隨筆 《科技篇》</title>
		<description>最近為了因應 Subversion 1.5 的推出，多個Subversion Client陸續推出新版本。昨天看了 SmartSVN 也 有新版可下載，一時興起下載安裝測試，竟然忘了1.4與1.5 Client的格式不同，SmartSVN也沒有提示，造成目錄格式變「偷偷」的變更成1.5格式，但因為Server的repository仍然是 1.3，IDE也只支援到1.4，結果造成操作上的困難．．．最後只好將目錄改名重新取出，幸好昨天大部份的檔案都有commit，算是不幸中的大幸。    ##   </description>
		<link>http://blog.roodo.com/emisjerry/archives/6691967.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 07 Aug 2008 21:57:30 +0800</pubDate>
					</item>
	<item>
		<title>用AutoHotkey統一不同項的偵錯功能鍵 / 簡睿隨筆 《科技篇》</title>
		<description> 筆者經常需要在不同的開發工具間切換，用 IntelliJ IDEA 寫Java與JSP，網頁除錯則使用Microsoft Script Editor（以下簡稱MSDE），偶爾還用Delphi拉拉視窗表單，人吃五穀雜糧，寫程式沒有都沒Bug的，因此開發工具的偵錯追蹤功能就是我輩的好朋友了。但每個系統用 的功能鍵都不同，在操作時經常會發生按鍵錯亂的狀況，想要把這些功能鍵設定成一致，卻因為是系統鍵而無法設置或因操作繁瑣而放棄。今天突然靈機一動想到可以用AutoHotkey 來試試。    我常用的三個偵錯按鍵如下：         系統工具＼偵錯功能   Step into（逐步執行）   Step over（不進入函式）   Resume Program（開始）       IntelliJ IDEA 按鍵   F7   F8   F9       Microsoft Script Editor 按鍵   F11   F10   F5         因為使用IDEA較頻繁，因此把按鍵統一成〔F7〕、〔F8〕、〔F9〕，基本的操作步驟如下：   由網頁錯誤處跳入MSDE  按〔F7〕做逐步執行，AutoHotkey攔截到〔F7〕後自動送出〔F11〕  MSDE接收到〔F11〕，就做了逐步執行的動作了  其實就是對MSDE做鍵盤 Remapping 處理。因為這個按鍵轉換只針對MSDE，因此先寫一個函數來辨識我們是否在執行MSDE：      ; 由標題判斷使用的程式. 傳回&amp;quot;IDEA&amp;quot; 或 &amp;quot;MSDE&amp;quot; getProgram(sTitle) { &amp;nbsp; sProgram := &amp;quot;&amp;quot; &amp;nbsp; iPos := InStr(sTitle, &amp;quot;IntelliJ&amp;quot;) &amp;nbsp; ;MsgBox %iPos% &amp;nbsp; if iPos &amp;gt; 0 &amp;nbsp;&amp;nbsp;&amp;nbsp; sProgram := &amp;quot;IDEA&amp;quot; &amp;nbsp; else { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iPos := InStr(sTitle, &amp;quot;Microsoft Script Editor&amp;quot;) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if iPos &amp;gt; 0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sProgram := &amp;quot;MSDE&amp;quot; &amp;nbsp; } &amp;nbsp; return %sProgram% }     以下就是更換按鍵的指令。程式邏輯簡述如下：   把目前視窗的標題存入變數 sTitle   以標題為參數叫用 getProgram ，再把傳回的&amp;quot;IDEA&amp;quot;或&amp;quot;MSDE&amp;quot;存入變數 sProgram   若程式為&amp;quot;MSDE&amp;quot;時則送出〔F11〕按鍵      ;; Microsoft Script Editor的Step into用F11, Step over用F10; 將之改成慣用的F7, F8 ;; 加~會繼續執行原訂功能 f7:: &amp;nbsp; WinGetTitle, sTitle, A &amp;nbsp; sProgram := getProgram(sTitle) &amp;nbsp; ;MsgBox %sProgram%-%sTitle% &amp;nbsp; if (sProgram = &amp;quot;MSDE&amp;quot;) &amp;nbsp;&amp;nbsp;&amp;nbsp; Send {F11} &amp;nbsp; return &amp;nbsp;  f8:: &amp;nbsp; WinGetTitle, sTitle, A &amp;nbsp; sProgram := getProgram(sTitle) &amp;nbsp; ;MsgBox %sProgram% &amp;nbsp; if (sProgram = &amp;quot;MSDE&amp;quot;) &amp;nbsp;&amp;nbsp;&amp;nbsp; Send {F10} &amp;nbsp; return  f9:: &amp;nbsp; WinGetTitle, sTitle, A &amp;nbsp; sProgram := getProgram(sTitle) &amp;nbsp; ;MsgBox %sProgram% &amp;nbsp; if (sProgram = &amp;quot;MSDE&amp;quot;) &amp;nbsp;&amp;nbsp;&amp;nbsp; Send {F5} &amp;nbsp; return      程式很簡單，但解決了長久以來的困擾，而且其他各自不同的按鍵也能透過此種置換方法來達成一致。  AutoHotkey的此種運用算是小兵立大功式的系統增強吧。  ##</description>
		<link>http://blog.roodo.com/emisjerry/archives/5723399.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 19 Mar 2008 20:07:19 +0800</pubDate>
					</item>
	<item>
		<title>Java I18N國際化工具：JRC-Editor / 簡睿隨筆 《科技篇》</title>
		<description>   Java的I18N(Internationalization)大抵是以讀取不同語言的Resource Bundle來達成，例如預設的語言訊息檔 Messages.properties ，美國英文語言檔是 Messages_en_US.properties ，繁體中文是 Messages_zh_TW.properties ，簡體中文則是 Messages_zh_CN.properties 。很清楚的可以看到語言包檔名以附加 _語言_地區 的方法來區分不同的語言內容。分別編輯不同的語言檔並轉換成Unicode是繁瑣且單調的工作，幸而 JRC-Editor 協助我們簡化了程序。  由功能表 【Edit&amp;rarr;New Langauge】就能建立新的語言檔，不同的語言設定會顯示在右側，以方便一次輸入所有的訊息內容；底部則能建立新的鍵值。  如果你的Java程式也必須國際化的話， JRC-Editor 是個必備的工具。    ##    </description>
		<link>http://blog.roodo.com/emisjerry/archives/5619813.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 02 Mar 2008 00:52:26 +0800</pubDate>
					</item>
	<item>
		<title>JTrac：Open source的Java Issue Tracking System / 簡睿隨筆 《科技篇》</title>
		<description>如果你的開發小組還沒開始使用Issue/Bug Tracking System的話，現在多了另一個選擇： JTrac 。由其Roadmap來看，在功能上似乎會逐步趨近 Trac 的現有功能。  若你正在學習Java，JTrac使用多種較新的Framework，應該能提供一些參考。   What is the JTrac architecture like?  JTrac is built using the Spring Framework as far as possible and mostly uses Spring WebFlow  within the MVC layer apart from Spring MVC. Also the Acegi Security  framework for Spring has been used.  JTrac  is effectively a &amp;quot;light-weight&amp;quot; Java EE application and any version 2.4 compliant servlet engine is sufficient for deployment.  The presentation layer is using the Apache Wicket framework.  Hibernate is used for data persistence. This allows for JTrac to be database neutral and any database supported by Hibernate can be used.  ##</description>
		<link>http://blog.roodo.com/emisjerry/archives/5159793.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 26 Jan 2008 00:19:27 +0800</pubDate>
					</item>
	<item>
		<title>我的Subversion與Trac使用經驗 / 簡睿隨筆 《科技篇》</title>
		<description>對於每一個開發團隊而言，正確且順暢的溝通協調運作機制是不可或缺的，少了這些協同機制，就像在交響樂團裡的走調雜音，或像團體裡我行我素的獨行俠，都會 使團隊戰力大打折扣，畢竟現今的軟體開發已經複雜到無法依賴單打獨鬥的曠世天才而能完成的。只要體認到開發不能只依靠少數人、必須群策群力、互相配合、遵 循共同的流程規定，那麼像Tracking system、Version control system等就必然變成開發人員的好朋友，無法離開它們而能順利運作的了。  然而現實的狀況是：功能強大且完整的協同軟體不是每天在生存線上掙扎的台灣小軟體公司能用得起的，導入與使用費用之高都令人咋舌，因而導入Open source的工具再搭配部份自訂流程就變成不得不的選擇。我們最早的版本控制工具是微軟的Visual SourceSafe，但當開發團隊分散兩地時，Visual SourceSafe就陣亡了，雖然有第三方廠商的Source OffSite讓Visual SourceSafe能在Internet上使用，但所費不貲，最終才使用了 CVS + WinCVS 的組合，在CVS上我們開發了重要的產品和許多個大小專案，期間也是跌跌撞撞，歷經許多錯誤嘗試。  接著是Bug/Issue tracking system的導入，用以補足問題的自動追蹤功能與任務的線上分派。最早使用的是 Track+ ，選用它的原因是它是以Java撰寫的，而Java正是我們的主力開發語言且2.X版時能下載程式碼，因而給了我們自行修改的機會（現在3.x版已經沒辦法修改原始碼了），再者Track+具備國際化(I18N)的能力，約在2003年我在珠海趁晚上和假日完成了繁體中文語言包，再經幾個小專案的測試後推動到所有專案。  CVS用了幾年後，因為 Subversion 提供更快速的存取與相容CVS的操作方式，在這兩三年裡就逐步由CVS+WinCVS轉移到Subversion+ TortoiseSVN ，轉移的策略是舊的專案或較少變動的專案就保留在CVS上，新的專案與更新頻繁的專案就移到Subversion上。而2007年又開始試用Trac，嘗試把Wiki、Tracking、Subversion整合在一起，以下是我們使用Trac的幾個試驗：    在Wiki首頁放置一個公佈欄：PM、SA要公佈的開發事項以日期排序，以通知專案成員。以前大多是用E-Mail聯絡通知，但新成員是沒辦法看到的，全部放在Wiki上就不怕有疏漏的狀況。   任務分派用Ticket發送：SA透過Trac分派給PG(Programmer)要撰寫的作業，開始日期與期望完成日期皆有紀錄，PG的作業狀況與績效都能追蹤考核。   透過異動歷程了解開發活動：每天PM透過異動歷程能大致了解PG的進度與程式撰寫狀況。   我們把Trac的Component存模組代碼，再增加模組報表，如此便能輕易地知道各個模組作業的完成進度。  Subversion 則是所有文件與程式碼的統一窗口，所有專案成員皆以Subversion上的檔案為準，這樣以前用Mail寄來寄去，或透過File Server取檔導致版本不一致的問題就消弭於無形了。一般專案開發組織裡，我們尚有測試組的配置，當PG經由Trac通知測試人員開始測試時，測試人員 由Subversion取出程式，在他的本地端編譯、測試，以確保測試的版本是正確、一致的，若有差錯也能立即被發現。  這裡再分享幾個推動上的小經驗。    中文化是必須的：要能順利推動某個工具，一定要有中文介面，缺少中文介面一定都會大打折扣，且會給成員推拖的藉口。尤其是大陸同事，看到英文心就亂一半，要他們用非中文工具，簡直是比登天還難。   要循序漸進、不可躁進：推行此類會影響作業流程的工具時，切忌一開始就全面推動，若不先經小範圍測試再逐步修改調整，可能對團隊帶來翻天覆地的混亂感受，從而增加推行失敗的機率。   主管要堅持，成員要配合：導入初期的不適應，勢必引起反彈，但只要是對的政策就應該堅持，主管、成員都要敞開心胸，針對扞格不合之處做調整與修正，最終才能磨合成適合環境的較理想運作模式。  事 實上，Tracking system與Version control system僅是專案運作的基本功而已，但這些基礎都無法運作順利，遑論其他更因人而異的管理機制了。從以上的推動描述可以看出我們對於推動新的流程與控 管機制是抱持慎重其事的心態，因為一個機制的變更影響到的是許多聰明、又有想法的開發人員，最終還是要讓這些機制內化成每天的標準動作，而這樣的流程也才 有執行的必要。  以上小小經驗與大家分享。  ##</description>
		<link>http://blog.roodo.com/emisjerry/archives/4968601.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 12 Jan 2008 15:17:00 +0800</pubDate>
					</item>
	<item>
		<title>公開資訊觀測站查詢程式 / &lt;font size=4&gt;沒有羊的部落格&lt;/font&gt;</title>
		<description>     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 今天無尾熊問說可不可以抓 公開資訊觀測站 的資料來做分析，於是大致寫了這個小程式，可以查詢公司的營收資料，查詢時會先檢查本地端是否已有資料，沒有的話再連上網路抓取資料存檔。</description>
		<link>http://blog.roodo.com/harpist/archives/4480459.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 13 Nov 2007 23:37:43 +0800</pubDate>
					</item>
	<item>
		<title>[BCB]實現Treeview拖曳效果 / &lt;font size=4&gt;沒有羊的部落格&lt;/font&gt;</title>
		<description>這是在 Delphi K.Top討論區 回覆關於TreeView元件實現拖曳效果的方法。</description>
		<link>http://blog.roodo.com/harpist/archives/4451829.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 13 Apr 2007 05:18:03 +0800</pubDate>
					</item>
	<item>
		<title>[Trac] 幫Trac裝上WYSIWYG編輯器 / 簡睿隨筆 《科技篇》</title>
		<description> JeffHung 於今日 介紹 了Trac的「所視即所得」編輯器插件： Trac Wysiwyg Plugin 。安裝步驟如下：    切換目錄到\Python24\share     cd \Python24\share   easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10     如果你已升級到0.11版，只要把最後面的0.10換成0.11即可   以admin進入管理網頁，啟動此插件   重新啟動Apache Web Server  大功告成。插件生效前後畫面比較如下：   原來的畫面      加入WYSIWYG編輯器後的畫面     ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/4408245.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 02 Nov 2007 21:22:45 +0800</pubDate>
					</item>
	<item>
		<title>[Trac] 把Trac的單欄樣式改成多欄的方法 / 簡睿隨筆 《科技篇》</title>
		<description>在Trac的一個頁面裡輸入了越來越多的文字之後，由於有許多的導引連結，結果變成了長條狀的形式，每每為了點選在後方的連結而必須拖動捲軸，實在很麻煩....今天終於找到一個簡單的解決方法了－把內容用&amp;lt;table&amp;gt;分隔成幾個&amp;lt;td&amp;gt;就OK了。示意如下：  原來的內容是單欄式的：  === 專案重要任務 ===   1. [report:1 處理中的任務單]   1. [report:7 指派給我的任務單]   1. [TodoList 待辦事項] === 專案文件區 ===   1. [EventMeeting 會議記錄]   1. [PlanningDocuments 專案規劃階段] === 專案成員一覽表 ===   1. [OurMembers 乙方成員]   2. [ClientMembers 甲方成員] === 開發環境建置 ===   1. [attachment:trac-ticket.doc 任務單操作簡要]   1. [CheckoutSource 取出原始碼及程式開發設定]   1. [TestAccount 測試帳號]  用&amp;lt;table&amp;gt;變身成兩欄，把垂直發展變成水平延伸。範例中的｛｛｛與｝｝｝為了在網頁顯示而改成全形，真實情況裡是要用半形才可以：  ｛｛｛ #!html &amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td width=&amp;quot;40%&amp;quot;&amp;gt; ｝｝｝ === 專案重要任務 ===   1. [report:1 處理中的任務單]   1. [report:7 指派給我的任務單]   1. [TodoList 待辦事項] === 專案文件區 ===   1. [EventMeeting 會議記錄]   1. [PlanningDocuments 專案規劃階段] ｛｛｛ #!html &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; ｝｝｝ === 專案成員一覽表 ===   1. [OurMembers 乙方成員]   2. [ClientMembers 甲方成員] === 開發環境建置 ===   1. [attachment:trac-ticket.doc 任務單操作簡要]   1. [CheckoutSource 取出原始碼及程式開發設定]   1. [TestAccount 測試帳號] ｛｛｛ #!html &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt; ｝｝｝   ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/4398621.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 31 Oct 2007 22:04:34 +0800</pubDate>
					</item>
	<item>
		<title>[jEdit] 指定啟動參數以提升運行效率 / 簡睿隨筆 《科技篇》</title>
		<description> 在Windows裡是使用 jedit.bat 來啟動jEdit，此批次檔的內容如下：  @echo off start &amp;quot;jEdit startup&amp;quot; &amp;quot;C:\JDK1.6\bin\javaw.exe&amp;quot; -Xms64M -Xmx192M -jar &amp;quot;d:\jEdit\jedit.jar&amp;quot; -reuseview %*      jedit.jar : 是jEdit的主程式    -Xms64M : 設定啟始記憶體為64M    -Xmx192M : 設定最大記憶體為192M  若你經常要編輯超大檔案，則可將192的值變大；若你的記憶體較少，可以把64改小一點使記憶體用少一些。  另一個提升開檔速度的方法是用「兩階段」啟動，這個方法適合記憶體較多的環境使用：    將下列批次檔（可命名為jedit_server.bat）內容存入啟動資料夾，讓Windows登入後自動執行，以建立jEdit的主機環境（Server mode）：   rem d:\jEdit是jEdit的安裝資料夾 &amp;quot;d:\jEdit\jEdit.bat&amp;quot; -background -nogui     爾後再用jedit.bat啟動時，因為大部份需要的資源都已存在記憶體裡了，因此能很快的顯示出jEdit視窗    &amp;nbsp;##  </description>
		<link>http://blog.roodo.com/emisjerry/archives/4365563.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 26 Oct 2007 00:15:32 +0800</pubDate>
					</item>
	<item>
		<title>jEdit編輯器的初始設定與必裝插件 / 簡睿隨筆 《科技篇》</title>
		<description>jEdit是以Java開發的，因此在安裝jEdit之前必須先安裝Java的開發套件（就是慣稱的JDK）。    JDK下載： JDK開發網站 ，建議安裝JDK 5以上的版本   jEdit下載： http://jedit.org     2007/10/28修訂：由於網友的建議，我把要下載的部份再多做更精確的補充：    如果不準備使用Java做開發，請安裝JRE即可(下載網址如上列之JDK網址，選Java Runtime Environment (JRE) 6 Update 3)，檔案大小為13.93 MB   如果會以Java做開發則請安裝完整的開發套件：JDK 6 Update 3，檔案大小為65.64 MB   如果原本已經有安裝了JRE或JDK，請確定至少是1.5或以上的版本；部份新版的插件都要求必須有1.5版。請用regedit.exe檢視現有使用的JRE/JDK版本：  HKEY_LOCAL_MACHINE\SOFTWARE\ JavaSoft \Java Runtime Environment其內的CurrentVersion就是你安裝的JRE版本  HKEY_LOCAL_MACHINE\SOFTWARE\ JavaSoft \Java Development Kit 其內的CurrentVersion就是你安裝的JDK版本       安裝時先以預設值安裝即可。啟動後第一個感覺應該都是「真是醜弊了」吧:-)      請先用下列步驟來美化它的外觀：    到 Icons and Images 網頁下載調整過、較美觀的圖示，我使用的是這個 XP樣式的圖示    將下載的檔案複製到你的  JDK安裝資料來\jre\lib\ext  資料夾裡  重新啟動後果然整個美觀不少。如果仍然不甚滿意的話，我們可以用【Utilities&amp;rarr;Global Options...&amp;rarr;Tool Bar】在要變更的圖示上按一下，再按視窗下方最右邊的修改按鈕，再指定新的圖示(大小約為22x22)。       jEdit 的插件安裝非常簡單，打開【Plugins&amp;rarr;Plugin Manager...&amp;rarr;Install】勾選要使用的插件後按Install就可以了，而且安裝後立即生效不用重新啟動jEdit。插件的預設目錄是% USERPROFILE%\.jedit\jars（亦即C:\Documents and Settings\用戶名稱\.jedit\jars），如果你希望要把設定存到jEdit安裝目錄以方便攜帶時，請務必在安裝插件之前先做下列設定：    【Utilities&amp;rarr;Global Options...&amp;rarr;Plugin Manager】將原本的jEdit settings directory改成jEdit application directory   以下是我建議要先安裝的插件：     插件名稱  功用      BufferTabs  將開啟檔案以頁籤樣式呈現。在Plugin Options裡勾選Enable BufferTabs by default；頁籤預設顯示在底部，也可由選項變更移動到上方。 原本顯示在上方的檔案切換列則可由【Utilities&amp;rarr;Global Options...&amp;rarr;View】將Show buffer switcher取消勾選    ColumnRuler  在文件編輯區上方顯示水平尺規，以方便檢視文字長度與游標位置。在Plugin Options裡勾選Active by Default    Console  顯示類似DOS命令列視窗，可方便檔案的copy、delete等操作    Docker  側邊停駐設定管理，jEdit裡的視窗可以自由放置到側邊    EditorScheme  編輯器配色樣式選擇，可以做更進一步的美化    MacroManager  巨集管理程式，方便管理巨集    OpenIt  指定好搜尋路徑，輸入部份檔名自動篩選出符合的檔名    ProjectViewer  專案管理的瀏覽器，還可將數個專案組成一個群組，例如Web專案，與Java專案整併成開發專案，屆時開啟ProjectViewer時能很方便的在專案間切換目錄與找尋檔案    SideKick  剖析檔案的語法結構形成樹狀以方便檢視     jEdit的一個方便之處是文件還算完整，安裝插件的同時，其說明文件也整合到Help系統裡，由Plugin Manager右下方的Help也可以輕易的連結到。  接著將插入放置到側邊：    開啟【Utilities&amp;rarr;Global Options...&amp;rarr;Docking】   預設的視窗停靠點都是floating(浮動式)，我的操作習慣是將File Browser、Project Viewer、Sidekick都變更到左側  打開側邊的某個視窗後，該視窗會一直保持開啟狀態，透過Docker插件就以做自動隱藏(Auto-Hide)的設定，如果把File Browser設成Auto-Hide，則由File Browser點選某個檔案後並開啟後，File Browser就會自動隱藏；設定步驟如下：    【Plugins&amp;rarr;Plugin Manager...&amp;rarr;Docker】   把4個位置的Auto Hide都打勾   由下拉選單中選取不要自動隱藏的視窗用Add加進入Override清單裡  ##</description>
		<link>http://blog.roodo.com/emisjerry/archives/4365251.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 25 Oct 2007 23:37:42 +0800</pubDate>
					</item>
	<item>
		<title>文字編輯器印象與jEdit / 簡睿隨筆 《科技篇》</title>
		<description>說起文字編輯器(Text Editor)的重要性，或許是比IDE(Integrated Development Environment)還更重要。IDE把編輯、編譯、偵錯等編程流程都整合在一套工具裡，讓程式師能很方便地編寫程式，但隨著功能越來越多，耗用的系 統資源也越多，活脫就是大恐龍的翻版，在Java的環境裡，無論是 IntelliJ-IDEA 、 NetBeans 或 Eclipse ，都是龐然巨物。因此，當只是要編輯文字檔、XML檔、HTML檔、JSP檔等文本檔案時，一般都會使用適合的文字編輯器，在眾多的文字編輯器裡，根據我個人的非正式統計，使用率最高的應該是 UltraEdit 。UltraEdit應該是個很好的編輯器，但可惜我從來都沒用過，因此無法進一步評斷高下。  以下我把我仍有印象且使用過的編輯器臚列如下：     編輯器名稱  作業系統  說明      Edlin  DOS  可能大多數人都不知道這個編輯器吧 :-) 陽春的行編輯器(Line Editor)    PE2  DOS+倚天中文  在PC席捲市場初期，市面上找不到像樣的編輯器，當IBM的PE2出現且無料流通後，PE2幾乎是人手一套，接著就出現了許多國人模仿的xxE編輯器     漢書   Windows  Windows 95以後，編輯器的選擇就更多了，當時因為專案的關係，使用了許久的漢書(Hyper Editor，HE)     EmEditor   Windows  當Unicode逐步出現在各式文件後，不支援Unicode的漢書只能被支援良好的EmEditor取代了。EmEditor出自日本，因此對於中文有很好的功能性     PSPad   Windows   PSPad 是這幾年用得最久的編輯器，但它對中文的支援不佳，游標在中文區域裡移動時，經常會造成中文顯示異常，因此有時必須和 EmEditor 合用才能完成中文文字的修改     jEdit   跨平台  由於使用Linux的機會變多，因此希望能找到在各作業系統裡都能使用的編輯器，此時老牌的jEdit就脫穎而出了     jEdit是以Java開發的功能強大編輯器，擴充能力超強，有150多個插件(Plugin)可供直接擴充，我們也可以使用 BeanShell 腳本語言自行撰寫巨集。經由Google搜尋，發現jEdit的繁體中文介紹相當缺乏，因而自不量力地將在日後逐步介紹jEdit，希望讀者們能更了解這個方便的編輯器，而能大幅增進工作的生產力。  ##  </description>
		<link>http://blog.roodo.com/emisjerry/archives/4360365.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 25 Oct 2007 00:38:45 +0800</pubDate>
					</item>
	<item>
		<title>將Trac 0.10.4中文版公佈到Google Code / 簡睿隨筆 《科技篇》</title>
		<description>在推動使用 Trac 當 做協同專案團隊運作工具的過程中，缺乏中文介面始終是個阻礙。雖然說軟體開發人員對於英文應該比一般行業要熟悉一些，尤其對於電腦英文更應得心順手才對， 但總是三不五時有人反應怎麼沒有中文版．．．又顧及大陸同仁接受英文的程度更差，索性把Trac常用的詞彙翻譯成中文算了。利用閒暇時間把Trac的樣板 檔逐一修改，再公佈到 Google Code 上供有興趣的讀者們下載使用。以下是trac-tw專案的詳細資訊：    專案代碼：trac-tw   專案首頁： http://code.google.com/p/trac-tw    取出主幹原始檔：svn checkout http://trac-tw.googlecode.com/svn/trunk/ trac-tw   取出本日原始檔：svn checkout http://trac-tw.googlecode.com/svn/tags/TAG-20070908 trac-tw   直接下載修改過的樣板檔： http://trac-tw.googlecode.com/files/trac_templates.zip    版權：New BSD License (原本Trac是採用Modified BSD License，因此我比照使用BSD License，不知是否妥當？)   如果您也有興趣要強化此中文版的翻譯，請 寄信 給我，我將開啟存取Subversion檔案的帳號給您。對翻譯有建議或意見者，請直接留言在專案的Wiki上，我會盡速回應。  ##&amp;nbsp; </description>
		<link>http://blog.roodo.com/emisjerry/archives/4105153.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 08 Sep 2007 15:16:33 +0800</pubDate>
					</item>
	<item>
		<title>[Java] 在jar檔裡搜尋特定類別的工具 / 簡睿隨筆 《科技篇》</title>
		<description> 初學 Java 時因不諳 ClassPath 的觀念與用法，經常會因為找不到jar檔而出現 ClassNotFoundException 或 NoClassDefFoundError 的例外狀況。 LibraryFinder 就是一個讓我們指定特定目錄以搜尋類別是置放在那個jar檔裡的工具。  使用範例    java -jar LibraryFinderv1.2.1.jar c:\jdk1.6\lib com.sun.*     先指定要找那個資料夾，再指定要找那些類別   類別可以用星號   下載    請由 這裡 下載   在 這個網站 裡除了項說明外，也有示範的影像可以觀看   這個小工具有提供 IntelliJ IDEA 的插件， Eclipse 與 NetBeans 的版本則尚在準備開發階段  </description>
		<link>http://blog.roodo.com/emisjerry/archives/4074693.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 03 Sep 2007 22:18:14 +0800</pubDate>
					</item>
	<item>
		<title>TortoiseSVN: 解決TSVNCache佔用CPU過高的設定 / 簡睿隨筆 《科技篇》</title>
		<description>  竟然被中文介面誤導了這麼久！如果你偶爾在工作管理員裡發覺  TSVNCache .exe 突 然耗用許多CPU資源(有時會超過50%)，那要趕緊去檢查 TortoiseSVN 的 設定。原來是這個常駐的Process會定時去掃描受 Subversion 控 管的檔案是否被修改了，掃描到後，這些被修改的檔案、與其所屬的子目錄、目錄等的覆蓋圖示都一併更新，而就是這個動作不僅佔用約10-50 MB記憶體，也會瞬間衝出超過CPU 50%負載。   圖示覆蓋與狀態欄更新設定  打開 TortoiseSVN 的 【設定視窗(Settings)&amp;rarr;視覺樣式(Look and Feel)&amp;rarr;圖示覆蓋(Icon Overlays)】，右邊第一個Radio Group名稱「圖示覆蓋/狀態列」的英文是「Icon Overlays/Status Columns」，其中的 Status Columns 應譯成 狀 態欄 才對，它指的是在檔案總管裡把顯示模式切換成 詳細資料 時， 標題欄位裡的Subversion欄位是否要同步更新狀態。如果你只會在檔案總管裡操作Subversion狀態的話，應該把「僅在檔案總管中顯示圖示覆 蓋」打勾，以免除另存新檔、開啟檔案等對話窗也更新圖示狀態。但我有時會在 Total Commander 裡操作Subversion，因此就不能勾選。   狀態快取設定  右邊第二個Radio Group名稱譯成「 狀態列 」，讓人誤解成以為是顯示訊息的狀態列設 定，但其實英文是 Status Cache － 狀態快取 設 定，指的是資料夾與檔案圖示的SVN小圖示的覆蓋狀態的處理模式。Status Cache有3個選項：     Default    預設的快取設定，使用 TSVNCache .exe 來定時掃描檔案系統，找到要變動的檔案後發出更新圖示的通知給作業系統       Shell    在Shell extension裡，只針對目前所在資料夾做圖示異動更新；只佔用1MB記憶體，但因只快取一個資料夾，當Working copy內容較多時會花較多時間才能更新完畢       None    不做任何圖示覆蓋快取，因此圖示更新速度較慢    我特別做了測試把狀態改用Shell，重新開機後工作管理員裡就找不到 TSVNCache .exe 了，用檔案總管檢視Working copy資料夾時，圖示覆蓋以較緩慢的速度顯示出來。   磁碟機類型  磁碟機類型是指定讀取Subversion檔案狀態的對象，建議選硬碟，以免別的媒體較慢的讀取速度造成 TortoiseSVN 效 能低落。    在Subversion Forum 這篇討論 裡也有如下建議：     把A:\*、C:\*、D:\*到Z:\*都加到 除外路徑 裡，表 示每個磁碟都不做異動掃描   再把工作中的Working copy加入 包含路徑 ，如c:\ NewProject \*、 d:\ NewWD    再試用觀察一陣子再來確認應該用那樣的設定較好。</description>
		<link>http://blog.roodo.com/emisjerry/archives/3979261.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 21 Aug 2007 21:10:48 +0800</pubDate>
					</item>
	<item>
		<title>「勢不可擋」的Subversion / 簡睿隨筆 《科技篇》</title>
		<description>   Guido Haarmans 在他的Blog裡發表一篇 Unstoppable Subversion ，揭露 Subversion 的成長趨勢。比照以前Oracle的口號：Unbreakable Oracle－堅不可摧的Oracle，我把篇名譯為 「勢不可擋的Subversion」 。  文中提及 E-Soft 公佈了Subversion的成長趨勢圖，大約在一年裡有3倍的成長。   以我個人的使用經驗，Subversion確實比CVS優秀不少，Windows裡的 TortoiseSVN 又提供了很好的整合。如果你還在使用Visual SourceSafe或CVS的話，建議測試一下Subversion吧，相信能「一試成主顧」的。  ##       </description>
		<link>http://blog.roodo.com/emisjerry/archives/3953375.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 18 Aug 2007 17:19:36 +0800</pubDate>
					</item>
	<item>
		<title>開源的專案管理工具：GanttProject與OpenProj / 簡睿隨筆 《科技篇》</title>
		<description>  一般最常用來做為專案管理工具的非Microsoft Project莫屬，不僅功能眾多，相關的書籍也多，不過，若你的需求只是畫畫甘特圖、做點小團隊的資源分配等簡單的管理，除了使用Excel或Visio外，或許開源的 GanttProject 與 OpenProj 也能符合所需。   GanttProject 我用得比較久，是以Java撰寫且有中文介面，它的操作我用起來比較順手。 OpenProj 在Windows裡是以MSVC運行，但也有*nix的版本，它能直接讀取Microsoft Project的.mpp檔案，但可惜尚無中文介面。  需要做專案管理嗎？除了Excel土法煉鋼外，也試試這兩個Freeware吧。  下載     GanttProject     OpenProj   </description>
		<link>http://blog.roodo.com/emisjerry/archives/3951401.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 18 Aug 2007 10:14:24 +0800</pubDate>
					</item>
	<item>
		<title>用Aqua Data Studio存取Trac.db以加速權限設定 / 簡睿隨筆 《科技篇》</title>
		<description> 裝了 Trac 後開始設置使用權限，不過使用者不少，一個一個指派實在太花時間了，如果能由資料庫直接用SQL敘述來下指令應該比較省事，為了一勞永逸以減少日後維護的負擔，還是研究一下如何連接Trac使用的SQLite資料庫吧。以下是我使用 Aqua Data Studio (以下簡稱ADS)透過JDBC連接的步驟。   首先由 http://www.zentus.com/sqlitejdbc/ 下載SQLite JDBC Driver，我下載的是 Pure Java的版本   下載後把 sqlitejdbc-v036-nested.jar 複製到ADS安裝目錄的  lib  資料夾裡  【ADS功能表&amp;rarr;Server&amp;rarr;Register Server】，在RDBMS選項裡選擇Generic - JDBC，在右方Location欄位輸入如下資料：  URL:  jdbc:sqlite:/c:/trac/專案代碼/trac.db  &amp;nbsp; 在最後一個冒號後面指定trac.db的完整路徑，磁碟機代號前後都有正斜線( / )  Driver:  org.sqlite.JDBC   Driver Location: C:\Program Files\ADS\lib\sqlitejdbc-v036-nested.jar    右方最上面的Name給定一個名稱後按OK  設 定好JDBC連線後按Ctrl+Q打開Query Analyzer視窗，逐步展開Schemas，就能看到儲存在trac.db裡的資料表，由資料表名稱可以猜到使用權限是PERMISSION。我們可 以設置幾個不同的群組，再把使用者指派給特定的群組，再針對群組設定能使用的權限即可。  以下把user1、user2、user3分別指派給 g_admin、g_pg、g_qa三個群組：     &amp;nbsp; INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;user1&amp;#39;, &amp;#39;g_admin&amp;#39;); &amp;nbsp; INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;user2&amp;#39;, &amp;#39;g_pg&amp;#39;); &amp;nbsp; INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;user3&amp;#39;, &amp;#39;g_qa&amp;#39;);     接著設置群組g_admin擁有所有權限：     INSERT INTO permission(username, action)&amp;nbsp;VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;BROWSER_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;CHANGESET_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;FILE_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;LOG_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;MILESTONE_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;REPORT_SQL_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;REPORT_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;ROADMAP_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;SEARCH_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;TICKET_CREATE&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;TICKET_MODIFY&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;TICKET_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;TIMELINE_VIEW&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;WIKI_CREATE&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;WIKI_MODIFY&amp;#39;); INSERT INTO permission(username, action)&amp;nbsp; VALUES(&amp;#39;g_admin&amp;#39;, &amp;#39;WIKI_VIEW&amp;#39;);      其他群組就依此類推並減少部份權限即可。檢視資料表，對於由別的Issue/Bug tracking系統要匯入資料會有不少幫助的。 </description>
		<link>http://blog.roodo.com/emisjerry/archives/3658887.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 14 Jul 2007 21:45:45 +0800</pubDate>
					</item>
	<item>
		<title>在Windows上安裝Trac的完整步驟 / 簡睿隨筆 《科技篇》</title>
		<description>  雖然只知道 Python 的Logo是綠色的蛇，其他完全一無所知，但在 TracOnWindows 和 網站製作學習誌 的加持下，還算順利的在Windows上安裝了 Trac 0.10.4 。以下是安裝過程中做的筆記，主要的安裝程序是參考 TracOnWindows 的Method 3: Manual Installation：   安裝需要的軟體   安裝 Python 2.4.4 ： http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi   下載簡易安裝程式 easy_install.py ：  http://peak.telecommunity.com/dist/ez_setup.py   執行剛下載回來的ez_setup.py(雙擊即可執行)，會自動下載 setuptools.exe , 透過此工具以簡化後續的安裝步驟  安裝 ClearSilver ：     cd \Python24\scripts easy_install -f http://clearsilver.net/downloads clearsilver==0.9.14       安裝 PySQLite ：easy_install pysqlite  安裝 Subversion server &amp;nbsp;  安裝 Subversion Python library ：easy_install -Z http://subversion.tigris.org/downloads/svn-python-1.4.2.win32-py2.4.exe 安裝成功會出現&amp;quot;Processing dependencies for svn-python==1.4.2&amp;quot;; 這個步驟會等較久些  安裝 Trac 0.10.4 ：http://ftp.edgewall.com/pub/trac/trac-0.10.4.win32.exe  把trac-admin和tracd少掉的副檔名給加上去：     cd \Python24\scripts ren trac-admin trac-admin.py ren tracd tracd.py      以上已把需要的程式都安裝完畢。接著是設定。  Trac系統設定   建立Trac環境；在這裡我把Trac裝到 C:\trac 資料夾      md \trac    cd \trac   \Python24\Scripts\trac-admin.py \trac\專案代碼 initenv 重新啟動Apache    以上指令中的「專案代碼」會變成網址中的webapp的文件根目錄.。執行後會以問答的方式輸入需要的資料：      Project Name: 專案名稱，可以用中文   Database connection string: db/trac.db&amp;nbsp; 用預設值   Repository type: svnhttp://trac-hacks.org/wiki/   Path to repository: d:\svn 或用UNC寫法Install    Templates directory: d:\Python24\share\trac\templates 用預設值 重新啟動Apache重新啟動Apache    開始建檔環境時會出現 &amp;quot;Creating and Initializing Project&amp;quot;，建立檔案後會&amp;quot;Indexing repository&amp;quot;, 索引時間視檔案庫大小而定。   啟動與測試：以Stand-alone的方式啟動Trac Server     cd \Python24\scripts  tracd.py --port 8000 C:\trac\專案代碼    啟動後在瀏覽器網址輸入  http://localhost:8000/  或  http://localhost:8000/專案代碼  測試之。   建立Trac的管理使用者     cd \Python24\scripts trac-admin.py c:\trac\專案代碼 permission add admin TRAC_ADMIN    不許匿名用戶使用     cd \Python24\scripts trac-admin.py c:\trac\專案代碼 permission remove anonymous *        安裝Plugins WebAdmin，建立管理網頁：      cd \Python24\scripts easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/        安裝Plugins AccountManager，以方便管理使用者： &amp;nbsp;    cd \Python24\scripts easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10        安裝Plugins IniAdmin，用網頁設定系統設定檔trac.ini：     cd \Python24\scripts easy_install http://trac-hacks.org/svn/iniadminplugin         easy_install 的使用頻率很高，讓我聯想到它的功能和Debian的apt-get有點類似，它會先到網址參數的Subversion檔案庫取下檔案，並存放到暫存目錄再執行安裝，把下載、解壓縮、執行、設定的繁瑣步驟給簡化了，相當地方便。有更多的Macros、Plugins可以由 Trac Hacks  網站取得。Macro取回zip檔外把檔案複製到\Python24\share\trac\wiki-macros；Plugins則用easy_install安裝即可。  Trac和Apache Web Server的整合   安裝 mod_python ：由 http://apache.stu.edu.tw/httpd/modpython/win/3.2.10/ 下載，選擇安裝目錄時選C:\Program Files\Apache Group\Apache2，則 mod_python.so 會被安裝到c:\Program Files\Apache Group\Apache2\modules資料夾  修改 c:\Program Files\Apache Group\Apache2\conf\ httpd.conf ，找到 LoadModule dav_svn_module &amp;quot;C:/Subversion/bin/mod_dav_svn.so&amp;quot;後，加入 LoadModule python_module modules/mod_python.so  設定網址對應，在httpd.conf最後面加上如下設定：     &amp;lt;Location /trac&amp;gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetHandler mod_python  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonHandler trac.web.modpython_frontend  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonOption TracEnvParentDir c:\trac  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PythonOption TracUriRoot /trac  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthName &amp;quot;CompanyName&amp;quot;重新啟動Apache  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUserFile &amp;quot;D:/Repository/project-users.db&amp;quot;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user重新啟動Apache重新啟動Apache  &amp;lt;/Location&amp;gt;      重新啟動Apache&amp;nbsp;&amp;nbsp;&amp;nbsp;  [/] 根目錄必須開放讀的權限給Trac的使用者，否則在瀏覽原始檔時會出現權限不足的錯誤訊息。  Trac的其他設定留待有空時再來記錄了。</description>
		<link>http://blog.roodo.com/emisjerry/archives/3655571.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 13 Jul 2007 23:31:44 +0800</pubDate>
					</item>
	<item>
		<title>免費計數網站 SiteMeter 換新妝 / 簡睿隨筆 《科技篇》</title>
		<description>雖然據說  SiteMeter  會偷偷在你的瀏覽器裡安裝分析用的Cookie，雖然它提供的功能和介面與 Google Analytics 比較下相形失色，但因為它簡單又方便，還提供較明細的訪客資訊，所以我還是繼續使用。今天，它的新版在宣告許久後終於上線了，晚點再來做詳細些的測試。 </description>
		<link>http://blog.roodo.com/emisjerry/archives/3196171.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 09 May 2007 09:14:28 +0800</pubDate>
					</item>
	<item>
		<title>試用正規運算式(Regular Expression)工具 / 簡睿隨筆 《科技篇》</title>
		<description>
  正規運算式 (Regular
Expression)對於動態腳本的程式撰寫用處頗多，但我卻沒有很仔細的學習，總是要用到時才翻書查閱、尋找類似的Pattern再套用。今天找了些
輔助工具，希望能透過這些工具讓自己對於正規運算式能瞭解得更透徹，在使用上能更得心應手。
  

 
 
 
 工
具名稱 
 下
載 
 試
用狀況 
 
 
 The
Regex Coach 0.9 
   http://weitz.de/files/regex-coach.exe  
 功能齊
全，但執行時效能很差 
 
 
 reWork:
a regular expression workbench
 
  http://osteele.com/tools/rework/  
 網站。
我的首選 
 
 
 Expresso
2.1 
  http://www.ultrapico.com/Expresso.htm  
 運行
在.NET上。但跑一個運算式時無法通過剖析，但以上兩個卻可以 
 
 
 
 
## 

</description>
		<link>http://blog.roodo.com/emisjerry/archives/3010673.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 15 Apr 2007 21:07:55 +0800</pubDate>
					</item>
	<item>
		<title>IE會自動把標籤轉成大寫！ / 簡睿隨筆 《科技篇》</title>
		<description>
我在上一篇  替部落格的側邊欄位加上縮起與展開功能 的最後面說： 不知為何，IE執行上會有問題，FireFox則正常 ，最後找到的問題又是IE和FireFox的差異造成的。  原來程式為了偷懶，使用innerHTML而未以DOM來操作，結果IE把所有的標籤都 自動轉換成大寫 (＜li&amp;gt;文章分類&amp;lt;/li&amp;gt;在IE裡變成＜LI&amp;gt;  文章分類&amp;lt;/LI&amp;gt;)  ，導致程式無法判斷正確，加了轉換成小寫來判斷後就OK了。  原來的寫法：       var _iIndex = _sHTML.indexOf(&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;);    // 在IE裡因會變大寫，致無法找到      修改後的正確寫法：     var _iIndex = _sHTML. toLowerCase() .indexOf(&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;);     ##  
</description>
		<link>http://blog.roodo.com/emisjerry/archives/2882481.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 19 Mar 2007 22:54:21 +0800</pubDate>
					</item>
	<item>
		<title>初試AJAX：中文的傳遞與接收 / 簡睿隨筆 《科技篇》</title>
		<description> 
 
 為
了要讓網頁的頁面與資料傳遞能夠做到更理想，開始研究AJAX，試看看是否能透過AJAX來解決部份以GET方式而受到的限制能有所突破。以下將測試環境
與程式按步就班地呈現出來，測試的過程裡，特別針對中文的傳入與傳回做了較詳盡的反覆測試。 
 
測試環境： 
 
   作業系統：Windows 2003 Server 
   瀏覽器：IE 6.0.3790.0、FireFox 2.0.0.2 
   Application Server：Resin 2.12、Resin 3.0.21 
 
首先撰寫啟始的前端網頁文件，命名為  ajax.html ，
網頁裡放三個控制項，一個用來輸入文字的 TEXT1 、
觸發AJAX執行的按鈕 btnOK1 和
接收Server回應的文字框 RESULT ，
呈現頁面如圖2。 
 
   
     
       &amp;lt;form
id=&quot;idForm&quot;&amp;gt; 
&amp;nbsp; &amp;lt;input type=&quot;text&quot; name=&quot;TEXT1&quot; id=&quot; TEXT1 &quot;&amp;gt; 
&amp;nbsp; &amp;lt;input type=&quot;button&quot; name=&quot;btnOK1&quot; id=&quot; btnOK1 &quot; value=&quot; TEST
1 &quot;&amp;gt; 
&amp;nbsp; &amp;lt;textarea name=&quot;RESULT&quot; id=&quot; RESULT &quot; rows=10
cols=50&amp;gt;&amp;lt;/textarea&amp;gt; 
&amp;lt;/form&amp;gt; 
     
   
 
 
 
   
     
       圖2 
     
     
         
     
   
 
 
把按鈕RESULT的 onclick 事件放在window.onload裡：&amp;nbsp;
 
   
     
       &amp;nbsp;
window.onload = function() { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.getElementById(&quot;btnOK1&quot;).onclick = function() { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request =
httpRequest(); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.getElementById(&quot;RESULT&quot;).innerHTML = &quot;&quot;; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.open(&quot;POST&quot;,
&quot;ajax2.jsp&quot;, true); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.onreadystatechange = handleResponse; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.setRequestHeader(&quot;Content-Type&quot;,
&quot;application/x-www-form-urlencoded;&quot;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.send(&quot;TEXT1=&quot; + document.getElementById(&quot;TEXT1&quot;).value + 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&quot;&amp;amp;TEXT2=中文傳到Server&quot;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; //~ btnOK1 
&amp;nbsp; } //~ window.onload 
       
     
   
 
 
幾個說明如下： 
 
   XMLHttpRequest物件建立後，變數名稱是request 
   用了避免傳遞的參數有字數長度的限制，因此用POST的方式傳參數；使用POST傳遞參數時，必須有
request.setRequestHeader，此處必須特別注意的是： request.setRequestHeader
必須寫在request.open後面 ，否則 IE 會有&quot;錯誤:
無法指出的錯誤&quot;，而FireFox會有&quot;uncaught exception&quot;錯誤 
   Query String會以問號開頭，而使用request.send傳送時 不能用問號開頭 ！ 
   Server的處理程式檔名為  ajax2.jsp  
   Server處理完畢後會被執行的函數是 
handleResponse ，把接收回的字串寫入RESULT文字框 
 
Server上的 ajax2.jsp 主要邏輯如下： 
 
   
     
       &amp;lt;%@
page contentType=&quot;text/html;charset=UTF-8&quot;%&amp;gt; 
&amp;lt;% 
&amp;nbsp; //response.setContentType(&quot;text/html;charset=UTF-8&quot;); 
&amp;nbsp; //response.setHeader(&quot;Charset&quot;, &quot;Big5&quot;); 
&amp;nbsp; request.setCharacterEncoding(&quot;UTF-8&quot;); 
&amp;nbsp; out.println(&quot;由Server輸出回網頁.....&quot;); 
&amp;nbsp; String _sText1 = request.getParameter(&quot;TEXT1&quot;); 
&amp;nbsp; out.println(&quot;TEXT1=&quot; + _sText1); 
%&amp;gt; 
     
   
 
 
重點說明： 
 
   XMLHttpRequest傳出與接收的編碼都是 UTF-8 ，
因此JSP的反應編碼(第一行)與接收傳入參數的request(第5行)都使用UTF-8，如此接進來的參數與傳回的輸出，才能正確的被
XMLHttpRequest
處理 
   有的網站會把request參數用ISO8859-1再編碼成UTF-8，或用
response.setCharacterEncoding設定UTF-8，其實只要用說明1的方法就能都解決了；另外，若使用的
Application Server使用的是JSDK
2.3的話，是無法使用response.setCharacterEncoding的，這個method是JSDK 2.4後才增加的 
 
再來把 ajax1.html &amp;nbsp;的Server換用Servlet來處理(xxx換成自己的Webapp名稱)： 
 
   
     
       request.open(&quot;POST&quot;,
&quot;/xxx/servlet/ajax_Servlet2&quot;, true); 
     
   
 
 
ajax_Server2的主要邏輯是： 
 
   
     
       &amp;nbsp;
protected void doPost(HttpServletRequest request, HttpServletResponse
response)  
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; throws ServletException, IOException { 
&amp;nbsp;&amp;nbsp;&amp;nbsp; response.setContentType(&quot;text/html;
charset=UTF-8&quot;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; request.setCharacterEncoding(&quot;UTF-8&quot;); 
       
&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintWriter out = response.getWriter(); 
       
&amp;nbsp;&amp;nbsp;&amp;nbsp; String _sText1 =
request.getParameter(&quot;TEXT1&quot;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; String _sText2 =
request.getParameter(&quot;TEXT2&quot;); 
       
       &amp;nbsp;&amp;nbsp;&amp;nbsp; //_sTEXT1 = new
String(_sTEXT1.geresponse.setCharacterEncodingtBytes(&quot;ISO-8859-1&quot;),
&quot;UTF-8&quot;); 
        
&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuffer buf = new StringBuffer(); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; buf.append(&quot;訊息1=&quot; + _sText1); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; buf.append(&quot;訊息2=&quot; + _sText2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(buf.toString()); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; out.close(); 
&amp;nbsp; } 
       
     
   
 
 
response和request都使用 UTF-8 就
對了。 
 
完整的 ajax1.html列表在下： 
 
&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;form id=&quot;idForm&quot;&amp;gt;
&amp;nbsp; &amp;lt;input type=&quot;text&quot; name=&quot;TEXT1&quot;
id=&quot;TEXT1&quot;&amp;gt;
&amp;nbsp; &amp;lt;input type=&quot;button&quot; name=&quot;btnOK1&quot; id=&quot;btnOK1&quot;
value=&quot; TEST 1 &quot;&amp;gt;
&amp;nbsp; &amp;lt;textarea name=&quot;RESULT&quot; id=&quot;RESULT&quot; rows=10
cols=50&amp;gt;&amp;lt;/textarea&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;span
id=&#039;spaParam&#039;&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&amp;lt;script&amp;gt;
&amp;nbsp; var request;
&amp;nbsp; function httpRequest() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var req;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.XMLHttpRequest) {&amp;nbsp;
// Mozilla-based browsers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req = new
XMLHttpRequest();
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (window.ActiveXObject)
{&amp;nbsp; // IE 5, IE 6
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req = new
ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!req)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
req = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; return req;
&amp;nbsp; } //~ httpRequest
&amp;nbsp; function handleResponse() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (request.readyState == 4)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (request.status
== 200) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
//!! innerText在FF裡竟然不行!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.getElementById(&quot;RESULT&quot;).innerHTML =
request.responseText;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
alert(&quot;Error: &quot; + request.status + &quot; &quot; +
request.statusText);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; } //~ handleResponse
&amp;nbsp; window.onload = function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.getElementById(&quot;btnOK1&quot;).onclick = function()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request =
httpRequest();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
document.getElementById(&quot;RESULT&quot;).innertext = &quot;&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.open(&quot;POST&quot;,
&quot;/mis/servlet/ajax_Servlet2&quot;, true);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
//request.open(&quot;POST&quot;, &quot;ajax2.jsp&quot;, true);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.onreadystatechange = handleResponse;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.setRequestHeader(&quot;Content-Type&quot;,
&quot;application/x-www-form-urlencoded;&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
request.send(&quot;TEXT1=&quot; + document.getElementById(&quot;TEXT1&quot;).value
+
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&quot;&amp;amp;TEXT2=中文傳到Server&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; //~ btnOK1
&amp;nbsp; } //~ window.onload
&amp;lt;/script&amp;gt;
  
## 
 
 
  
  
  dp.SyntaxHighlighter.HighlightAll(&#039;code&#039;);  
</description>
		<link>http://blog.roodo.com/emisjerry/archives/2863005.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 16 Mar 2007 23:41:50 +0800</pubDate>
					</item>
	<item>
		<title>程式人員的線上工具箱：http://www.thepeoplestoolbox.com / 簡睿隨筆 《科技篇》</title>
		<description>
 Ths Peoples Toolbox 是很方便的線上工具箱網站。它區分成 Tools for Programmers 與 Tools for Web Designers 兩大類，每類裡又有多種不同的技術網站，可以很簡便的瀏覽。  在註冊後能自行組織需要參考的連結。    
 ## 

</description>
		<link>http://blog.roodo.com/emisjerry/archives/2748511.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 20 Feb 2007 17:29:59 +0800</pubDate>
					</item>
	<item>
		<title>Excel讀取CSV數值字串的解決方法 / 簡睿隨筆 《科技篇》</title>
		<description>
在產生讓Excel讀取的CSV(Comma Separated Values)檔案時，由於Excel的自動轉換功能，導致想要保持原樣的欄位也被強迫轉錯了。例如字串的&amp;quot;00123&amp;quot;會被Excel自動轉成數值的 123。真是傷腦筋。  還好，最後在 這裡 找到解決方法。原來只要加上等號就可以了，也就是是把  &amp;quot;00123&amp;quot;  寫成  =&amp;quot;00123&amp;quot;  就解決了。  ## 

</description>
		<link>http://blog.roodo.com/emisjerry/archives/2598976.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 25 Dec 2006 22:25:07 +0800</pubDate>
					</item>
	<item>
		<title>SVNbook繁體中文版復活 / 簡睿隨筆 《科技篇》</title>
		<description>
《Version Control with Subversion》繁體中文版「失聯」許久，終於 在svnbook 復活 中看到又重出江湖了。新的網址是： http://svn.stu.edu.tw/svnbook/book.html   ##

</description>
		<link>http://blog.roodo.com/emisjerry/archives/2385428.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 29 Oct 2006 23:03:12 +0800</pubDate>
					</item>
	<item>
		<title>[程式] Ruby 基礎 / 不猛的猛哥</title>
		<description>在  [转载]Ruby 基础教程  看到的 Ruby 基礎

原作者：Ralf Wirdemann, Thomas Baustert
www.b-simple.de
2006.2.14</description>
		<link>http://blog.roodo.com/monkuo/archives/2364953.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 25 Oct 2006 16:22:23 +0800</pubDate>
					</item>
	<item>
		<title>[程式] Ruby 實用小技巧 / 不猛的猛哥</title>
		<description>在 Ruby On Rails 中文社區論壇  看到的  Ruby慣用法 

大陸那邊的資源比我們多好多阿!!</description>
		<link>http://blog.roodo.com/monkuo/archives/2364093.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 25 Oct 2006 13:44:29 +0800</pubDate>
					</item>
	<item>
		<title>[Ruby 筆記] Rails, MySQL 與 Ubuntu / syshen&#039;s blog</title>
		<description>水土不服？還是我比較倒楣？上次在 Mac 上跑 Rails 以及 MySQL 都很正常，一切順利，現在在 Ubuntu 上跑就是問題不少。   [socket path 不對！]  Rails 預設會去找 /tmp/mysql.sock 檔，不過 Debian 或者 Ubuntu 上的 Mysql 卻不是在那裡，通常是在 /var/run/mysqld/mysqld.sock，這需要改 database.yml，如下：   development:   adapter: mysql    socket: /var/run/mysqld/mysqld.sock    database: sandbox_development   username: abc   password: oh_my_god   host: localhost  需要多加一個 socket 參數，不過還是可以找到 文件 說明這個啦。   [Lost connection to MySQL server during query]  Oh! My God! What&#039;s this? Is it good to drink? 連結 Mysql 時一直得到這個錯誤，拿這串 message 直接去問估狗大神，他跟你說，是 gcc 版本的問題，要重新 compile ! 喔，不會吧？！不過還好，在我還沒做蠢事前，多問了大神兩句，就得到結果了，少裝了   libmysql-ruby1.8，如下命令：     % apt-get install libmysql-ruby1.8    這是從 這裡 看來的。  終於，Mysql 可以順利運作了 T_T         </description>
		<link>http://blog.roodo.com/syshen/archives/2143083.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 13 Sep 2006 22:17:06 +0800</pubDate>
					</item>
	<item>
		<title>使用svn://連檔案庫：svnserve.exe / 簡睿隨筆 《科技篇》</title>
		<description>
一般Subversion Server會和Apache Web Server
2.0一起使用，目錄的控管權限就直接透過Apache強大的功能來達成。但若遇到無法使用Apache時，其實可以直接使用Subversion提供的
獨立Server:    svnserve.exe   ，
使用的通訊埠是3690。 
 
啟動方法很簡單： 
 
 
 
 cd
\Subversion\bin 
svnserve.exe  -d 
 
 
 
 
執行後的DOS視窗會一直開啟著，只要把視窗關閉或按Ctrl-Break就能停止Subversion的運作。 
連接的操作網址格式如下，Server的名稱或IP與檔案庫名稱皆依實際的安裝名稱替換： 
 
 
 
 svn://localhost/repository 
 
 
 
 
 
參考： 
   http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html   TortoiseSVN安裝目錄 bin/TortoiseSVN_en.chm 3.2節  ##

</description>
		<link>http://blog.roodo.com/emisjerry/archives/2127529.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 10 Sep 2006 13:45:28 +0800</pubDate>
					</item>
	<item>
		<title>WinMerge檔案濾鏡的使用方法 / 簡睿隨筆 《科技篇》</title>
		<description>
 當我們在比對CVS或
Subversion的工作目錄(CVS使用，Working Directory)或工作複本(SVN使用，Working
Copy)時，若不將其內部使用的CVS或.svn子目錄忽略掉，則經常會出現許多不必要的檔案；使用下列步驟則可將之忽略掉不比對： 
  
 比
對時必須指定檔案濾鏡 (File Filter)  
  
 【工
具→濾鏡】，在檔案濾鏡頁籤上按新增，給一個新的檔名，例如 wwwroot.flt  
  
  wwwroot.flt 內容如下： 
 
   
   
 
  c:\Program
files\WinMerge\Filters\wwwroot.flt  
 
 
   
 
  &amp;nbsp;    ##
This is a directory/file filter template for WinMerge name:
wwwroot desc:
JSP/JSPF/XML,...  
   &amp;nbsp;      ## Select if filter is inclusive or exclusive ##   
Inclusive (loose) filter lets through all items not matching rules    ## Exclusive filter lets through only items that
match to rule ## include or exclude   def:
include  
   &amp;nbsp;    ##
Filters for filenames begin with f: ##
Filters for directories begin with d: ##   (Inline comments
begin with &amp;quot; ##&amp;quot; and extend to the end of the line)   ##
 以下副檔名的檔案不比對 
   &amp;nbsp;    f:
\.bak$ f:
\.class$ f:
\.~*$    &amp;nbsp;    d:
\\images$ d:
\\WEB-INF\\work$ d:
\\web-inf\\work$ d:
\\WEB-INF\\classes$ d:
\\web-inf\\classes$ d:
\\web-inf\\lib$ d:
\\WEB-INF\\tmp$ d:
\\\.svn$ d:
\\CVS$    &amp;nbsp;  
 


  
 




  
  include  的意思是下列的檔案  (f:)  與目錄  (d:)  設定要加入過濾條件裡，符合的檔案  不會  被比對  

  
 
  f: 指定副檔名，因為點 (.) 是 Regular expression 的
特殊符號，副檔名的點要用   \.   來表示；結尾注
意要有 Dollar-sign(  $  )  


  d: 指定不要比對的目錄，必須以   \\   開頭，   $   結尾 


  \\\.svn 前兩個反斜線表示目錄，
第三個反斜線和 . 構成  
   .    符
號 
 
 
 
 

  
## 
</description>
		<link>http://blog.roodo.com/emisjerry/archives/2127388.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 10 Sep 2006 12:44:10 +0800</pubDate>
					</item>
	<item>
		<title>使用WinMerge以忽略$Header$與$Id$的檔案比對方法 / 簡睿隨筆 《科技篇》</title>
		<description>
 為了顯示版本，我們的程式開頭一般都會加 CVS 或 Subversion 的關鍵字，如： 

 
	 
	 
		 
			 
				   &amp;lt;!--
				  $Header  :
				/repository/www/test/test.jsp,v 1.28 2005/10/21 02:46:52 Jerry
				Exp  $    
			 
		 
	 
 

 或 
 
	 
	 
		 
			 
				  &amp;lt;!--   $Id:  
				test.jsp 790 2006-05-10 11:24:13Z jerry   $    
			 
		 
	 
 

  ( 內容中有 $Header 或 $Id ，且以
 $  結尾 )  

 不管是 $Header$ 或 $Id$ ，都含有版本號碼在其內，導致不同版本的檔案在比對時，這幾列都會被視為不同內容而被標示出來，因此每次比對都會出現一堆只有不同版本編號的相同檔案，造成比對上的許多困擾。 

 以下是解決此困擾的方法：使用 WinMerge 的列濾鏡 (Line
Filter) 。 

   由  http://winmerge.org 
	 下載 WinMerge  
	   【工具→濾鏡】，選列濾鏡頁籤，勾選「忽略列符合下列的樣式」 
	  
	 在輸入框裡輸入下列內容：  \$Id:*\$ \$Id:.*\$			( 反斜線
	 $Id    冒號
	點   星號 反斜線  Dollar-sign) \$Header:$\$ \$Header:.*\$  
  

      如此設定後，比對時就會忽略這兩個關鍵字當列了。 

    $Log$ 是多列的內容，以上 Filter 規則無法套用。     
  

   參考： C:\Program
	Files\WinMerge\Docs\Manual\filters.html  
  

 ##
 
</description>
		<link>http://blog.roodo.com/emisjerry/archives/2126062.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 10 Sep 2006 00:11:55 +0800</pubDate>
					</item>
	<item>
		<title>試用TortoiseSVN 1.4 RC1 / 簡睿隨筆 《科技篇》</title>
		<description> TortoiseSVN 1.4.0 RC1 早於2006/08/05就釋出了，直到今天才安裝起來使用。這個版本主要是配合即將更版的Subversion 1.4，由其Release Notes來看，強化了許多功能；Subversion 1.4 RC5的Release Notes可 由此檢視 。  要
特別注意的：新版的TortoiseSVN會在你存取工作複本的同時，自動的變更.svn裡的檔案格式，變更後的格式無法使用以前的版本來讀取，
Subversion client的svn.exe也必須同步更新到1.4才能操作。但因Subversion
client尚未釋出Binary檔，因此在格式變更後會無法以svn.exe來下命令。但，如果所有的操作都是透過TortoiseSVN的話，就可忽
略這個狀況了。       What&#039;s New in TortoiseSVN 1.4      TortoiseSVN 1.4 is a superset of all previous TortoiseSVN releases.
Anything in 1.0.x, 1.1.x, 1.2.x or 1.3.x is also in 1.4, but 1.4 contains
features and bugfixes not present in any earlier release. It is
linked with Subversion 1.4. 

   Action dialogs (commit/check for modification/add...) 
         
       &amp;quot;Compare with BASE&amp;quot; is now possible for added and deleted files too.
       The diff viewer will show the diff against an empty file in that case.
         
       The columns shown are configurable. You can choose which columns are
       shown and what sizes they have. The configuration is saved between
       sessions. See  issue #80  
       for details.
         
       The &#039;OK&#039; button is disabled until at least one file/folder is selected
       to avoid empty operations.
         
       Files and folders shown can be dragged to other applications. Also files and
       folder can be dragged from the explorer on to those dialogs.
       See  issue #213  
       and  issue #212  
       for details.
         
       The dialogs can be interrupted while the status is fetched by clicking on &#039;Cancel&#039;.
         
       Switched files/folders are indicated with an &#039;(s)&#039; after the status text.
       See  issue #229  
       for details.
         
       Subversion properties can be edited/set/deleted directly from these dialogs with
       a right-click. See  issue #231  
       for details.
         
       
      Log dialog 
         
       New column showing the bugtraq ID string assigned to the revision.
         
       You can now specify a range for which the log messages should be fetched
       to avoid having to either click on &#039;Next 100&#039; repeatedly or fetch all
       messages at once.
         
       The log messages can contain simple formatting. You can write text in  *bold* ,  ^italic^ 
       or  _underlined_ . Of course, the formatting is also done in the commit dialog while you are
       writing the log message.     Explorer 
         
       The context menu shows different icons depending on what entry the menu is
       for. If you right-click on a shortcut, two entries are shown, one with a link icon
       and one with a folder or file icon (depending on what the shortcut points to).
       If you right-click on a file, again two entries are shown. One with a file icon for
       the file itself, and one with a folder icon for the parent folder.
         
       New &amp;quot;Move and rename&amp;quot; entry in the context menu.
         
       New column for showing the svn:eol-style property.
         
       
       Revision graph 
         
        The Revision graph got some major improvements. It has been rewritten
        almost completely to address some issues users reported in the past.
           
        Analyzing the data is much faster.
          
        Ability to show all revisions, not just the ones where there was a copy
        operation.
          
        Ability to have the graph sort the nodes by path.
          
        Better zooming support.
          
        
       Repository browser 
          
        When dragging items, folders are opened and closed automatically
        if hoovering over them for more than two seconds.
          
        Dragging items beyond the visible area makes the browser scroll the
        view automatically.
          
        Checkout of multiple urls at once. See  issue #247 
        for details.
          
        
       Status cache 
          
        An option to disable the cache process completely and either fetch the status
        only for the currently visible folder or not show any overlays at all.
          
        
       TortoiseMerge 
          
        Changes inside lines are colored differently to better see what exactly has
        changed. See  issue #254  for details.
          
        Changed blocks which have only changed in whitespace are marked with a white
        circle. Such changes usually happen due to code cleanups and have no functional
        changes. Now those blocks are clearly marked so you can easily go over them.
          
        Files in UTF-8 format are recognized automatically.
          
        Files in UTF-16 format can be diffed.
          
        
       TortoiseIDiff 
          
        This is a new tool which shows two images side-by-side. If you have images in
        your working copy (e.g. screenshots or partial screenshots for the helpfile/documentation)
        then you can now easily compare the new version of the image with the old one.
        This tool is for images what TortoiseMerge is for text files.
          
        
       Comparing two branches/tags 
         
        Due to a new function available in the Subversion 1.4 library, comparing
        two branches/tags is now much faster and reliable. Also it&#039;s now immediately clear
        if the file or property contents were changed.
         
      
       Many many more small improvements and bug fixes.
       See the  Change Log  for full details.
          ## 
</description>
		<link>http://blog.roodo.com/emisjerry/archives/2113102.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 06 Sep 2006 21:32:20 +0800</pubDate>
					</item>
	<item>
		<title>樂透包牌程式 / CL</title>
		<description>  下載↓   用排列組合列出所有牌組，這個是用C/C++寫的命令列程式， 有空在改寫成GTK+的視窗程式  下載的朋友，回應一下吧~   編譯環境：Dev-C++ </description>
		<link>http://blog.roodo.com/opensystem/archives/1958678.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 01 Aug 2006 14:44:47 +0800</pubDate>
					</item>
	<item>
		<title>c++ / 設計&amp;程式</title>
		<description>使用c++ 寫一個 Socket Client &amp; Server</description>
		<link>http://blog.roodo.com/javanull/archives/1635769.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 19 May 2006 20:29:42 +0800</pubDate>
					</item>
	<item>
		<title>建立軟體工程制度是理想化?? / 寫程式有啥好玩的</title>
		<description>前幾天呀，因友人介紹，跑去某一家公司面談，其間談到我對台灣軟體為什麼不是很強的看法，我是認為說，其實台灣不缺程式高手，對軟體鑽研很深的人多的是，不過最大的問題，在於我們都不重視軟體工程，比如說模組的建立，Source Code的版本追蹤，Bug和版本之間的關係，軟體的驗證方式，甚至於說公司專用Library的累積，系統分析等，一般的軟體開發者大概都有概念，但卻從不願意去做，反正出貨第一，這些軟體工程上的事，就可有可無了。  我是一直認為，軟體工程做的好的話，才能夠建立品質穩定並不斷改進的軟體，因此我也一直在研究相關的一些問題，雖不敢說我是這方面專家，但至少這是我很重視的方向，也認為這是台灣軟體界比較缺乏的部份，因此希望未來能找這方面的工作。  對方聽我吱吱喳喳的講完後，看的出對方略帶困惑的微笑對我說：「很佩服您工作了那麼多年，還能保有這樣的理想性」。嗯...突然間就感覺滿尷尬的了，呵，對方要找的，看來只是個progrmmer，或許是我講的太遠了點，不過我並不認為我是太過理想化，本來我剛開始寫程式的時候，我也不重視這些，反正程式會動最重要，但開始帶領團隊後，就深感覺這些才是根底，工程不是藝術，產生長遠穩定的產品，才是工程上所追求的事，把寫程式當藝術，對於小程式很有用，對團隊開發，就不見得是見好事了。  想當然爾，對方不會很想要我，我也興趣不大，遺憾，其實那應該是家還不錯的公司，不過呢，還是讓我保持一點所謂的理想化吧，好了，開始看NAnt、Subversion和WiX的整合囉，滿好玩的呢。 
 </description>
		<link>http://blog.roodo.com/programmingfun/archives/1565851.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 09 May 2006 18:03:27 +0800</pubDate>
					</item>
	<item>
		<title>有關一個form1傳遞參數到form2然後在回傳參數回去form / 設計&amp;程式</title>
		<description>以下是我用timer 所做的一個測試不知大家是否有更好的方法
1. 將 form1 的變數傳遞到form2 裡當 form2 click button 後改變form1-&gt;Edit 的 內容
     </description>
		<link>http://blog.roodo.com/javanull/archives/1326280.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 27 Mar 2006 20:09:13 +0800</pubDate>
					</item>
	<item>
		<title>用C++ Builder實現網路連接檢測程式 / 設計&amp;程式</title>
		<description>Windows系統中，我們經常用Ping.exe來測試網路的連通性。 

　　Ping的實現過程很簡單，該命令將引發IP層發送一個簡單的IP包，一般是32位元組。而目的方收到這個包後，將源位址和目的地址變換一下，重新發送這個包即可，當然還要加一些超時機制。 

　　其實，我們也可用C++ Builder NetMaster中的NMEcho控制項來實現網路連接檢測功能。 

</description>
		<link>http://blog.roodo.com/javanull/archives/1202309.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 04 Mar 2006 02:32:16 +0800</pubDate>
					</item>
	<item>
		<title>c++ 使用讀檔 / 設計&amp;程式</title>
		<description>以下範例是使用c++ 去讀檔
</description>
		<link>http://blog.roodo.com/javanull/archives/1136766.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 17 Feb 2006 21:38:31 +0800</pubDate>
					</item>
	<item>
		<title>indexof 找出string 的長度 / 設計&amp;程式</title>
		<description>直接利用 String 類別的method -&gt; split , 把原始字串切割成字串陣列就可以了
測試程式如下：
public class StringSplitTest {
    public static void main(String[] args) {
     String str = &quot;abc , def ,ghi&quot;;
     String strE[]=str.split(&quot;,&quot;);
     for (int i=0;i&lt;strE.length;i++){
     System.out.println(strE[i]);
     }
    }
}
//以下是執行結果
abc 
 def 
ghi
</description>
		<link>http://blog.roodo.com/javanull/archives/1134247.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 17 Feb 2006 10:52:23 +0800</pubDate>
					</item>
	<item>
		<title>separate each space in one string / 設計&amp;程式</title>
		<description>string str = &quot;1.roger 2.chunag 3.abc 4.ccc&quot;;
  size_t pos = str.find(&quot; &quot;); // indexof of _first_ space
  size_t oldPos = 0;
  while (pos != string::npos)
  {
    string piece = str.substr(oldPos, pos - oldPos);
    cout &lt;&lt; piece &lt;&lt; endl;
    oldPos = pos + 1;
    pos = str.find(&quot; &quot;, oldPos);
  }</description>
		<link>http://blog.roodo.com/javanull/archives/1043715.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 24 Jan 2006 18:03:28 +0800</pubDate>
					</item>
	<item>
		<title>pc code convert to wince / 設計&amp;程式</title>
		<description>一些code 在PC 上可以使用但是WINCE 不可以
所以我提供一些Sample 可以分享</description>
		<link>http://blog.roodo.com/javanull/archives/1039289.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 23 Jan 2006 14:36:13 +0800</pubDate>
					</item>
	<item>
		<title>replacing text function in C++ / 設計&amp;程式</title>
		<description>replacing text function in C++ 

/* replaces every occurrence of c1 in str with c2 */ 
void replace( char *str, char c1, char c2 ) 
{ 
   unsigned int i; 
   for( i = 0; i &lt; strlen( str ); i++ ) 
       if( str == c1 ) 
           str = c2; 
} 
/* replaces every occurrence of c1 in str with c2 */ 
</description>
		<link>http://blog.roodo.com/javanull/archives/960386.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 05 Jan 2006 17:25:10 +0800</pubDate>
					</item>
	<item>
		<title>令一種型態與指標一起使用 / 設計&amp;程式</title>
		<description>if void * to conver any data type </description>
		<link>http://blog.roodo.com/javanull/archives/953745.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 04 Jan 2006 02:03:08 +0800</pubDate>
					</item>
	<item>
		<title>一些比較好的討論區 / 設計&amp;程式</title>
		<description>
     一些比較好的討論區
有 c++ 跟 java
</description>
		<link>http://blog.roodo.com/javanull/archives/903652.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 23 Dec 2005 18:42:58 +0800</pubDate>
					</item>
	<item>
		<title>[Subversion] Hook scripts的使用方法 / 簡睿隨筆 《科技篇》</title>
		<description>
  為了達成Subversion在Commit前後能自行控管，例如：    Commit之前(Pre-commit)自行檢查權限，只有符合者能繼續Commit  Commit之後(Post-commit)自動寄Mail給特定人員  Commit之後將異動資訊寫入資料庫，以方便日後查詢   Subversion提供了下列幾種可供自行處理的事件，供自行擴充的檔案稱為 Hook scripts (必須是可執行檔，在Windows裡就是副檔名為.bat、.exe、.cmd等的檔案），其範例樣板皆存放於Subversion  檔案庫的hooks資料夾  裡：      序  事件  功能說明  範例樣板    1  Pre-commit  Commit之前被執行   pre-commit.tmpl    2  Pre-lock  檔案鎖定之前被執行  pre-lock.tmpl    3  Pre-revprop-change  檔案庫被新增、修改或刪除前被執行   pre-revprop-change.tmpl    4  Pre-unlock  檔案解除鎖定之前被執行  pre-unlock.tmpl    5  Post-commit  Commit之後被執行  post-commit.tmpl    6  Post-lock  檔案鎖定之後被執行  post-lock.tmpl    7  Post-revprop-change  檔案庫被新增、修改或刪除後被執行  post-revprop-change.tmpl    8  Post-unlock  檔案解除鎖定之後被執行  post-unlock.tmpl    9  start-commit  異動開始前被執行  start-commit.tmpl     這裡的處理觀念都和CVS類似（可參加我先前寫的這篇：  loginfo.rb：自動寄送修改記錄信件  ），但麻煩的是Subversion只傳出檔案庫路徑和發生異動的Revision序號，其他資料資訊如作者、異動時間、異動檔案、異動內容等，都不會直接傳出來給Hook scripts；看了一些文件和範例程式後，發現這些資訊必須透過 \svn-win32-1.2.3\bin\svnlook.exe 才能取得，我做了個簡單的測試，檔名是 檔案庫目錄/hooks/post-commit.bat：      指令  說明    set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv  設定語系Locale    echo %1 %2 &amp;gt;&amp;gt; d:\repo\hooks\post.txt  看Post-commit後傳了那些東西給hook script    echo ---changed: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK changed &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把異動檔名寫入post.txt    echo ---date: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK date &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把異動時間寫入post.txt    echo ---log: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK log &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把commit時輸入的Log訊息寫入post.txt    echo ---author: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK author &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把作者寫入post.txt    echo ---youngest: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK youngest &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把最後的異動序號寫入post.txt    echo ---diff: &amp;gt;&amp;gt; d:\repo\hooks\post.txt d:\svn-win32-1.2.3\bin\SVNLOOK diff &amp;quot;%1&amp;quot; &amp;quot;%2&amp;quot; &amp;gt;&amp;gt; d:\repo\hooks\post.txt   把差異內容寫入post.txt     最後再寫一支程式去解析post.txt就可以了。嗯，post.txt的檔名還要再加上可分辨的序號才可以，以防止同時有許多人在Commit。  ##  </description>
		<link>http://blog.roodo.com/emisjerry/archives/844150.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 09 Dec 2005 23:01:09 +0800</pubDate>
					</item>
	<item>
		<title>c++ some mothod / 設計&amp;程式</title>
		<description>Parameters. 

string1 
Null-terminated string to search. 
string2 
Null-terminated string containing the substring to search for. 
Return Value. 
 A pointer to the first occurrence of string2 in string1. 
 If string2 is not found in string1 the function returns NULL. 

const char * strstr ( const char * string1, const char * string2 ); 
     char * strstr (       char * string1, const char * string2 ); 

 Both have the same behavior as the original declaration. 
Example. 
</description>
		<link>http://blog.roodo.com/javanull/archives/835052.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 07 Dec 2005 18:33:29 +0800</pubDate>
					</item>
	<item>
		<title>java excel / 設計&amp;程式</title>
		<description>java excel</description>
		<link>http://blog.roodo.com/javanull/archives/619220.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 21 Oct 2005 16:28:10 +0800</pubDate>
					</item>
	<item>
		<title>[Subversion] 檔案庫的儲存格式比較 / 簡睿隨筆 《科技篇》</title>
		<description>
 Subversion自從2004起，檔案庫的格式除了BerkeleyDB之外，也能用作業系統的檔案系統做為其儲存格式（稱為FSFS），二者的比較彙總如下：       Repository Data-Store Comparison             Feature         Berkeley DB         FSFS            Sensitivity to interruptions       very; crashes and permission problems can leave the database “ wedged ”, requiring journaled recovery procedures.       quite insensitive.         Usable from a read-only mount       no       yes         Platform-independent storage       no       yes         Usable over network filesystems       no       yes         Repository size       slightly larger       slightly smaller         Scalability: number of revision trees       database; no problems       some older native filesystems don&#039;t scale well with thousands of entries in a single directory.         Scalability: directories with many files       slower       faster         Speed: checking out latest code       faster       slower         Speed: large commits       slower, but work is spread throughout commit       faster, but finalization delay may cause client timeouts         Group permissions handling       sensitive to user umask problems; best if accessed by only one user.       works around umask problems         Code maturity       in use since 2001       in use since 2004        ##        </description>
		<link>http://blog.roodo.com/emisjerry/archives/582659.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 11 Oct 2005 22:52:12 +0800</pubDate>
					</item>
	<item>
		<title>Java socket server and Client / 設計&amp;程式</title>
		<description>One of java socket sample code for server and client </description>
		<link>http://blog.roodo.com/javanull/archives/527053.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 27 Sep 2005 02:38:09 +0800</pubDate>
					</item>
	<item>
		<title>AJAX 字典 / syshen&#039;s blog</title>
		<description>前些時候寫的小程式，不過一直沒有時間 refine，利用 AJAX 的技巧去動態取得字典資料，也算是有 auto-complete 的特性 :)  目前，這個程式可以在 Firefox 跟 IE 上都可以執行，其他瀏覽器還沒測過，不過在 IE 上有時候會因為 css 排版上出現點問題，不過。。。懶得修了(也沒時間)。

 看看線上 Demo  吧。

字典庫是從  StarDict  project 而來。 
如果有趣的話，想要 source code，可以留言或來信跟我索取。
</description>
		<link>http://blog.roodo.com/syshen/archives/526579.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 27 Sep 2005 00:00:06 +0800</pubDate>
					</item>
	<item>
		<title>JAVA開發環境安裝及設定 / Keroro GunSo</title>
		<description>   JDK安裝  ‧下載頁：  http://java.sun.com/j2se/1.5.0/download.jsp   ‧  Download JDK 5.0 Update 5  ：選這個即包含JRE執行環境及JDK開發環境，版本會持續更新，所以可能會有所不同。進入後必須選 Accept 才可載。 ‧接著選擇安裝的作業系統，依序是 Windows ,Linux,Solaris...等 ‧下載後執行安裝（建議安裝在 C:\Java ）     設定系統變數 (針對Windows) ‧我的電腦（右鍵）→內容→進階→選環境變數。 ‧在下方「系統變數」中「新增」，其中「變數名稱」設為 JAVA_HOME ，「變數值」設為剛才安裝的目錄下的jdk資料夾(例如： C:\Java\jdk1.5.0_05 ) ‧接著在原有的「系統變數」中找到 PATH 「編輯」，在「變數值」的最前面加入　  .;%JAVA_HOME%\bin;  　(注意最前面要有個點，分號也不要漏了)如此就完成了。     測試  ‧在「命令提示字元」下，打 java 指令，若沒有出現找不到指令就大概可以了，接著以程式直接測試。 ‧將以下程式碼複製到記事本，存成  HelloWorld.java  (檔名必須一模一樣，因為Java有分大小寫，檔案可以先存在C:\下)  public class HelloWorld {     public static void main(String args[]){          System.out.println(&amp;quot;Hello World !!&amp;quot;);      }  }  ‧接著在「命令提示字元下」輸入以下指令 (先切換到檔案所在目錄，例如C:\) (編譯)    javac HelloWorld.java  (編譯OK會產生  Helloworld.class  檔) (執行)    java HelloWorld  (顯示)    Hello World !!   ‧如此JAVA開發環境就完成了。  </description>
		<link>http://blog.roodo.com/kerorogunso/archives/501259.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 19 Sep 2005 21:47:50 +0800</pubDate>
					</item>
	<item>
		<title>初試TortoiseSVN的收穫 / 簡睿隨筆 《科技篇》</title>
		<description>
  今天終於還是把 TortoiseSVN 給安裝起來開始測試，並且仔細的讀了一遍它的Help文件，發覺這份文件寫得淺顯易懂，又提供了一些實務操作上的建議，值得一讀。  不過最大的收穫應該算是TortiseSVN和Bug Tracking System之間的整合功能了。只要在根目錄加入 bugtraq:url 、 bugtraq:message 等性質(Property)的話，則在Commit時會出現額外的「Bug編號/事項編號」欄位，輸入編號後會自動以 bugtraq:url 的網址型態新增到log-message內。   bugtraq:url 則依使用的Bug Tracking System來提供連結的網址，編號的部份則用 %BUGID% 來表示，到時log-message內會在%BUGID%的位置替換成輸入欄位的值，如圖三的95。  bugtraq性質似乎是Subversion的標準，但可惜IDEA使用的JSVN仍未提供，因此在IDEA中就無法自動建立可連結的Bug編號。   (圖一)    (圖二)     (圖三)  ##     </description>
		<link>http://blog.roodo.com/emisjerry/archives/491751.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 16 Sep 2005 23:48:58 +0800</pubDate>
					</item>
	<item>
		<title>JBoss 4.0.2集群指南(二)----建立JMS集群服务 / Sometimes Java</title>
		<description>  　　本问讲解如何在jboss 4.0.2中建立jms消息集群服务器，本文以《jboss 4.0.2集群指南》为基础，请参照阅读：  （ http://blog.roodo.com/bromon/archives/454467.html ）  </description>
		<link>http://blog.roodo.com/bromon/archives/489568.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 16 Sep 2005 11:06:23 +0800</pubDate>
					</item>
	<item>
		<title>AJAX Tips : IE will cache! / syshen&#039;s blog</title>
		<description>一個困擾我兩三天的問題，經 同事 提醒才猛然驚覺問題所在。

原本是想用 AJAX 寫一個 frequent update 的頁面，但是同樣的 code 在 firefox 上運作的非常正常，在 IE 上就會出現很奇怪的行為。程式本身會利用 setTimeout() 去定期呼叫 XMLHttpRequest()，FF 很盡責的每次都去抓新的資料回來並更新網頁中的某個 DIV tag，但是在 IE 上，卻發現 DIV tag 顯示的結果一直沒有改變，仔細 debug 的結果後發現，IE 的確有去呼叫 XMLHttpRequest()，但是不知為何傳回來的資料都是相同的，再更進一步抓封包研究，發現 IE 自從第一次會真的從伺服器端抓資料回來，但是後來的所有 request 都根本沒有送出去，Why? 我百思不得其解，前天經同事提醒才猛然驚覺，原來 IE 一直都在回傳他 Cache 住的部分，解決方法就是在 HTTP header 中塞一行：

Cache-control: no-cache\r\n

這樣就解決了！！！ 吐血~
</description>
		<link>http://blog.roodo.com/syshen/archives/480401.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 13 Sep 2005 21:14:43 +0800</pubDate>
					</item>
	<item>
		<title>[Subversion] Keywords擴展設定 / 簡睿隨筆 《科技篇》</title>
		<description>
 Subversion的Keywords與CVS的有著小小差異。在功能上二者相同，但在處理上則有不同。  CVS只要在Commit的文件中有符合規則的Keywords，就會自動擴展成對應的文字，但Subversion則預設 不會 擴展，必須針對需要擴展的檔案設定性質(Property)  svn:keywords:要用的Keywords ，例如：     svn:keywords=Id  $Id: t4.jsp 95 2005-09-03 10:14:35Z jerry $    svn:keywords=Date  $Date: 2005-09-03 18:14:35 +0800 (星期六, 03 九月 2005) $     不幸的，$Id$的處理和CVS一樣：時間都少了8個小時，而呈現格林威治的零時時間，而$Date$(其實就是$LastChangeDate$的縮寫)則是正確的中原標準時間。  $Id$擴展的內容又和使用的Client而有所不同；eSVN和TortoiseSVN都是產生成上列表格第一列的少了8小時的文字，IDEA透過JavaSVN則產生成類似第二列的有中文的文字，然而IDEA寫回來的中文字是 UTF-8 的編碼，但Java或JSP若編碼為ANSI-950時，中文字就變成亂碼了。這個亂碼問題除非全面改用UTF-8編碼，否則看來是無解的。  如果專案裡的檔案都要一個一個的去設定性質，那可是太煩人的工作了。為了將Keywords擴展變成是預設的行為，我們必須修改Subversion client的系統設定檔： C:Documents and Settings用戶名Application DataSubversionconfig 。  把config檔案內做如下修改，即能讓所有檔案自動具有Keywords擴展的功能：     [miscellany] enable-auto-props = yes    [auto-props] *.jsp = svn:keywords=Id URL *.jspf = svn:keywords=Id URL *.java = svn:keywords=Id URL *.htm = svn:keywords=Id URL *.html = svn:keywords=Id URL *.xml = svn:keywords=Id URL *.js = svn:keywords=Id URL     ##  </description>
		<link>http://blog.roodo.com/emisjerry/archives/462745.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 08 Sep 2005 21:13:40 +0800</pubDate>
					</item>
	<item>
		<title>[Subversion] 尋找Subversion Client工具 / 簡睿隨筆 《科技篇》</title>
		<description>
開始準備要將版本控制系統由 CVS 換到 Subversion （咦～CVS首頁www.cvshome.org怎麼換掉了？）。  安裝了Subversion client後用svn.exe連上新建的Repository，顯示出來的字串是問號、反斜線和一堆數字，看了文件後才知道要設定環境變數（我的 Subversion client是安裝在d:\svn-win32-1.2.3）：      set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv     同時也找了一些GUI的Client程式，大部份人都是介紹使用 TortoiseSVN ，但以前用過這支小海龜的CVS版本（TortoiseCVS），感覺會把Shell Menu加上一大堆選項，也把圖示弄得怪模怪樣，因此不太想用它，另外再找比較像 WinCVS 的工具，試了下列幾個：    JSVN ：Java 寫的0.8版，感覺還在初期開發階段，不甚好用   RapidSVN ：C ++寫的，有很多指令功能好會像都還沒做出來   SmartSVN ：SmartCVS 的孿生兄弟，和SmartCVS一樣有中文的問題   eSVN ：用Qt寫的Client，感覺操面與WinCVS較類似，功能也較齊全  因此在未找到更合適的Client前，就先以eSVN來熟悉Subversion的操作吧。      (按圖放大)  ## </description>
		<link>http://blog.roodo.com/emisjerry/archives/433918.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 31 Aug 2005 23:47:48 +0800</pubDate>
					</item>
	<item>
		<title>如何從 asp 中透過 gmail smtp 發信 / How to send mail in asp via gmail smtp / Phanix&#039;s Blog</title>
		<description> 最近因為有需要從 asp 中透過 gmail smtp 發信； 不幸的是在網路上似乎只能找到 for php, jsp, .net 的 sample code，受不了乾脆來寫一個 =.= </description>
		<link>http://blog.roodo.com/phanix/archives/428744.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 30 Aug 2005 16:47:18 +0800</pubDate>
					</item>
	<item>
		<title>Abstract Class / 設計&amp;程式</title>
		<description> 再參考這兩個連結。。。  
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/AbstractClass.htm
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/InterfaceType.htm 


定義上: 
　　Abstract class 表示該類別中可能已經有了一些方法的實作,但是Interface就僅僅只能定義各個方法的規格(Method Signature),不可以有實作的code 在裡面. 

用法上: 
　　Abstract class是子類別用來繼承的,當父類別已有實作的method時,該method於子類別中不必實作,但子類別也可以overridd該method. 

　　而在implement 一個Interface的時候,是一定要實作Interface中所定義的所有method,不可遺漏任何一個!! 所以Interface在實作時,我也常寫一個abstract類別,來實作Interface中的某些子類別所需共通使用的method,接著撰寫各個子類別時,即可繼承該Abstract類別來使用,省去共通method在每個子類別中,都要實作的困擾. 

</description>
		<link>http://blog.roodo.com/javanull/archives/409656.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 25 Aug 2005 13:06:57 +0800</pubDate>
					</item>
	<item>
		<title>如果檔案太大打不開？ / 程式設計者之春-程式設計合眾國</title>
		<description>一位學弟問了一個大家經常碰到的問題，如果檔案太大打不開，怎麼辦？
有人說用UltraEdit應該沒有打不開的檔案。
</description>
		<link>http://blog.roodo.com/proglog/archives/407299.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 24 Aug 2005 22:02:54 +0800</pubDate>
					</item>
	<item>
		<title>[新聞]JAVA釋出原始碼 台灣有製造優勢 / 不猛的猛哥</title>
		<description>【中廣新聞網 】 

網路應用平台JAVA科技已經十年有成，從健保IC卡、悠遊卡到手機等等，都看得到JAVA的應用。JAVA原創者SUN軟體事業群，十七號宣布，開放關鍵原始碼，讓各界都可以拿去應用，台灣因為代工發達，將有製造優勢，能發展出更好用的手機和網路等等。(許佳惠報導)</description>
		<link>http://blog.roodo.com/monkuo/archives/384370.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 18 Aug 2005 01:40:02 +0800</pubDate>
					</item>
	<item>
		<title>【UNIX】適合使用Shell script的情況 / 透明藍樂摸</title>
		<description>1.可使用既有的指令組合來處理
2.不要求動作迅速
3.操作的資料不多（或是，可以使用指令有效率地處理大量的資料）
4.操作的資料格式單純（或是，可使用指令使其操作單純）
5.重視相容性
6.想寫出簡潔的程式</description>
		<link>http://blog.roodo.com/bangdoll/archives/367173.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 12 Aug 2005 23:19:24 +0800</pubDate>
					</item>
	<item>
		<title>西洋棋騎士行走最短路徑問題 / CL</title>
		<description>  下載   程式語言：C/C++ 輸出執行檔：Console application 專案檔環境：Visual Stidio .NET 2003  目前是用簡易的貪婪法找路徑，並未完全做最佳化，僅供參考。 下載者，留個言吧~~~ 這是我幫某個交大研究所的同學寫的程式作業:P 哈~~~~交大也有廢渣 </description>
		<link>http://blog.roodo.com/opensystem/archives/346715.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 07 Aug 2005 01:46:03 +0800</pubDate>
					</item>
	<item>
		<title>Migrate apps from Internet Explorer to Mozilla / syshen&#039;s blog</title>
		<description>Goog article:  Migrate apps from Internet Explorer to Mozilla 

It addresses some topics including: 
 General cross-browser coding tips
 Differences between Mozilla and Internet Explorer
 DOM differences
 JavaScript differences
 CSS differences
 Quirks versus standards mode
 Event differences
 Rich text editing
 XML differences
 
If you are interesting in writing a web based apps or AJAX like apps,  it will be a good article for a reference.</description>
		<link>http://blog.roodo.com/syshen/archives/330133.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 02 Aug 2005 11:31:55 +0800</pubDate>
					</item>
	<item>
		<title>任何的流程改善，人才是主角 / 寫程式有啥好玩的</title>
		<description> 軟體發展代價高昂，維護的代價更昂貴，為了要改進軟體的可維護性和解決多人開發時的協同問題，最近積極的在導入版本控管的作業流程，第一步當然是去找版本控管軟體，看了看，嗯~~， Subversion 相當不錯，於是study了一陣子，利用部門Server，加上 Apache 做http介面，將server side架了起來，Client端呢？我想   TortoiseSVN 是相當不錯的選擇，如果只是單純想要看一看目前的版本，還要架client端的軟體就太麻煩了，於是在server就在加上了 WebSVN ，於是就可以輕鬆的利用網頁去看目前專案的狀況和下載不同版本的檔案，後來又發現，WebSVN還提供了RSS feed的能力，於是我就在client這一端再安裝一個RSS的閱讀器，嗯~~~，這樣我就可以更方便的隨時掌握目前專案的即時狀況了，真是好用呢。  為了要讓大家都熟悉這方面的概念，也在部門內開課，教大家版本控制的基本觀念，希望讓大家都能很快的上手，然後在擺了一些的小專案先讓大家練習，希望大家能早點開始用Subversion來配合控制source code和一些文件，不過...這時總是會聽到一些不一樣的聲音：  「這好像比較適合open source用，我們不適合吧。」  「我都有用日期做控制，這個太麻煩了。」  「看來不錯，但不會有什麼問題嗎？」  聽到這些聲音，真的是讓人被澆冷水的感覺，我想凡是會變更到原有工作習慣的程序，應該都會遭遇某些反彈吧，任何的流程改善，人都才是主角，其他的軟體或工具，都只是輔助用的而已，唯有團隊的配合，一個新政策才能順利推展。  雖然大家都還不太習慣，不過我想這個流程是必做的，當一個軟體越開發越大的時候，沒有良好的版本控制，無異於後面會陷入維護的地獄，唯有做好這個，才能朝良好的軟體品質邁出一大步，這時，我想我需要的，是堅持、多做教育訓練和扮個黑臉吧，唉，累唷~~~  順便給各位一些這方面的資源  Subversion:  http://subversion.tigris.org/   TortoiseSVN:  http://tortoisesvn.tigris.org/   WebSVN:  http://websvn.tigris.org/   Version Control with Subversion:  http://svnbook.red-bean.com/   Version Control with Subversion (中文版):  http://freebsd.sinica.edu.tw/~plasma/svnbook/book.html   對這方面有興趣的話，歡迎多交流唷。 </description>
		<link>http://blog.roodo.com/programmingfun/archives/290989.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 21 Jul 2005 12:00:26 +0800</pubDate>
					</item>
	<item>
		<title>跨刀程式創作 / Just in Love 愛在其衷</title>
		<description> 幾百年沒寫程式了，寫完之後果然證明一樣沒有進步~&quot;~ </description>
		<link>http://blog.roodo.com/justinlove/archives/282203.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sat, 16 Apr 2005 21:57:09 +0800</pubDate>
					</item>
	<item>
		<title>[ 譯 ] 我的系統資料來自Siebel、Active Directory及Oracle，模組如何設計才能保持彈性的存取架構? / Softarchiware.mesg</title>
		<description> 我們的系統資料來自不同的地方( Siebel、Active Directory及Oracle ) ，目前在資料存取上遇到了一個有趣的問題，我們希望同時能存取這些資料並且讓我們的 client 保持簡單輕快。於是，我們所想的是--如何讓 client 不需要知道存取這些資料的技術細節，同時，模組也能夠提供 client 下列彈性的作法：首先，當 client 需要的新的資料來源時，模組隨時可以無痛地支援；再者，當 client 需要在既有的資料來源中作選擇，模組只要利用設定檔就可以讓 client 切換資料源使用。   </description>
		<link>http://blog.roodo.com/softwarearchitecture/archives/280522.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 18 Jul 2005 14:01:23 +0800</pubDate>
					</item>
	<item>
		<title>Advanced Programming in the UNIX(R) Environment (2nd Edition) / syshen&#039;s blog</title>
		<description>在 UNIX 上寫程式的人桌上一定都會有本 Richard Stevens 的書，不過很可惜的是 Richard Stevens 在 1999 年時就已經過世了，不過很多人一定都不會忘記他寫過的書： UNIX Network Programming Edition2  Vol1 ,  Vol2  甚至是第一版的(以前兩個版本我都有)，還有  Advanced Programming in the UNIX(R) Environment 。

現在，Advanced Programming in the UNIX(R) Environment 有了  Edition 2  了，不過當然不是 Stevens 從墳墓裡爬出來寫的，而是由 Stephen A. Rago 帶筆的，那到底改的好不好呢？我也不知道，下次有去天龍時再翻來看看吧。

其他閱讀： 
  slashdot 的 review 
  該書的 Homepage 
  Richard Stevens 網頁 
 </description>
		<link>http://blog.roodo.com/syshen/archives/266830.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 13 Jul 2005 22:56:27 +0800</pubDate>
					</item>
	<item>
		<title>:: PHP5網路圖書館 :: / 為我流淚的天空</title>
		<description>http://www2.php5.idv.tw/show2.php?q=books&amp;catid=20</description>
		<link>http://blog.roodo.com/raincry/archives/244738.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 06 Jul 2005 10:37:03 +0800</pubDate>
					</item>
	<item>
		<title>寫文件很重要--雖然大家都不愛寫 / 寫程式有啥好玩的</title>
		<description> 寫文件很麻煩的，最看不到生產力，又會花掉一大堆的時間，最重要的是，寫程式都來不及了，哪來的時間寫那些文件啊，又要想文件結構，又要寫裡面內容，而且電腦相關的文件大半都要用英文寫...，天啊，想到頭都會痛。  不過工作做了一陣子後，真的發現，文件很重要，真的真的。  除了一些小程式外，大部份的程式都得兩三個人一起寫，雖然也是可以透過討論的方式完成，但是只要時間一久，通常都會忘記當初是怎麼寫的，這時要回來改正某一些東西，哇，可就開始要頭大了。  而且後來也發現，如果程式在開始架構時，沒有一個良好規劃並用文件紀錄下來，後面大家就會開始用自己方便的方式，開始這裡改一點、那邊動一些的，等著瞧吧，當程式要兜在一起測試時，保證兜不起來的。  現在學乖了，程式在一開始規劃時，一定要先根據需求寫Software Requirement Specification (SRS)，然後根據SRS再開始寫System Analysis，讓每一個人都很清楚知道自己要寫哪一些function，和其他模組溝通的interface是什麼，並且建立每一個模組的test case...哇，還真是有寫不完的文件呢，不過沒辦法，雖然這樣前面寫文件的時間很長，不過可以透過寫文件的時候，把邏輯上的問題想清楚，到時後面寫程式時，反而節省不少時間呢，有時我覺得，寫這些文件，也等於在寫程式，呵。  這樣其實還說不上是完整的軟體工程的流程，不過我想有比沒有好，至少在目前我這個小小軟體團隊中，算是可以應付了，也許哪天團隊變大了，我得領導好幾百個工程師的時候，我也必須再想出更好的流程吧，比如說導入CMMI什麼的， 哇哈哈哈哈 ...(做夢中)。  什麼？你問我寫過出什麼有名的程式，嗯.....，我先回去寫文件了， 努力中 ， 努力中...  </description>
		<link>http://blog.roodo.com/programmingfun/archives/243509.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 04 Oct 2005 11:11:27 +0800</pubDate>
					</item>
	<item>
		<title>網路的社群世界！讓我們來一起研究這個新技術 / 空間</title>
		<description>什麼是社群！
社群是一種與群眾交流及互動的代名詞。但網路的社群，常見的是Blog（部落格）、論壇（BBS）。這些常見的社群系統，往往比以前更讓人吸引。

一個新的網路社群世界由 Web Window Service 揭幕！什麼是 Web Window Service？
Web Window Service（譯：網路視窗服務；簡稱：WWS）這是一種新的網路社群系統。

其用意像Blog，但互動性較比Blog來得高，相信！這世界上，由網際網路每個用戶端瀏覽器中，可產生獨立式網路桌面操作環境，可以任意設定自已的網頁風格，不受系統的固定設定組態拘束，想設計怎樣就設計怎樣，這就是新的技術論點。

Blog 是現代人擁有自已風格網頁且輕易設定、管理的一種互動系統，Blog 的知名度一年比一年高，但部份的 Blog 功能，有時確因為系統與固定組態給限制住，無法產生自已想要的格式、欄位、動態甚至效果。

目前WWS將進入研發，將呈現21世紀全新的網路社群服務，提供更完善的自人網路作業環境。</description>
		<link>http://blog.roodo.com/space/archives/238984.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 04 Jul 2005 10:28:24 +0800</pubDate>
					</item>
	<item>
		<title>聊聊 / Prog Bear 布拉熊 - SOHO Studio</title>
		<description> 你有沒有算過一天工作八小時(不加班的話), 你真正在做事的時間有多少呢?  看信? MSN? 寫BLOG(像我現在)?   我常覺得寫程式效率好的時候一天可以趕出來一個禮拜的進度, 爛的時候可以一天寫一個function. 下面這個連結的作者說的很貼切,  他的網站寫了很多很實際也很實用的東西.   邊開火邊移動(Joel on Software)  </description>
		<link>http://blog.roodo.com/progbear/archives/233171.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 01 Jul 2005 21:53:22 +0800</pubDate>
					</item>
	<item>
		<title>《教學》C / C++ 程式教學 / 為我流淚的天空</title>
		<description>介紹 MS-DOS 下的環境， 以 TURBO C 為編譯器，來介紹 C 程式。

網址 http://140.127.40.1/~jwu/c/cpg.htm 
</description>
		<link>http://blog.roodo.com/raincry/archives/230198.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 30 Jun 2005 19:57:36 +0800</pubDate>
					</item>
	<item>
		<title>Web 介面設計新趨勢 - AJAX / Deliah Knowledge Matrix</title>
		<description>嚴格說起來，AJAX 並不是什麼新鮮的技術，而且也不複雜高深，但是自從 AJAX 這個名子出來之後，以及 Google 幾個 Killer 級的服務應用 AJAX，使得 AJAX 好像在突然間大鳴大放，每個網站都想要開始採用類似的技術，但是 AJAX 真的有這麼好嗎？在瞭解 AJAX 之前先來看幾個成功的例子：
實例介紹



Google Map
Google Map 是應用 AJAX 技術最成功的例子，只要一提起 AJAX，一定也會舉 Google Map 做範例。底下是 Google Map 的 UI，如果你有用過一定很熟悉：

你可以直接在 Google Map 的網頁上拖拉縮放整面地圖，地圖細節則會慢慢顯示出來，就好像在你自己的電腦上使用 papago 等軟體一樣，這就是 Google Map 最引人津津樂道的 UI 設計，但是他怎麼做到的？



Google Suggest

Google Suggest 則是另外一個例子，當你在搜尋欄位中輸入關鍵字時，這時候網頁會蹦出幾個 suggestion 讓你選擇，每個 suggestion 後面還有該關鍵字的搜尋筆數，我們都知道，Google 不可能在你一登入網頁時就預先存取好這些資料，因為這些資料量太大了，如果預先存取，你光登入 Google Suggest 首頁就要十幾分鐘，那它是怎麼做到的？



GMail
GMail 也是一個例子，在你登入你的 Gmail Account 之後，你所看到的信件選單，信件內容等都是在同一個網頁中顯示，不論你怎麼選擇你都不會做換頁，它是怎麼做到的？


還有編輯信件時，拼字檢查是怎麼做到的？




Technorati Search Beta
Technorati search 除了 search blog 文章外，現在也多了搜尋 flickr 圖片以及 furl 和 del.icio.us 的功能，算是半個 meta-search engine 吧，而且這些搜尋的結果都是在同一個頁面中顯示出來，最快顯示出來的資料當然是他自己 index 的 blog 文章，但當你在瀏覽結果時，網頁的右手邊也沒閒著，正在幫你查詢 flickr, furl, del.lcio.us 的結果呢！它是怎麼做到的呢？





這些問題的答案就是 AJAX。

傳統網頁流程的設計都是 Web Page -&gt; CGI -&gt; Web Page (Response) 的順序，這之間整個頁面都要經過重載，而且 CGI 在處理時是需要時間的，所以使用者在這段時間中需要等待，但是這樣的作法跟我們使用一般桌面應用軟體的習慣不同，在多數的應用軟體中，即使是需要等待處理的程序，也會先把處理完的結果先顯示出來，但是在傳統的網頁流程設計中，這是很難達到的。傳統的網頁流程設計是 synchronous 的，而 AJAX 是 Asynchronous，這就是為什麼 AJAX 的全名是： Asynchronous JavaScript And XML ( Synchronous / Asynchronous 的概念就好像是寫 network socket 程式時，synchronous / asynchronous IO，或是 blocking / none-blocking IO 的概念類似)。

AJAX 並不是新的技術，早在這個名詞出來以前，此類的技術就已經被廣泛運用了，後來由 Adaptive Path 這家公司取了 AJAX 這個名詞來代表此類的技術。所以在這家公司的網站上可以找到一篇由 Jesse James Garrett 所寫的 Ajax: A New Approach to Web Applications 文章，可以幫助大家瞭解 AJAX 的定義以及技術層次的問題，這篇文章部分也被 Jacky&#039;s blog 翻譯成中文。其實說穿了，AJAX 就是運用 Javascript 在背景偷偷幫你去跟伺服器要資料，最後再由 Javascript 或 DOM 來幫你呈現結果，因為所有動作都是由 Javascript 代勞，所以省去了網頁重載的麻煩，使用者也感受不到等待的痛苦，讓使用 Web Service 更像是在操作桌面軟體。

但是， AJAX 真的那麼實用嗎？網路上也有不少 blog 在批評 AJAX：



Ajax: 99% Bad 

嘟嘟老窝&#039;s AJAX的七宗罪
這篇文章講得很好，說中了 AJAX 的麻煩所在。

Ajax：剩下什麼呢？



AJAX 存在的目的跟 Flash 有點雷同，都是要改進 Web UI 的呈現方式，但是既然不同於傳統的 WebUI 呈現，便會出現一些不相容性，例如不利於搜尋引擎做 index，以及造成一個沒有 history 及 backforward 的網頁瀏覽，這都不一定是使用者想要的，並不是所有的網頁都適合使用 AJAX 技術來改進 UI 呈現，在貿然轉移前還是有必要多思考。

其他 AJAX Demo



Spell Check

Upload progress bar
這個 demo 可說是最能顯示出 AJAX 強大的 Demo 了，很有趣，一定要看看。

Google Instant
這個 meta-search engine 會由 Javascript 在背景去 google 搜尋你的關鍵字，所以也不需要經過頁面重載。

Rico 的 AJAX Implementation 的 Demo
一定要玩看看他的 Weather Widget。




其他相關網站



AJAX 相關 Open source AJAX Framework
Rico

其他
AJAX Matters
XMLHttpRequest, Ajax, and the customer experience
Where can you find Flickr and Apple in the same room? At the AJAX Summit of course. An insider report from the press-free zone where the future of webdev is being mapped out.
Ruby on Rails</description>
		<link>http://blog.roodo.com/deliah/archives/229279.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 30 Jun 2005 12:43:44 +0800</pubDate>
					</item>
	<item>
		<title>[JAVA]BEA採硬體途徑提升Java速度 / 不猛的猛哥</title>
		<description> CNET新聞專區：Stephen Shankland　　27/06/2005  


BEA Systems可望於本週公布直接在處理器上執行的Java伺服器軟體計畫細節。 

</description>
		<link>http://blog.roodo.com/monkuo/archives/223263.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 28 Jun 2005 00:30:12 +0800</pubDate>
					</item>
	<item>
		<title>周董 喜帖 / 微酸</title>
		<description>http://www.tuu.com.tw/qstyle.com.tw/upload/flash/demo.swf

一個網路動畫....  
關於周董與侯主播的喜帖...</description>
		<link>http://blog.roodo.com/amyyu/archives/222885.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 27 Jun 2005 22:03:03 +0800</pubDate>
					</item>
	<item>
		<title>Google Code Dumper library / syshen&#039;s blog</title>
		<description>在 FreeBSD 跟 Solaris 上有個叫做 gcore (generate core) 的程式可以讓一隻正在執行中的程式 dump 出 core 檔，但是在 linux 上就沒有這個 tool 了，雖然說可以用 gdb 去 attach 一個 process 來 debug，但這樣做會中斷該程式的進行，而且很多情況可能是沒有 gdb 可以 debug 的(例如在 embedded system 的情況下)。不過，前陣子在 Google 的  opensource projects  中看到一個好東西： Core Dumper 。

Core Dumper 是以 library 的形式來使用，這個 library 只包含三個 function：GetCoreDump()、WriteCoreDump() 跟 WriteCoreDumpLimited()。

 GetCoreDump()  ： program 呼叫這個函示可以以 file descriptor 的形式取得 core information。
 WriteCoreDump()  ： 這個 function只是個 GetCoreDump() 的包裝，將 core 寫到一個你指定的檔案中。
 WriteCoreDumpLimited()  ：這個 function 可以用來限制你的 core 檔大小，避免你在儲存空間不足的地方 dump 出一個大檔來。

Dump 出來 core 檔是可以用 gdb 來觀看的。
 
那該怎麼來應用這個 core dumper 呢? 
我目前想到的是可以 hook 一個 signal，當程式收到這個 signal 時，呼叫  WriteCoreDump()  來 dump 出 core 檔，這樣我們可以在程式執行的過程中將 core 檔 dump 出來觀看。看看範例：
</description>
		<link>http://blog.roodo.com/syshen/archives/222225.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 27 Jun 2005 16:03:38 +0800</pubDate>
					</item>
	<item>
		<title>Java Spring Framework / Reg&#039;s Yam Blog</title>
		<description>由於Job上的需要，最近在看JAVA Spring發現他真的是一個實用的架構。他包含了兩個重要的核心觀念，Inverse Of Control(控制反轉) 和 AOP。
AOP 我還不懂因為還沒有學到那，先來和大家分享Ioc好了。
Inverse Of Control 控制反轉
看字面上的意義似乎很難理解，可是其實不然，Ioc又稱Dependency Injection(依賴注入)，就是由Container（Spring Container）控制程式之間的關係，而不由程式控制。所以所謂的控制反轉是指控制權由程式改到Spring Container，控制權的移轉，是所謂的反轉。或可說是依賴注入，將原先程式間的耦合降到最低，改由Spring Container注入程式間的關連。

參考文件 大陸作家 夏晰 的Spring開發手冊

Be Continue…</description>
		<link>http://blog.roodo.com/reghuang/archives/215275.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 24 Jun 2005 18:32:59 +0800</pubDate>
					</item>
	<item>
		<title>“我要一個漂亮的UI” / 寫程式有啥好玩的</title>
		<description> &amp;quot;我要一個漂亮的UI&amp;quot;，聽到這句話，就會全身發毛，寫程式寫了那麼久，不過那些老大們對於我們程式設計師在程式裡每一個功能上下的功夫一知半解，對於使用者介面嘛...意見可多了呢。&amp;quot;這個顏色好像不夠明顯&amp;quot;，&amp;quot;別家公司的那個UI會動ㄟ，你們也做一個。&amp;quot;，&amp;quot;我希望UI能做的像車子，對了，輪胎要會轉唷！&amp;quot;，幫幫忙ㄚ，你們隨便說一句話，下面要做到死知道不知道ㄚ。   當然我也不能否認，漂亮的UI有在第一眼吸引user的價值，所以剛開始也是滿用心的去做，但是後來發現，其實那些漂亮的UI到最後的真正價值，其實是在Runing中把圖型抓下來，然後貼到彩盒或網站上來吸引消費者....，天啊，你們去乾脆請美工直接把圖形做出來就好了嘛。   其實美觀的UI當然對軟體還是有加分的作用，只是軟體在規劃時，應該以功能為導向，UI是協助使用者更容易使用所有功能的方式，也就是所謂的User Friendly，而不是把UI當成是軟體的主角，而且一般來說，太漂亮的軟體都是些垃圾，因為那些軟體沒有內容，所以只好用個漂亮的包裝紙包起來，當包裝紙拆開後...，好了，可以直接丟進垃圾桶囉。 </description>
		<link>http://blog.roodo.com/programmingfun/archives/198564.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 17 Jun 2005 18:37:36 +0800</pubDate>
					</item>
	<item>
		<title>物件導向?? 那是個什麼東東?? / 寫程式有啥好玩的</title>
		<description> 寫程式最簡單的方式，就是一根腸子通到底的那一種程式，最快最直接，好吧，偶爾加幾個副程式，少打幾個字，免得年紀輕輕的就得到網球肘(講到這裡，我左邊的肩牓總是很緊，三不五時還會睡落枕，一定是電腦打太多的職業傷害，唉)，不過有些數學天才，搞個啥物件導向出來，這一來可苦了那些在學寫物件導向程式的人，啥個繼承、多型、封裝的，剛接觸的人如果老師沒辦法好好教，我可真不認為有多少人會懂ㄚ。   如果那些個學物件導向程式設計的人稍微用功點，能夠過個了基礎概念的關卡，那麼用那些啥 MFC ， .NET Framework 來寫程式短時間內是可以寫出個&amp;quot;好像&amp;quot;可以用的程式，不過等等，不了解framework內部運作方式的話，寫程式很容易就會被那些framewok物件表面的function所限制，好吧，很無奈的再慢慢的去鑽研物件內部，包括Message routing，inheritance hierarchy等等的東西...，等到你研究的整個物件了然於心了...，新的framework又跑出來了。  </description>
		<link>http://blog.roodo.com/programmingfun/archives/195557.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 16 Jun 2005 14:03:36 +0800</pubDate>
					</item>
	<item>
		<title>GNU binutils -- strip / 浪跡天涯</title>
		<description>今天看  wxWidgets  的 document 學到一招：    strip  -o  release_ver.obj  -g  debug_ver.obj    可以把 debug 資訊拿掉，有助於程式瘦身，要做 release 版時就不用重新編一次了。Warning：請將此招用在你自己寫的程式，用在其他地方的話，Use on your own risk.  ref:  man strip    </description>
		<link>http://blog.roodo.com/fauzty/archives/194963.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Thu, 16 Jun 2005 09:36:27 +0800</pubDate>
					</item>
	<item>
		<title>udptool / thomasleu</title>
		<description>多年前我寫了一個 UDP 的測試工具 --&gt;   udptool.exe  ，裡面有些功能，直到現在我都還常常使用。許多從事網路工作的同業，也給予不錯的評價！

但程式一直放在口袋，有點可惜，所以我把這程式拿出來與大家分享，你可以把他拿來作個人或商業用途，完全免費，但結果與作者無關，使用者自行負責！！

在開始介紹功能前，先聲明，udptool的UI寫的不好，大家要忍耐！另外，設定網路相關參數時，請小心設定，否則會用得很「生氣」。合用就留著，不喜歡就把它砍了！

 udptool 介紹 
udptool 主要供 UDP 封包的接收與傳送測試功能，並支援 Unicast，Multicast，及 Broadcast 等收送方式

 使用介紹 
1 系統需求：Winsock 2.0 , OS: Window 95/98/NT/2000 
2 可同時執行多個 udptool intance。
3 啟動 udptool 後會出現「選項設定」視窗，可在此設定source ip:port , destination ip:port, send/receive buffer size, Multicast loopback (MLOOKBK), TTL , 及是否將操作結果記錄到檔案
3.1 Source IP 可選擇Host 上所有IP之一
3.2 destination IP 可設為 unicast / multicast / broadcast ip ,不設代表 任意 ip
4 結束設定後，進入 udptool 主畫面，請在 Action 選擇要執行的動作。當選擇要執行的 Action 後，畫面會出現一些相關參數，如果不知參數意義為何，可在 help 欄選擇 Action Help，並按  help 鍵後，可看到說明。
5 參數欄為旁邊有些 +/-的小按鍵，可做參數值為調，某些參數在Action啟動後，可以進行動態微調
6 完成參數設定後，按begin 鍵，開始運作，按stop鍵停止運作。

 功能介紹 
 1 Recv_Packet 
◎資料接收與檢視◎
本功能提供網路資料接收與檢視，當封包速率很高時
UDP Tool可能會來不及列印，而導致程式發生例外，因
此請善用PTN Times功能來限制列印個數
參數設定：
PTN type : 列印格式，可選 0 或 1, 0: 列印簡單的封包內容
	   1：列印封包內容
PTN Times : 列印次數，當設定為 0 時表示不限次數

 2 RecvSpeed Test 
◎資料接收速率測試◎
本功能提供網路封包資料接收測試
參數設定：
Test Time : 測試時間，單位 秒，0 代表無限時間
Report Time[1] : 測試結果列印間隔時間，單位 秒，
                 1  3 Receive File 
◎接收檔案◎
本功能提供網路封包資料存成檔案功能
參數設定：
Test Time : 測試時間，單位 秒，0 代表無限時間
File Name: 檔案名稱
Offset :  封包offset,資料從 offset 後開始
          請將Socket Receive Buffer 設成256K
          
註： RecvSpeed Test 常常拿來儲存multicast stream, stream內容通常為 video 或 file。

 4 Traffic Generation 
◎封包產生◎
本功能提供網路封包產生
參數設定：
Packet Size : 傳送封包大小，單位 Byte
Burst Size(1): 連續傳送封包個數
Burst Size(2): 搖擺參數設定,s[p],[z]
               p:發生機率，1 - 127
               z:延遲時間，單位ms
               例如 s10,10 代表 封包延遲 10 ms 送出 ，發生機率 10/128
Time Param. : 傳送週期，單位 Minisecond
Report Time : 傳送結果列印間隔時間，單位 秒

註： a RecvSpeed Test 常常與 Traffic generation 配合，測試網路品質。
     b 本功能可產生的 traffic 很大，若您產生的是 multicast/broadcast traffic
       請小心使用，勿把網路灌爆，影響到其他設備使用網路。
       
 5 Send File 
◎傳送檔案◎
本功能可將檔案內容送至網路
參數設定：
Bitrate : 傳送速率，單位 bps
Packet Size: 封包大小，單位 Byte
Paramater: L?T?B? , 
           L:loop, 0或1
           T:loop times
           B:檔案內容傳送啟始點
    例如 L1T100B0 ，代表loop enable, loop 100次，由檔案起點開始傳送
           
File name : 檔案名稱

註： 本功能常常用來播送video stream

 6 Transmission_Delay 
◎封包傳送延遲測試◎
本功可測試封包的 Round Trip Time，測試時間由發送端的
Socket 開始，經網路傳送至接收端 Socket，再轉送回發送端
的 Socket止。測試封包大小 UDP Packet 44 Bytes
IP Packet 64 Bytes , MAC Packet 78 Bytes 
Ethernet Packet 90 Bytes
參數設定：
Role : 0:代表 Server ，1:代表 Client
Test Intv  : 測試封包發送時間間隔，單位 ms


 7 Monitor 
◎封包監控測試◎
本功可偵測某個Socket Address，若超過某個時間，都沒收到
封包，會發出bee bee 聲響
參數設定：
timeout : 等待時間

下載
 udptool.exe </description>
		<link>http://blog.roodo.com/yhleu/archives/192263.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 15 Jun 2005 11:31:09 +0800</pubDate>
					</item>
	<item>
		<title>AJAX 再應用： surf with rodoo / syshen&#039;s blog</title>
		<description>最近一直在研究 AJAX 以及 XMLHttpRequest 物件，越看越覺得有趣，有一天就忽然想到一種應用的方式，既然 XMLHttpRequest 可以接收一份 XML 文件，並利用 DOM 的方式來 parse 這份 XML 文件，那也就是說 XML based 的 service 都可以用 AJAX 來應用囉？！所以，我想了一下，目前網路上最常見的 XML based sevrvice 是什麼？那不就是 RSS feed 嗎？所以，就程式兜一兜出現了一個簡易的  樂多blog RSS reader  ，我相信 Google Personal Page 也是同樣的作法吧。

圖例：
 
 
 </description>
		<link>http://blog.roodo.com/syshen/archives/191141.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 14 Jun 2005 21:36:19 +0800</pubDate>
					</item>
	<item>
		<title>恐怖的bulletml / ACGN電波日記 ~The Third Transmission~</title>
		<description>日本一名叫長 健太(ABA.&quot;Saba&quot;)的programmer(在很久前)公開了一個名為BulletML的系統，其賣點是可以讀入XML來做出各種彈幕，從而保存各種名彈幕或自創新彈幕。</description>
		<link>http://blog.roodo.com/kctsang/archives/190359.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 14 Jun 2005 12:33:37 +0800</pubDate>
					</item>
	<item>
		<title>AJAX internal : surf with XMLHttpRequest / syshen&#039;s blog</title>
		<description>之前有 介紹 了 AJAX，也用 rico 的 AJAX engine 寫了第一個 範例 ，但是 AJAX 的核心  XMLHttpRequest  物件其實是個很簡單的東西，所以我們可不可以直接用  XMLHttpRequest  來改寫之前的範例。 
 
對於 XMLHttpRequest 的歷史及用法可以參考 developer.apple.com 的文章： Dynamic HTML and XML: The XMLHttpRequest Object 。 
 

</description>
		<link>http://blog.roodo.com/syshen/archives/190349.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 14 Jun 2005 15:06:11 +0800</pubDate>
					</item>
	<item>
		<title>[Tools] 測試中的CVS Client：LinCVS / 簡睿隨筆 《科技篇》</title>
		<description>
在操作CVS的Windows環境裡， WinCVS 幾
乎是官方的版本，而另一個和Windows shell整合在一起的 TortoiseCVS(海龜CVS) 雖
然也很方
便，但用起來總還是不像WinCVS那般習慣。WinCVS在1.2、1.3版打轉了兩、三年後，今年終於升到2.0版了（2005/06/02剛推出
2.0.2版）。 

 

WinCVS只能用在Windows，其實還有別的跨平台的CVS Client，例如用Java寫的 SmartCVS ，去年在試它的3.0版時中文有問題，新版未再試，因此並不清楚是否已經改善了沒。 

 

另一個是最近在試的 LinCVS
1.7.0 pre-2 ，是使用Qt做的、能運行於Windows與
Linux，雖然並無中文介面，但能正確的顯示與儲存中文，操作起來感覺比WinCVS直覺，但有遇到幾個小狀況： 

  Show
History似乎有點問題，好像會Traverse整個Repository tree，造成Loading繁重  能顯示Modules，但讀Repository後只出現部份
Modules  

這些問題或許是因為是pre-2的關係，不過，會再多試看看。 

 
(按圖放大) 
    ## 
</description>
		<link>http://blog.roodo.com/emisjerry/archives/176412.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Wed, 08 Jun 2005 23:59:47 +0800</pubDate>
					</item>
	<item>
		<title>〔Linux〕porting device driver from kernel 2.4 to kernel 2.6 / syshen&#039;s blog</title>
		<description>Kernel 2.4 與 2.6 差異頗大，對 device driver 程式設計師而已，也有不少的小變動要注意。以下這篇文章介紹了一些 porting 上要注意的事項。

 Porting device drivers to the 2.6 kernel 

</description>
		<link>http://blog.roodo.com/syshen/archives/145811.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 24 May 2005 15:35:31 +0800</pubDate>
					</item>
	<item>
		<title>Howto change timeout for the TCP socket (Linux) / syshen&#039;s blog</title>
		<description>When writing TCP program, we may want to change the timeout value of some TCP behaviours. 
For example, we may want to reduce the timeout of DNS query, connection establishment of TCP (especially to a non-existent host),  data trasnmission or reception.

There are various ways to archive this objective:
</description>
		<link>http://blog.roodo.com/syshen/archives/145452.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Tue, 24 May 2005 11:34:48 +0800</pubDate>
					</item>
	<item>
		<title>程式語言排名 / It&#039;s a hard day&#039;s night...</title>
		<description> TIOBE Programming Community Index  
這個網站用Google, Yahoo, MSN來搜尋，根據所找到的資料來做Rating。
是蠻有趣的啦，也許不是很正確，不過蠻有參考價值的。</description>
		<link>http://blog.roodo.com/orbit/archives/130291.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Mon, 16 May 2005 02:15:58 +0800</pubDate>
					</item>
	<item>
		<title>Version Control with Subversion / Neosphere of The Deep-blue Sky</title>
		<description>      
 
最近試用了一下所謂的版本控制系統,版本控制
軟體是給程式設計人員用來維護程式的系統,
早期常聽聞使用CVS來維護程式碼,但是個人完全沒使用過
到現在有了號稱更先進的 Subversion (SVN),自己才試用看看
基本上SVN並不難用,以前常把版本控制想得太複雜,所以一直懶得用它
主要是個人的使用概念該修正一下,才會接受這種版本控制的運作方式
subversion提供了給用戶端以及伺服端架設維護檔案庫的工具
假如是很不習慣使用命令列的懶人(像我)
在用戶端使用上也有圖形介面的軟體  TortoiseSVN   RapidSVN   SVN
註1:假如只是個人在主機上維護程式碼的話,使用用戶端軟體就夠用了
註2:svn的中文使用手冊  http://freebsd.sinica.edu.tw/~plasma/svnbook/
 </description>
		<link>http://blog.roodo.com/magicfish/archives/129555.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Sun, 15 May 2005 20:51:14 +0800</pubDate>
					</item>
	<item>
		<title>Something about  ASP.NET 2.0 (上) / Jack/Vivi&#039;s blog</title>
		<description>Microsoft的ASP.NET是目前世上發展最快的網站開發平台,世界上一些大型網站都有使用它來當平台,諸如Dell computer,NASDAQ等等,MS的ASP.NET Team甚至指出每天有數以千計的工程師開始學.NET,超過170種不同關於談ASP.NET 的書籍出版,足見這個新技術對於MS development environment的變革有多大..
</description>
		<link>http://blog.roodo.com/jackking/archives/111234.html</link>
		<author>info@blog.roodo.com&lt;info@blog.roodo.com&gt;</author>
		<category>網路/3C</category>
		<pubDate>Fri, 06 May 2005 04:39:03 +0800</pubDate>
					</item>
</channel>
</rss>