<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>聰明的生活2 &#187; apache</title>
	<atom:link href="http://blog.yslifes.com/archives/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yslifes.com</link>
	<description>自己寫java程式的一些筆記</description>
	<lastBuildDate>Wed, 08 Feb 2012 02:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://blog.yslifes.com/?pushpress=hub'/>
		<item>
		<title>Log4net Visual Studio版的log4j</title>
		<link>http://blog.yslifes.com/archives/941</link>
		<comments>http://blog.yslifes.com/archives/941#comments</comments>
		<pubDate>Mon, 16 May 2011 23:14:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[log4net]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/941</guid>
		<description><![CDATA[在撰寫Java程式時很習慣的使用log4j來當程式訊息的輸出記錄，只需要簡單的改變設定檔就可以改變訊息是要顯示於Console、存入資料庫或是存於檔案裡，而且可選擇對於不同層級的記錄，十分方便於開發的Debug。 log4j也有.net版本，就叫log4net，也是由Apache基金會開發維護，在使用上與log4j還蠻相似的，log4j在使用時只需把config檔放置於classes跟目錄就可以了，而log4net則需要手動載入此設定檔，安裝設定的方法如下。 下載log4net的dll檔 解壓縮後,在目錄\log4net-1.2.10\bin\net\2.0\release\取出log4net.dll 加入參考 建立config檔log4net.config level value=&#34;DEBUG&#34;是記錄的層級到Debug層級，appender-ref ref=&#34;stdout&#34;表示使用name為stdout為輸出，而stdout設定的內容為Console輸出，另一appender-ref ref=&#34;APException_Info&#34;則為檔案記錄輸出，詳細的內容可以參考官方的文件。 &#60;?xml version=&#34;1.0&#34;?&#62; &#60;configuration&#62; &#60;configSections&#62; &#60;section name=&#34;log4net&#34; type=&#34;log4net.Config.Log4NetConfigurationSectionHandler, log4net&#34; /&#62; &#60;/configSections&#62; &#160; &#60;log4net&#62; &#60;!-- Setup the root category, add the appenders and set the default level --&#62; &#60;root&#62; &#60;level value=&#34;DEBUG&#34; /&#62; &#60;appender-ref ref=&#34;stdout&#34; /&#62; &#60;appender-ref ref=&#34;APException_Info&#34; /&#62; &#60;/root&#62; &#60;!-- Define some output appenders --&#62; &#60;appender name=&#34;stdout&#34; [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/941/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java寄送電子郵件-使用gmail帳號</title>
		<link>http://blog.yslifes.com/archives/930</link>
		<comments>http://blog.yslifes.com/archives/930#comments</comments>
		<pubDate>Tue, 19 Apr 2011 14:19:19 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/930</guid>
		<description><![CDATA[JavaMail是個歷史悠久的寄送電子郵件Email套件，由Sun公司所開發（Oracle），因為電子郵件數年來並沒有多大的改變，所以一直都是十分方便的一個套件，使用方法可參考Java程式Mail、EDM(電子型錄)寄送這篇。 而現在有了另一個framework，是由Apache組職所提供的開放原始碼套件Apache Commons email，使用上更為簡單，而且支援度也很高，像是gmail要使用javamail來寄送，就需要設定繁雜的Sectury項目，而Apache commons email就顯的簡單許多，底下的範例就是使用gmail的smtp.gmail.com來當SMTP服務寄送信件的，我把它應用在之前的留言板，當有人留言時，就可以馬上接到信件的通知。 這範例需要的lib是Apache commons email，寄件的方法，需先建立一個Email主體，可以是SimpleEmail，寄送純文字，也可以是HtmlEmail，寄送html內容，也可以對Email主體進行attach附加文件的功能。 比較特別的是gmail需要使用到TLS或SSL加密，所以需要對Email主體設定setTSL為真及利用setAuthenticator來告知道驗證用的帳號及密碼。 原始碼如下： mail.properties host=smtp.gmail.com port=587 from=tyu@yslifes.com user=tyu@yslifes.com pwd=tyu123 sleep=100 fromName=yslifes Board Sender 這是寄Mail的Thread，寫成線程可以不用等待SMTP回報傳送結果，所以寄送成功與否並不會回傳到前端，如此可以減少前端等待寄Mail的時間。 package yslifes.mail.thread; &#160; import java.util.*; import org.apache.commons.mail.DefaultAuthenticator; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; &#160; public class Sender extends java.lang.Thread &#123; private String content; &#160; private org.apache.log4j.Logger log; private String subject; private String to; private static [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/930/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache lucene-取得html內容建立索引檔</title>
		<link>http://blog.yslifes.com/archives/915</link>
		<comments>http://blog.yslifes.com/archives/915#comments</comments>
		<pubDate>Wed, 06 Apr 2011 23:04:52 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[架站]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/915</guid>
		<description><![CDATA[之前有介紹過怎麼讀取檔案來製作lucene的索引檔，這裡再提供另一個類似的方法，先從網路上取得網頁的html內容，有點像網路的爬蟲，爬取資料後再來建立索引檔。 程式有簡單的html資料取得的方式，需要更進階的方法可以參考URLConnection來實作get及post動作這一篇。 原始碼如下： 取得網頁資料建立索引內容 package testlucene; &#160; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.Date; import org.apache.lucene.document.Document; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; &#160; public class LuceneIndexHtml &#123; &#160; private IndexWriter writer = null; &#160; // 做測試的網址 private String url&#91;&#93; = &#123; &#34;http://catyku.pixnet.net/blog/post/22417532&#34;, &#34;http://catyku.pixnet.net/blog/post/22393052&#34;, &#34;http://catyku.pixnet.net/blog/post/22561736&#34; &#125;; &#160; private Document doc = null; &#160; [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/915/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>apache lucene-建立自己的搜尋引擎-刪除已建立索引資料</title>
		<link>http://blog.yslifes.com/archives/914</link>
		<comments>http://blog.yslifes.com/archives/914#comments</comments>
		<pubDate>Wed, 06 Apr 2011 15:27:10 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[架站]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/914</guid>
		<description><![CDATA[當索引資料已被建立，需要刪除此筆資document料時，只要利用索引key值查到此筆資料document，然後利用deleteDocuments來刪除此筆資料document。 lucene有二種索引存放方式 RAM Directory記憶體，速度快，但程式結束後資料就不見了 FS Directory檔案系統，資料永久存在，一般比較常用 程式範例先建立二筆資料document，然後對第一筆資料document的test這個key field做刪除動作。此範例使用Ram Directory記憶體來存放索引值，可以與上一篇範例製作索引檔做比較。 原始碼： package testlucene; &#160; import org.apache.lucene.analysis.standard.*; import org.apache.lucene.document.*; import org.apache.lucene.index.*; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.*; &#160; public class DeleteTest &#123; public static void main&#40;String&#91;&#93; args&#41; throws Exception &#123; &#160; // 建構兩個文件檔案物件 Document doc1 = new Document&#40;&#41;; doc1.add&#40;new Field&#40;&#34;name&#34;, &#34;key1 key2 key3&#34;, Field.Store.YES, Field.Index.TOKENIZED&#41;&#41;; //做為刪除的索引key值 doc1.add&#40;new Field&#40;&#34;test&#34;, &#34;testword&#34;, [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/914/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache lucene-建立自己的搜尋引擎-查詢資料</title>
		<link>http://blog.yslifes.com/archives/913</link>
		<comments>http://blog.yslifes.com/archives/913#comments</comments>
		<pubDate>Wed, 06 Apr 2011 14:51:39 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[架站]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/913</guid>
		<description><![CDATA[搜尋引擎最重要的功能就是查詢資料了，當建立好索引檔後，就可以針對索引檔內容進行查詢，索引資料可分為有做分詞及未做分詞，未做分詞的索引資料，只有全部內容均相同才會找到此筆資料，有做分詞者，則依分詞類型，可能有單字索引，雙字索引或中文字詞索引等，索引做的越好，搜尋到的資料會越精準。 資料Field也分成儲存及不存儲二種，當選擇儲存Store.YES時，查詢到此筆資料時則可以直接取用，不過此方法會佔用較多的空間，不存儲方法Store.NO則相反。 索引資料內容如下： 原始碼如下： package testlucene; import java.util.Date; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; &#160; public class LuceneSearch &#123; private IndexSearcher searcher = null; private Query query = null; private Analyzer analyzer = new StandardAnalyzer&#40;&#41;; &#160; public LuceneSearch&#40;&#41; &#123; try &#123; //建立查詢器 searcher = new [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/913/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>apache lucene-建立自己的搜尋引擎-索引檔</title>
		<link>http://blog.yslifes.com/archives/910</link>
		<comments>http://blog.yslifes.com/archives/910#comments</comments>
		<pubDate>Wed, 06 Apr 2011 14:06:09 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[架站]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/910</guid>
		<description><![CDATA[apachelucene是一套opensource的Search-Engine，搜尋效果比直接使用資料庫條件like還要來的好，而且也不會佔用到資料庫的資源，只需要使用到硬碟的IO，所以可以把搜尋引擎另外做到另一個硬碟，或是放到另一台主機上，單獨成搜尋引擎Server，設計成Multi-Tires架構。 在使用apache lucene時，需要先把資料建立成索引檔，搜尋時則直接取用索引資料，來加快查詢的速度，不同類型的資料可以依需求建立成不同的搜尋索引檔，以下範例是如何建立一組索引檔。 索引檔內容如下圖： 需要使用到的jar classpath為lucene-x.x.x.jar，可由官網下載，此範例使用2.3版本，新版本可能用法會不太一樣，如果需要中文的切詞器，可以找到庖丁解字這個opensource的framework。 原始碼如下： package testlucene; import java.io.*; import java.util.Date; import org.apache.lucene.document.Document; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; &#160; &#160; public class LuceneIndex &#123; &#160; private IndexWriter writer = null ; &#160; public LuceneIndex&#40;&#41; &#123; try &#123; //建立index的寫入器 //使用標準的分詞器 //重新建立索引檔,也就是之前的檔案會全數重建 writer = new IndexWriter&#40;&#34;d:\\index&#34;, new StandardAnalyzer&#40;&#41;,true&#41;; &#125; catch&#40;Exception e&#41; &#123; &#160; &#125; [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/910/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>jsp檔案上傳並利用Ajax製作ProgressBar監控上傳進度</title>
		<link>http://blog.yslifes.com/archives/908</link>
		<comments>http://blog.yslifes.com/archives/908#comments</comments>
		<pubDate>Tue, 05 Apr 2011 23:24:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/908</guid>
		<description><![CDATA[之前寫過一個jsp的檔案上傳，把檔案上傳的動作製成一個class。而現在要提供的這個範例就比較亂一點了，重點會在增加監控的ProgressListener及Ajax取得上傳進度之資料。 程式需要一個bean放入session裡，專門來存放目前上傳的bytes數及其它資訊，選擇好檔案按下上傳時，會開始上傳動作(使用iframe)，並啟動Ajax與Server要求目前上傳進度狀況，把資訊顯示在browser上。 這個專案需要使用二個額外的jar framework，分別為Apache Filupload及Apache common io，而Fileupload需要1.2以上版本才支援ProgressListener。 存入上傳資訊的bean package com.yslifes.file.upload; &#160; public class UploadStatus &#123; private long bytesRead;// 目前上傳byte數 private long totBytes;// 總共的byte數 private int item;// 目前上傳的item private long startTime;// 啟始時間 &#160; public UploadStatus&#40;&#41; &#123; startTime = System.currentTimeMillis&#40;&#41;; &#125; &#160; public long getBytesRead&#40;&#41; &#123; return bytesRead; &#125; &#160; public void setBytesRead&#40;long bytesRead&#41; &#123; this.bytesRead = [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/908/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Windows XP環境Apache出現失敗的模組ntdll.dll</title>
		<link>http://blog.yslifes.com/archives/747</link>
		<comments>http://blog.yslifes.com/archives/747#comments</comments>
		<pubDate>Thu, 21 Oct 2010 15:28:48 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[教學]]></category>
		<category><![CDATA[架站]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[eeebox]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[WINDOWS]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/747</guid>
		<description><![CDATA[最近流量有一點點增長，不過網站的速度跟常常出現失敗的模組ntdll.dll錯誤，搞的主機會停住很久才回應網頁，之前流量小點時不太常出現，而查看方向也一直在Apache跟mysql的調整上，不過似乎沒什麼用，google一下，幾乎都說是中毒了、重灌就好了，不過重灌似乎不是很好的解決方式。 失敗的事件內容可以從控制台－＞系統管理工具－＞事件檢視器－＞Windows記錄（應用程式） 失敗的應用程式httpd.exe，版本2.2.8.0，失敗的模組 ntdll.dll，版本5.1.2600.5755，錯誤位址 0x0001aa21。 其實這是因為網路的連線數超過xp的上限而出現的錯誤，中毒或是使用BitComet P2P等軟體都有可能會發生，所以解決的方式就是把連線數調高就可以了，可以使用 TCP/IP Patcher這個軟體來調高XP SP3的連線數，不過vista、windows 7好像不能使用。 軟體下載及介紹可以參考 重灌狂人-「TCP/IP Patcher」破解Windows XP SP3連線數限制！ ps.調太高也不太好，如果真的中毒了會一直對外發送大量的封包]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/747/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Java]產生SVG向量圖形檔-xml圖形檔</title>
		<link>http://blog.yslifes.com/archives/688</link>
		<comments>http://blog.yslifes.com/archives/688#comments</comments>
		<pubDate>Fri, 02 Jul 2010 02:26:17 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[影像處理]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/688</guid>
		<description><![CDATA[SVG圖檔是一種利用xml及css來製作而成的一種向量圖形，放大或縮小均不會改變其品質，不過當圖形複雜到一定程式時，其檔案也會跟著變大很多，能夠設計SVG圖形作品的軟體工具包括Adobe Illustrator以及CorelDRAW等，要能查看svg檔案裡的圖形可以利用browser像是firefox、chrome都可以直接知道此向量圖形的內容。 Wiki SVG 在Java要輸出（產生）SVG檔很簡單，在Apache 套件裡有一個batik可以很簡單的就生成所要的SVG圖檔，只需要把原本在建立圖檔時使用的java.awt.Graphics2D變成使用org.apache.batik.svggen.SVGGraphics2D來繪製圖形就可以了。 產生的結果圖： 這個程式是在畫一個紅色範圍區塊，及draw一個字串在圖上。 在開發前需要把所有的batik套件全都載入classpath裡才可以使用，載點 下載後解開檔案，在目錄lib裡，把batik-dom.jar、batik-svggen.jar、batik-awt-util.jar、batik-util.jar、batik-ext.jar、batik.xml.jar載入就可以了 範例程式原始碼下如： package yku; &#160; import java.awt.Color; import java.awt.Graphics2D; import java.io.*; import org.apache.batik.dom.GenericDOMImplementation; import org.apache.batik.svggen.SVGGraphics2D; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; &#160; public class ImgToSVG &#123; public static void main&#40;String args&#91;&#93;&#41; &#123; DOMImplementation domImpl = GenericDOMImplementation .getDOMImplementation&#40;&#41;; &#160; // Create an instance of org.w3c.dom.Document. String svgNS = &#34;http://www.w3.org/2000/svg&#34;; [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/688/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[教學]jsp Web的檔案上傳-FileUpload</title>
		<link>http://blog.yslifes.com/archives/526</link>
		<comments>http://blog.yslifes.com/archives/526#comments</comments>
		<pubDate>Mon, 22 Mar 2010 15:19:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/526</guid>
		<description><![CDATA[這是一個簡單的fileupload程式，把整個upload動作都包裝在UploadTool這個class裡，而在jsp裡再call此class來做檢查及上傳等動作。jar檔需放置WEB-INF/lib/裡，而程式complier後放置WEB-INF/classes/toolkie/裡。 首先需要二個第三方的jar檔 Apache Filupload及Apache common io 都下載Binary的jar檔就可以了 檔案的配制結構如下圖： 再來利用下面的程式來進行上傳作業 UploadTool.java package toolkie; &#160; import java.io.File; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.util.*; &#160; public class UploadTool &#123; private int buffersize = 4096; private int SizeMax = 1024 * 1024;// 1Mbyte最大檔案大小 private File tempfile = null; private String def_upload_dir [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/526/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
	</channel>
</rss>

