<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[文武人尹 - 我的IT]]></title>
<link>http://www.bin.idv.tw/blog/</link>
<description><![CDATA[www.bin.idv.tw/blog]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[ballboy@pchome.com.tw(ballboy)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>文武人尹</title>
	<url>http://www.bin.idv.tw/blog/images/logos.gif</url>
	<link>http://www.bin.idv.tw/blog/</link>
	<description>文武人尹</description>
</image>

			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=120</link>
			<title><![CDATA[Office文件轉PDF的方法]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Fri,25 Jun 2010 13:28:26 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=120</guid>
		<description><![CDATA[前陣子研究了如何將Office文件轉PDF!<br/><br/>當然有許多現有的軟體可以轉!<br/><br/>不過若是要透過程式自行控制呢?<br/><br/>我試了幾個方法! 將目前試過較佳的介紹一下:<br/><br/>1. Office 2007 + 轉PDF增益集: 基本上就是透過Office 2007新增的功能進行轉換! 當然是效果最好速度最快! 不過當然要花錢買Office 2007!<br/><br/>2. OpenOffice + jodconverter: 轉換的效果也算不錯! 除了一些Excel的太怪圖表! 轉換的速度普通! 重點是完全免費!<br/><br/>3. Office + PDFcreator : 轉換的效果也算不錯! 轉換的速度普通! 不過若是高版的Office文件便無法轉換!(如office 2003無法開2007檔案一樣)<br/><br/>基本上! 它們都是透過開啟Office相對應軟體(除OpenOffice外)開啟文件! 再去執行列印轉出為PDF!<br/>所以應該是要透過vb或.net去呼叫! 當然若你要使用java! 就必須透過jacob去呼叫相對應的COM元件!<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=119</link>
			<title><![CDATA[jacob介紹]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Thu,17 Jun 2010 18:26:12 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=119</guid>
		<description><![CDATA[jacob如之前所提是可以溝通Java與COM的開放原始碼的project!<br/><br/>由於已經開發蠻長時間! 因此穩定度蠻高的!<br/><br/>以下介紹幾個主要的class:<br/><br/>1. ActiveXComponent Class: 屬於較高階! 可說是將COM封裝成一個物件!<br/>2. Dispatch Class: 表示MS level dispatch object! 相當於在windows上的資料結構!<br/>3. Variant Class: 在Java與COM中互相溝通的變數<br/>4. ComException Class: COM JNI 的錯誤處理<br/><br/>幾個主要的函數:<br/><br/>1. call method: Dispatch class的函數!可用來呼叫COM/DLL的函數!它可以回傳結果(Variant variable)!<br/>2. callSub method: 跟call函數類似!不過不回傳值!<br/>3. get method: Dispatch class的函數!用來取得COM的屬性!<br/>4. put method: Dispatch class的函數!用來設定COM的屬性!<br/>5. invoke method: 等同於call函數!不過使用方式較複雜!<br/>6. invokeSub method: 等同於callSub函數!不過使用方式較複雜!<br/>7. getProperty method: ActiveXComponent class的函數!用來取得COM的屬性!<br/>8. setProperty method: ActiveXComponent class的函數!用來設定COM的屬性!<br/><br/><br/>通常要建立一個JACOB程式分成下面幾個步驟：<br/><br/>1. 構建ActiveX元件物件:<br/>ActiveXComponent word = new ActiveXComponent(&#34;Word.Application&#34;)；<br/>其中的ActiveXComponent建構式內的值和你需要調用的ActiveX控制項有關!<br/>一般常用的MS控制項<br/> <br/>InternetExplorer: InternetExplorer.Application<br/>Excel: Excel: Application<br/>Word: Word.Application<br/>Powerpoint: Powerpoint.Application<br/>vb/java Script: ScriptControl<br/>windows media Player: WMPlayer.OCX<br/>Outlook: Outlook.Application<br/>Visio: Visio.Application<br/>DAO: DAO.PrivateDBEngine.35<br/>MultiFace: MultiFace.Face<br/><br/>另外可用clsid建立! 如:&nbsp;&nbsp;ActiveXComponent word = new ActiveXComponent(&#34;clsid:000209FF-0000-0000-C000-000000000046&#34;)；<br/><br/>2. 設定或元件屬性:<br/>如我要將word開啟後不隱藏!<br/>word.setProperty(&#34;Visible&#34;, new Variant(true));//都是透過Variant來傳參數與COM溝通<br/>Variant vs=Word.getProperty(&#34;Visible&#34;);<br/><br/>Dispatch class則透過了get與put<br/>如:<br/>Dispatch oDocuments = Word.getProperty(&#34;Documents&#34;).toDispatch();//透過toDispatch轉型<br/>Variant v= Dispatch.get(oDocuments,&#34;Parent&#34;);<br/><br/>3. 執行功能:<br/>可以透過call! 也可以透過callN! 兩者不同點在於callN是以陣列方式傳參數!<br/>Dispatch oDocument = Dispatch.call(oDocuments, &#34;Open&#34;,&nbsp;&nbsp;new Variant(&#34;C:\\atest.doc&#34;)).toDispatch();<br/>Dispatch oDocument = Dispatch.callN(oDocuments, &#34;Open&#34;, new Variant[]{ new Variant(&#34;C:\\atest.doc&#34;)}).toDispatch();<br/><br/>再用一個Dispatch的變數oDocument! 是為了之後能關閉close<br/>Dispatch.call(oDocument, &#34;Close&#34;, new Variant(false));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>4. 關閉與回收資源<br/>若有開啟檔案則要關閉與回收資源<br/>if (Word != null) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Word.invoke(&#34;Quit&#34;, new Variant[] {new Variant(0)});<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Word = null;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ComThread.Release();<br/>}]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=118</link>
			<title><![CDATA[Java透過jacob可使用Windows下的ActiveX元件]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Tue,15 Jun 2010 17:48:51 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=118</guid>
		<description><![CDATA[前陣子研究要將Office文件轉PDF!<br/><br/>發現可以透過Office去轉! 因為使用Java! 所以必須透過<a target="_blank" href="http://danadler.com/jacob/" rel="external">jacob</a>去控制Windows下的ActiveX元件<br/><br/>進而控制Office來執行轉PDF的動作!<br/> <br/>注意若你的JDK大於1.3以上的版本! 記的要下載<a target="_blank" href="http://sourceforge.net/projects/jacob-project/" rel="external">最新版的jacob</a>!<br/><br/>否則會有錯誤發生!<br/><br/>需要jacob.jar和jacob.dll兩個文件就可以了! dll放在sys32目錄下（什麼事都不用作，連註冊都不用）<br/><br/><br/><br/>下面是透過jacob去開啟與關閉WORD!<br/><br/>&#160;&#160;&#160;&#160;public boolean openWord(String filePath) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wordCom = new ActiveXComponent(&#34;Word.Application&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Dispatch wrdDocs = wordCom.getProperty(&#34;Documents&#34;).toDispatch();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wordDoc = Dispatch.invoke(wrdDocs, &#34;Open&#34;, Dispatch.Method,<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;new Object[] { filePath }, new int[1]).toDispatch();<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return true;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} catch (Exception ex) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ex.printStackTrace();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return false;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/><br/>&#160;&#160;&#160;&#160;public void closeWord(boolean saveOnExit) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (wordCom != null) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wordCom.invoke(&#34;Quit&#34;, new Variant[] {});<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wordCom = null;<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ComThread.Release();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/><br/>更詳細的Jacob使用方式要再研究研究! 是個很有趣的東西!<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=117</link>
			<title><![CDATA[Nutch更新頻率參數]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Wed,26 May 2010 11:28:00 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=117</guid>
		<description><![CDATA[主要設定nutch-default.xml內更新頻率db.fetch.interval.default、db.fetch.interval.max<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=116</link>
			<title><![CDATA[Nutch抓取中文頁面亂碼問題]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Wed,26 May 2010 11:14:21 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=116</guid>
		<description><![CDATA[抓取某些頁面出現亂碼 =&gt; 編碼問題<br/><br/>解決方法:設定nutch-default.xml內parser.character.encoding.default為big5(for中文)<br/><br/>若還是無法解決! 則必須去修改org.apache.nutch.parse.html.HtmlParser內的defaultCharEncoding]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=115</link>
			<title><![CDATA[Nutch除錯debug]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Wed,26 May 2010 11:09:17 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=115</guid>
		<description><![CDATA[在原始碼內:<br/>1. LOG.xx 除錯訊息至logs下的hadoop.log<br/>2. System.out.println(“xx”)直接出現在cygwin工作視窗]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=113</link>
			<title><![CDATA[window下殺(結束處理程序)process]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Thu,13 May 2010 18:19:51 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=113</guid>
		<description><![CDATA[今天利用tomcat的shutdown.bat檔關tomcat<br/><br/>發現處理程序java.exe一直沒結束!<br/><br/>所以找到了taskkill指令可以殺process<br/><br/><br/>用法如下:<br/>taskkill [/s Computer] [/u Domain\User&nbsp;&nbsp;[/p Password]]] [/fi FilterName] [/pid ProcessID]|[/im ImageName] [/f][/t] <br/><br/><br/>所以只要用 taskkill /im java.exe<br/>就可以真正關閉tomcat!]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=112</link>
			<title><![CDATA[windows下使用bat檔透過cygwin去執行shell ]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Fri,07 May 2010 17:00:25 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=112</guid>
		<description><![CDATA[1.首先要先安裝<a target="_blank" href="http://cygwin.com/" rel="external">http://cygwin.com/</a>，cygwin是一個在windows平臺上執行的unix模擬環境!<br/><br/>2. 用法如下:<br/><br/>bash --login -i&nbsp;&nbsp;<br/>運行此命令後dos視窗會自動轉換為cygwin環境的視窗，輸入exit返回 dos視窗。此命令若寫入.bat檔，則檔中之後的命令無法實現，故此命令只作為轉化環境用，在寫批次處理命令時不適用。<br/><br/>bash --login -c &#34;ls&#34;&nbsp;&nbsp;<br/>此命令就是直接運行cygwin的 ls命令。注：&#34;&#34;中命令的默認地址是/home/user(此處的user是cygwin的用戶名)<br/><br/>bash --login -c &#34;ls /home&#34;&nbsp;&nbsp;<br/>此命令是對上句的解釋，作用就是顯示根目錄下home檔夾中的內容。<br/><br/>bash --login -c &#34;foo.sh&#34;&nbsp;&nbsp;<br/>此命令是運行foo.sh中的cygwin批次處理命令。注：此時的foo.sh檔必須放在bin檔夾下，或者dos默認的 path下面。否則無法找到該命令。且foo.sh中命令開始時的起始位址是/home/user。此方法適合在dos下的cygwin命令批次處理。<br/><br/>所以我的test.bat內容為:<br/><br/>@echo off<br/><br/>chdir C:\cygwin\bin<br/>bash --login -c &#34;test.sh&#34;<br/><br/>也就是先到我安裝cygwin的資料夾下! 再透過cygwin去執行test.sh]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=109</link>
			<title><![CDATA[將Grid重新整理後保留勾選的項目]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Thu,25 Mar 2010 14:12:40 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=109</guid>
		<description><![CDATA[ //myUxGrid是定義好的Grid<br/><br/>var arowIndex=-1;//用以紀錄單選的項目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>//主要是透過兩個Listener事件來保留勾選的項目<br/>//1. 使用者者勾選時透過 rowsel&#101;ct事件以紀錄單選的項目<br/>myUxGrid.getSel&#101;ctionModel().on(&#39;rowsel&#101;ct&#39;,function(sel&#101;ctionModel,rowIndex,record) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arowIndex=rowIndex;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/> <br/>//2. Grid reload時自動將之前的項目進行勾選<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myUxGrid.getStore().on(&#39;load&#39;, function(store ,records) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myUxGrid.getSel&#101;ctionModel().sel&#101;ctRow(arowIndex);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});]]></description>
		</item>
		
			<item>
			<link>http://www.bin.idv.tw/blog/article.asp?id=107</link>
			<title><![CDATA[EXTJS動態改變Grid store load時所帶的參數]]></title>
			<author>ballboy@pchome.com.tw(ballboy)</author>
			<category><![CDATA[我的IT]]></category>
			<pubDate>Mon,15 Mar 2010 16:25:45 +0800</pubDate>
			<guid>http://www.bin.idv.tw/blog/default.asp?id=107</guid>
		<description><![CDATA[若是需要在前端動態改變Grid store load時所帶的參數!<br/><br/>myUxGrid是已經定義好的Grid物件! 透過Grid的beforeload事件動態改變參數!<br/><br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;myUxGrid.store.on(&#39;beforeload&#39;, function() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var para = {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//原有參數 action<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//action: &#39;showGrid&#39;,<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;test : &#39;test&#39;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var para1 = {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//原有參數 action<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action: &#39;showTOGrid&#39; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //加入新參數test: &#39;test&#39;&nbsp;&nbsp;用Ext.apply複製參數<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Ext.apply(myUxGrid.store.baseParams, para);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //若要修改原參數&nbsp;&nbsp;用Ext.applyIf複製參數 會加以覆蓋<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.applyIf(myUxGrid.store.baseParams, para1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;});]]></description>
		</item>
		
</channel>
</rss>
