<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>welcome to oicejki life</title>
	<atom:link href="http://oicejki.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oicejki.wordpress.com</link>
	<description></description>
	<lastBuildDate>Wed, 12 Dec 2007 06:58:04 +0000</lastBuildDate>
	<language>zh-tw</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='oicejki.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>welcome to oicejki life</title>
		<link>http://oicejki.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://oicejki.wordpress.com/osd.xml" title="welcome to oicejki life" />
	<atom:link rel='hub' href='http://oicejki.wordpress.com/?pushpress=hub'/>
		<item>
		<title>web deployment environment</title>
		<link>http://oicejki.wordpress.com/2007/12/12/web-deployment-environment/</link>
		<comments>http://oicejki.wordpress.com/2007/12/12/web-deployment-environment/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 06:45:28 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[J2EE]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/12/12/web-deployment-environment/</guid>
		<description><![CDATA[Tomcat 5.5 JDK 5.0 Lomboz 3.2 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 1.修改tomcat:\xxx\server.xml =&#62;tomcat才知道多了這一個webApp &#60;!&#8211; Tomcat Root Context &#8211;&#62; &#60;!&#8211; &#60;Context path=』" docBase=』ROOT』 debug=』0&#8243;&#62; &#8211;&#62; &#60;Context path=』/WebProject』 reloadable=』true』 docBase=』D:\project\WebProject』 workDir=』D:\project\WebProject\work』 /&#62; &#60;/Host&#62; &#60;/Engine&#62; &#60;/Service&#62; &#60;/Server&#62;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=91&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tomcat 5.5</p>
<p>JDK 5.0</p>
<p>Lomboz 3.2</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>1.修改tomcat:\xxx\server.xml  =&gt;tomcat才知道多了這一個webApp</p>
<p>&lt;!&#8211; Tomcat Root Context &#8211;&gt;<br />
&lt;!&#8211;<br />
&lt;Context path=』" docBase=』ROOT』 debug=』0&#8243;&gt;<br />
&#8211;&gt;<br />
&lt;Context path=』/WebProject』 reloadable=』true』 docBase=』D:\project\WebProject』 workDir=』D:\project\WebProject\work』 /&gt;<br />
&lt;/Host&gt;<br />
&lt;/Engine&gt;<br />
&lt;/Service&gt;<br />
&lt;/Server&gt;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/91/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/91/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=91&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/12/12/web-deployment-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>Immutable Pattern</title>
		<link>http://oicejki.wordpress.com/2007/10/09/immutable/</link>
		<comments>http://oicejki.wordpress.com/2007/10/09/immutable/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 12:36:54 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[Desigh pattern]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/10/09/immutable/</guid>
		<description><![CDATA[一個object的所有attribute放在一起，就稱為這個object的state。如果一個object的state在object被constructor之後就不再改變，就稱為Immutable Pattern。 優點： 不能修改一個Imuutable的state，可減少不必要的程式錯誤，所以，一個Immutable object比mutable object容易維護。 沒有一個thread能修改Immutable object的state，所以Immutable object是thread safe，可節省使用Synchronization的花費。 缺點： 一旦需要修改一個Immutable object，只能建構一個新的同類object，並在constructor時將新的state存在new object中。如果在頻繁修改immutable object的環境中，會有大量的immutable object被產生，再被garbage collection回收，使得效能低落。 week immutable滿足條件： 所有的attribute必須是private。 object的所有method不會改變object的state。 這個object的attribute若包含mutable object，必須限制外界對這些mutable object的存取，防止外界修改這些object。 strong immutable必須還要滿足以下兩個條件之一。 所有的method都是final，這樣子類別就無法修改。 這個類別本身就是final，這樣就不會有sub class。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=81&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>一個object的所有attribute放在一起，就稱為這個object的state</strong><em>。</em>如果<strong><font color="#ff0000">一個object的state在object被constructor之後就不再改變</font></strong>，就稱為Immutable Pattern。</p>
<p>優點：</p>
<ol>
<li>不能修改一個Imuutable的state，可減少不必要的程式錯誤，所以，一個Immutable object比mutable object容易維護。</li>
<li>沒有一個thread能修改Immutable object的state，所以<strong><font color="#ff0000">Immutable object是thread safe，可節省使用Synchronization的花費</font></strong>。</li>
</ol>
<p>缺點：</p>
<ol>
<li>一旦需要修改一個Immutable object，<strong><font color="#ff0000">只能建構一個新的同類object，並在constructor時將新的state存在new object中</font></strong>。如果在頻繁修改immutable object的環境中，會有大量的immutable object被產生，再被garbage collection回收，使得效能低落。</li>
</ol>
<p>week immutable滿足條件：</p>
<ol>
<li>所有的attribute必須是<font color="#ff0000"><strong>private</strong></font>。</li>
<li>object的所有<strong><font color="#ff0000">method不會改變object的state</font></strong>。</li>
<li>這個object的attribute若包含mutable object，必須<strong><font color="#ff0000">限制外界對這些mutable object的存取</font></strong>，防止外界修改這些object。</li>
</ol>
<p>strong immutable必須還要滿足以下兩個條件之一。</p>
<ol>
<li>所有的method都是final，這樣子類別就無法修改。</li>
<li>這個類別本身就是final，這樣就不會有sub class。</li>
</ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/81/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/81/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=81&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/10/09/immutable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>singleton</title>
		<link>http://oicejki.wordpress.com/2007/10/09/singleton/</link>
		<comments>http://oicejki.wordpress.com/2007/10/09/singleton/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 12:06:37 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[Desigh pattern]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/10/09/singleton/</guid>
		<description><![CDATA[一個類別只能有一個instance 要自行建構這個instance 向整個系統提供這個instance public class LazySingleton { //constructor設為private,外界無法直接實體化 private static LazySingleton instance = null; //外界透過getInstance()來取得instance public LazySingleton getInstance() { if (instance == null){ instance = new LazySingleton(); } return instance; } }<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=80&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><font color="#ff0000"><strong>一個類別只能有一個instance</strong></font></li>
<li><font color="#ff0000"><strong>要自行建構這個instance</strong></font></li>
<li><font color="#ff0000"><strong>向整個系統提供這個instance</strong></font></li>
</ul>
<p>public class LazySingleton {</p>
<p><strong><font color="#339966">  //<em>constructor設為private,外界無法直接實體化</em></font></strong><br />
<font color="#ff0000"> private static  LazySingleton instance = null;</font></p>
<p><strong><font color="#339966">  //外界透過getInstance()來取得<em>instance</em></font></strong><br />
<font color="#ff0000"> public</font> LazySingleton  <font color="#ff0000">getInstance()</font> {<br />
if (instance == null){<br />
instance = new LazySingleton();<br />
}<br />
return instance;<br />
}<br />
}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/80/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/80/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=80&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/10/09/singleton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>High-Order Functions</title>
		<link>http://oicejki.wordpress.com/2007/09/23/high-order-function/</link>
		<comments>http://oicejki.wordpress.com/2007/09/23/high-order-function/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 15:53:13 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[電腦技術]]></category>
		<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/23/high-order-function/</guid>
		<description><![CDATA[函數的定義如下：We will often use the term result for the output, and the terms arguments or parameters for the inputs. 高階函數是至少滿足下列一個條件的函數 接受一個或多個函數作為輸入 輸出一個函數 以下用Haskell為例子，說明High-Order function的應用。 －－－－－－－－－－－－－－－－－－－ 利用list comprehension表達 map :: (a -&#62; b) -&#62; [a] -&#62; [b] map f xs = [ f x &#124; x &#60;- xs ] filter :: (a -&#62; Bool) -&#62; [a] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=76&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>函數</strong>的定義如下：We will often  use the term <font color="#ff0000"><strong>result</strong></font> for the <strong>output</strong>, and the terms<br />
<font color="#ff0000"><strong>arguments</strong></font> or<strong> <font color="#ff0000">parameters</font></strong> for the <strong>inputs</strong>.</p>
<p><a href="http://oicejki.files.wordpress.com/2007/09/fucntion.jpg"></a></p>
<p style="text-align:center;"><a href="http://oicejki.files.wordpress.com/2007/09/fucntion.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/fucntion.jpg?w=510" /></a></p>
<p><strong><span>高階函數</span></strong><span>是<font color="#0000ff"><strong>至少滿足下列一個條件</strong></font>的函數</span><span></span></p>
<ul><span></span></p>
<li><font color="#ff0000"><strong><span>接受一個或多個函數作為輸入</span></strong></font></li>
<p><font color="#ff0000"><strong><span></span></strong></font></p>
<li><font color="#ff0000"><strong><span>輸出一個函數</span></strong></font></li>
</ul>
<p>以下用Haskell為例子，說明High-Order function的應用。</p>
<p>－－－－－－－－－－－－－－－－－－－<br />
<strong>利用</strong><strong>list comprehension表達 </strong></p>
<p><font color="#ff9900">map                                   </font>                  <font color="#ff0000">::</font> <strong><font color="#993300">(a </font><font color="#993300">-&gt; b</font><font color="#993300">)</font></strong>     <font color="#ff0000">-&gt;  </font>   [a]     <font color="#ff0000">-&gt;  </font>   [b]<br />
<font color="#ff9900">map</font>     f     xs                       <font color="#ff0000">=</font> [ f   x <font color="#ff0000">|</font>    x <font color="#ff0000">&lt;-</font> xs ]</p>
<p><font color="#ff6600">filter                     </font>                <font color="#ff0000">::</font> <strong><font color="#993300">(a </font><font color="#993300">-&gt; Bool</font><font color="#993300">)</font></strong> <font color="#ff0000">-&gt;</font> [a] <font color="#ff0000">-&gt;</font> [a]<br />
<font color="#ff6600">filter</font>   p   xs         <font color="#ff0000">=</font> [ x <font color="#ff0000">| </font>x <font color="#ff0000">&lt;-</font> xs   ,       p x ]</p>
<p>其中 f ，p皆為function，<strong>map、filter本身皆為function</strong>，而傳入的parameter（f、p）也為function。<font color="#800000">傳入的function的定義，必須和<strong>map、filter</strong> 中function定義符合。</font></p>
<p>－－－－－－－－－－－－－－－－－－－－<br />
<strong>利用<font color="#ff0000">recursive</font>表達</strong><br />
<font color="#ff9900">map                                   </font>                  <font color="#ff0000">::</font> <strong><font color="#993300">(a </font><font color="#993300">-&gt; b</font><font color="#993300">)</font></strong>     <font color="#ff0000">-&gt;  </font>   [a]     <font color="#ff0000">-&gt;  </font>   [b]<br />
<font color="#ff9900">map                                   </font>                  <font color="#ff0000">::</font> f []   =[]<br />
<font color="#ff9900">map</font>     f (x:xs) = <font color="#ff0000">f x</font> : <font color="#ff00ff">map f xs</font></p>
<p><font color="#ff6600">filter                     </font>                <font color="#ff0000">::</font> <strong><font color="#993300">(a </font><font color="#993300">-&gt; Bool</font><font color="#993300">)</font></strong> <font color="#ff0000">-&gt;</font> [a] <font color="#ff0000">-&gt;</font> [a]<br />
<font color="#ff6600">filter                     </font>                <font color="#ff0000">::</font> <font color="#000000">p [] =[]</font><br />
<font color="#ff6600">filter</font> p (x:xs)<br />
|  p x            = <font color="#ff0000">x</font>: <font color="#ff00ff">filter p xs</font><br />
| otherwise =<font color="#ff00ff">    filter p xs</font></p>
<p>f  []    =v  (<font color="#0000ff">v 為initial value</font>)<br />
f(x:xs) = x @   f   xs       (<font color="#0000ff">@為operation</font>)</p>
<p><font color="#ff0000"><strong>!!(</strong></font><strong><font color="#ff0000">NOTE)</font><font color="#ff0000">利用這種recursive，可定義出加總</font></strong>、<strong><font color="#ff0000">乘積</font></strong>、<strong><font color="#ff0000"> and/or，但可用更高階的角度來看（high order function），定義出foldr</font></strong></p>
<p><font color="#ff9900">foldr                                 </font><font color="#ff0000">::</font><font color="#0000ff"> <strong><font color="#993300">(</font></strong></font><strong><font color="#993300">a </font><font color="#993300">-&gt; b</font><font color="#993300"> -&gt; b</font></strong><font color="#993300"><strong>)</strong>   </font><font color="#ff0000">-&gt;</font>   b<font color="#ff0000">   -&gt;  </font> [a] <font color="#ff0000">  -&gt;</font>   b<br />
<font color="#ff9900">foldr</font>   f v   []               <font color="#ff0000">=</font>v<br />
<font color="#ff9900">foldr</font>   f v (x<font color="#ff0000">:</font>xs)  <font color="#ff0000">=</font> f   x   <font color="#0000ff">(</font>foldr           f v          xs<font color="#0000ff">)</font><br />
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p><strong>例１.利用filter求出list中所有偶數的值</strong></p>
<p>f   ::<strong><font color="#800000">Int -&gt; Bool</font></strong><br />
f n |  n&gt;=5   =True<br />
| otherwise  =False<br />
<font color="#ff0000"><strong>filter f [1,2,3,4,5,6,7,8]      =&gt;[5,6,7,8]        </strong></font></p>
<p><font color="#0000ff"><strong>傳入filter的function必須return Bool</strong></font></p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p><strong>例二.利用map求出二個向量的外積 如[1,3,5] [2,4,6]  =&gt;[2,12,30]</strong></p>
<p>myproduct    :: <strong><font color="#800000">Int -&gt; Int -&gt; Int</font></strong></p>
<p><strong><font color="#0000ff">(因為map2的function定義為接收2個parameter,回傳一個Int)</font></strong><br />
myproduct x y = x * y</p>
<p>map2  :: <strong><font color="#800000">(Int -&gt; Int -&gt; Int) </font></strong>-&gt;  [Int] -&gt; [Int] -&gt; [Int]<br />
map2 f [][]      = []<br />
map2 f (x:xs) (y:ys)= f x y  :  map2 f xs ys</p>
<p><font color="#ff0000"><strong>  map2 myproduct [1,3,5] [2,4,6]      =&gt;[2,12,30]</strong></font></p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－</p>
<p><strong>例三.利用recursive定義出sum</strong>、<strong>product</strong>、<strong>AND/OR，再用foldr改寫</strong></p>
<p>mysum [] = 0<br />
mysum (x:xs) = x + sum xs</p>
<p><font color="#ff0000"><strong>=&gt;mysum[1,2,3,4]    =&gt;10 </strong></font></p>
<p>myproduct [] = 1<br />
myproduct (x:xs) = x * myproduct xs</p>
<p><font color="#ff0000"><strong>=&gt;myproduct[1,2,3,4]    =&gt;24 </strong></font></p>
<p>myAND [] =True<br />
myAND (x:xs) = x &amp;&amp; my AND xs</p>
<p><font color="#ff0000"><strong>=&gt;myAND[Tue,True]    =&gt;True</strong></font></p>
<p>myOR [] =False<br />
myOR (x:xs) = x || myOR xs</p>
<p><font color="#ff0000"><strong>=&gt;myOR[True,False]    =&gt;True</strong></font></p>
<p><strong>利用foldr改寫如下： </strong></p>
<ul>
<li>foldr (+) 0 [1,2,3,4] 　　<font color="#ff0000"><strong>=&gt;10<br />
</strong></font></li>
<li>foldr (*) 1 [1,2,3,4]<font color="#ff0000"><strong>          =&gt;24 </strong></font></li>
<li>foldr(&amp;&amp;)True [True,True]<font color="#ff0000"><strong> =&gt;True </strong></font></li>
<li>foldr(||)False[True,False]<font color="#ff0000"><strong>  =&gt;True</strong></font></li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/76/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/76/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=76&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/23/high-order-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/fucntion.jpg" medium="image" />
	</item>
		<item>
		<title>Why Functional Programming Matters 閱讀摘要</title>
		<link>http://oicejki.wordpress.com/2007/09/23/why-functional-programming-matters-%e9%96%b1%e8%ae%80%e6%91%98%e8%a6%81/</link>
		<comments>http://oicejki.wordpress.com/2007/09/23/why-functional-programming-matters-%e9%96%b1%e8%ae%80%e6%91%98%e8%a6%81/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 10:05:53 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[電腦技術]]></category>
		<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/23/why-functional-programming-matters-%e9%96%b1%e8%ae%80%e6%91%98%e8%a6%81/</guid>
		<description><![CDATA[隨著軟體設計愈來愈複雜，設計軟體的結構顯得愈來愈重要，好的程式結構可加速系統開發的時間，同時也降低了事後維護的成本。本文指出模組化設計為生產力帶來極大的提昇，因為它有以下幾個優點： 小模組的程式碼較容易去撰寫。 模組化的程式可再次的利用，減少開發時間。 模組化程式可以獨立測試。 結構化程式設計是用模組化設計的觀點去思考，將一個大的問題分成數個子問題，再針對每個子問題去解答。而如何將這些子問題結合起來呢？函數化程式設計提供了2種新的思維－高階函數(High-Order Functions)與惰性求值(Lazy evaluation)。利用這2點特性將程式模組化成為愈小，越愈能達到功能重複使用的模組，使得後續的程式維護工作變的更簡單。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=75&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family:新細明體;color:black;">隨著軟體設計愈來愈複雜，設計軟體的結構顯得愈來愈重要，好的程式結構可加速系統開發的時間，同時也降低了事後維護的成本。本文指出模組化設計為生產力帶來極大的提昇，因為它有以下幾個優點：</span><span style="color:black;"></span></p>
<ul>
<li><span style="color:black;"></span><span style="font-family:新細明體;color:black;">小模組的程式碼較容易去撰寫。</span><span style="color:black;"></span></li>
<li><span style="color:black;"></span><span style="font-family:新細明體;color:black;">模組化的程式可再次的利用，減少開發時間。</span><span style="color:black;"></span></li>
<li><span style="color:black;"></span><span style="font-family:新細明體;color:black;">模組化程式可以獨立測試。</span><span style="color:black;"></span></li>
</ul>
<p class="MsoNormal"><span style="font-family:新細明體;color:black;">結構化程式設計是用模組化設計的觀點去思考，將一個大的問題分成數個子問題，再針對每個子問題去解答。而如何將這些子問題結合起來呢？函數化程式設計提供了</span><span style="color:black;">2</span><span style="font-family:新細明體;color:black;">種新的思維－<strong><font color="#ff0000">高階函數</font></strong></span><strong><font color="#ff0000"><span style="color:black;">(High-Order Functions)</span></font></strong><span style="font-family:新細明體;color:black;">與<strong><font color="#ff0000">惰性求值</font></strong></span><strong><font color="#ff0000"><span style="color:black;">(Lazy evaluation)</span></font></strong><span style="font-family:新細明體;color:black;">。利用這</span><span style="color:black;">2</span><span style="font-family:新細明體;color:black;">點特性將程式模組化成為愈小，越愈能達到功能重複使用的模組，使得後續的程式維護工作變的更簡單。</span><span style="color:black;"></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/75/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/75/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=75&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/23/why-functional-programming-matters-%e9%96%b1%e8%ae%80%e6%91%98%e8%a6%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>多型</title>
		<link>http://oicejki.wordpress.com/2007/09/21/%e5%a4%9a%e5%9e%8b/</link>
		<comments>http://oicejki.wordpress.com/2007/09/21/%e5%a4%9a%e5%9e%8b/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 10:06:09 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[電腦技術]]></category>
		<category><![CDATA[jdk 6]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/21/%e5%a4%9a%e5%9e%8b/</guid>
		<description><![CDATA[除了Object 類別的物件之外，所有的Java object都是多型。因為可以通過自己型別的IS-A,，也可以通過Object 類別的IS-A 測試。 interface A{} class B{ } class C extends B implements A{&#8230;} 任何C類別所產生的object，在任何時後，都可以被多型的對待成下面四種東西之一，至於是那一種，則由reference variable的宣告型別來決定。 一個Object 一個Ａ(C  implements A) 一個Ｂ(C extends B) 一個Ｃ 雖然可以用父類別來ref子類別的Object，但在Run Time時，會依據實際的object來做動態選擇的只有instance method。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=74&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>除了Object 類別的物件之外，所有的Java object都是多型。因為可以通過自己型別的IS-A,，也可以通過Object 類別的IS-A 測試。</p>
<p>interface A{}</p>
<p>class B{ }</p>
<p>class C extends B implements A{&#8230;}</p>
<p>任何C類別所產生的object，在任何時後，都可以被多型的對待成下面四種東西之一，至於是那一種，則由<strong><font color="#ff0000">reference variable的宣告型別</font></strong>來決定。</p>
<ul>
<li>一個Object</li>
<li>一個Ａ(C  implements A)</li>
<li>一個Ｂ(C extends B)</li>
<li>一個Ｃ</li>
</ul>
<p>雖然可以用父類別來ref子類別的Object，但在<strong><font color="#ff0000">Run Time</font></strong>時，會依據<font color="#ff0000"><strong>實際的object</strong><font color="#000000">來做動態選擇的只有<strong><font color="#ff0000">instance method</font></strong>。</font></font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/74/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/74/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=74&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/21/%e5%a4%9a%e5%9e%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>static crosscutting</title>
		<link>http://oicejki.wordpress.com/2007/09/13/static-crosscutting/</link>
		<comments>http://oicejki.wordpress.com/2007/09/13/static-crosscutting/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 06:52:42 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/13/static-crosscutting/</guid>
		<description><![CDATA[定義:修改class、interface、aspect 的成員，來支援dynamic crosscutting。 分為以下四種情形： Member introduction Modifying the class hierarchy Introducing compile-time errors and warning exception softening<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=68&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>定義:<strong><font color="#ff0000">修改class、interface、aspect 的成員，來支援dynamic crosscutting</font></strong>。</p>
<p>分為以下四種情形：</p>
<ul>
<li><strong>Member introduction</strong></li>
<li><strong> Modifying the class hierarchy</strong></li>
<li><strong>Introducing compile-time errors and warning</strong></li>
<li><strong>exception softening</strong></li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/68/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/68/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=68&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/13/static-crosscutting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
		<item>
		<title>Advice</title>
		<link>http://oicejki.wordpress.com/2007/09/11/advice/</link>
		<comments>http://oicejki.wordpress.com/2007/09/11/advice/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 07:44:14 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/11/advice/</guid>
		<description><![CDATA[Advice可看成對Join Point的override，而和method有以下不同的地方： 不可有name。 不能直接呼叫。 不能有access specifier。 可利用thisJointPoint 、 thisJoinPointStaticPart、thisEnclosingJoinpointStaticPart來取得和JoinPoint相關的information 。 join point中有宣告throw exception，advice中才可throw exception。 可宣告比join point更少或更多的exception。 before():進入Join Point前執行。可用於認証、Logging、policy實施上。 after():分為三種類型： 與return value、是否會發生Exception無關： 與return value相關 ，在Join Point成功完整地執行後執行： 與throw exception相關，在Join Point丟出一個exception後執行： around():必須有return type。 可讓Join Point不執行 加入Proceed()，執行Join Point的程式 ，也可修改參數改變其執行。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=53&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Advice可看成<font color="#ff0000">對Join Point的override，</font>而和method有以下<font color="#ff0000">不同</font>的地方：</p>
<ul>
<li>不可有name。</li>
<li>不能直接呼叫。</li>
<li>不能有access specifier。</li>
<li>可利用<font color="#ff0000"><strong>thisJointPoint</strong></font> 、<font color="#ff0000"><strong> thisJoinPointStaticPart</strong></font>、<font color="#ff0000"><strong>thisEnclosingJoinpointStaticPart</strong></font>來取得和JoinPoint相關的information 。</li>
<li>join point中有宣告throw exception，advice中才可throw exception。</li>
<li>可宣告比join point更少或更多的exception。</li>
</ul>
<p><strong><font color="#0000ff">before():</font></strong>進入Join Point前執行。可用於<strong>認証</strong>、<strong>Logging</strong>、<strong>policy實施</strong>上。</p>
<p><strong><font color="#0000ff">after():</font>分為三種類型：</strong></p>
<ol>
<li><font color="#ff0000">與return value、是否會發生Exception無關：</font><a href="http://oicejki.files.wordpress.com/2007/09/1.jpg" title="1.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/1.jpg?w=510" alt="1.jpg" /></a></li>
<li><font color="#ff0000">與return value相關 ，在Join Point成功完整地執行後執行：</font><a href="http://oicejki.files.wordpress.com/2007/09/2.jpg" title="2.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/2.jpg?w=510" alt="2.jpg" /></a><a href="http://oicejki.files.wordpress.com/2007/09/3.jpg" title="3.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/3.jpg?w=510" alt="3.jpg" /></a></li>
<li><font color="#ff0000">與throw exception相關，在Join Point丟出一個exception後執行</font>：<a href="http://oicejki.files.wordpress.com/2007/09/4.jpg" title="4.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/4.jpg?w=510" alt="4.jpg" /></a><a href="http://oicejki.files.wordpress.com/2007/09/5.jpg" title="5.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/5.jpg?w=510" alt="5.jpg" /></a></li>
</ol>
<p><font color="#0000ff"><strong>around():</strong><font color="#ff0000">必須有return type。</font></font></p>
<ul>
<li>可讓Join Point不執行</li>
<li>加入<strong><font color="#ff0000">Proceed()</font></strong>，執行Join Point的程式 ，也可修改參數改變其執行。</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=53&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/11/advice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/1.jpg" medium="image">
			<media:title type="html">1.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/2.jpg" medium="image">
			<media:title type="html">2.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/3.jpg" medium="image">
			<media:title type="html">3.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/4.jpg" medium="image">
			<media:title type="html">4.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/5.jpg" medium="image">
			<media:title type="html">5.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Pointcuts</title>
		<link>http://oicejki.wordpress.com/2007/09/11/pointcuts/</link>
		<comments>http://oicejki.wordpress.com/2007/09/11/pointcuts/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 07:43:56 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/11/pointcuts/</guid>
		<description><![CDATA[定義：選取需要的join point，且得到所需的資訊，如target object或method arguments。 為了使Pointcuts可以一次設定多個Join points，有以下的幾種規則： * :除了之前出現過的字元 .. :包含了之前出現過的字元 + :任何的subclass和subinterface 宣告pointCut的Pattern有以下幾種宣告方法: 而Java中昏class,interface,methods都叫做signatures。我們利用這些signature來指定想要選取的Join Point.有以下三種pattern可表示。 Type signature pattern:分別為class、interface和primitive types有關。 * :　class　或是　interface的一部份，或是　package name。 .. :　所有的direct and indirect subpackage。 + : 　subclass 或是subinterface。 &#160; Method and constructor signature pattern Field signature pattern 如何選取所需join point集合形成pointcuts，可依Join Point種類的不同，用以下的幾種方法來操作所找出的pointcuts。 Kinded pointcuts：可實現explose join poin Control-flow based pointcuts Lexical-structure based pointcuts：可使用於class、aspect和method的lexical scope。 within(TypeSignaturePattern):使用在找出特定class、aspect的join [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=52&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>定義：<font color="#ff0000"><strong>選取需要的join point，且得到所需的資訊，如target object或method arguments</strong></font>。</p>
<p>為了使Pointcuts可以一次設定多個Join points，有以下的幾種規則：</p>
<ul>
<li><strong>* :除了之前出現過的字元</strong></li>
<li><strong>.. :包含了之前出現過的字元</strong></li>
<li><strong>+ :任何的subclass和subinterface</strong></li>
</ul>
<p>宣告pointCut的Pattern有以下幾種宣告方法:</p>
<p><a href="http://oicejki.files.wordpress.com/2007/09/ff.jpg" title="ff.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/ff.jpg?w=510" alt="ff.jpg" /></a></p>
<p>而Java中昏class,interface,methods都叫做signatures。我們利用這些signature來指定想要選取的Join  Point.有以下三種pattern可表示。</p>
<ul>
<li><font color="#800000"><strong>Type signature pattern:</strong></font>分別為<font color="#ff0000"><strong>class</strong></font>、<strong><font color="#ff0000">interface</font></strong>和<strong><font color="#ff0000">primitive types</font></strong>有關。</li>
</ul>
<ol>
<li>*    :　<font color="#ff0000"><strong>class</strong></font>　或是　<font color="#ff0000"><strong>interface</strong></font>的一部份，或是　<font color="#ff0000"><strong>package name</strong></font>。</li>
<li>..    :　所有的<font color="#ff0000">direct and indirect <strong>subpackage</strong></font>。</li>
<li>+   :<font color="#ff0000">    <strong>　subclass</strong></font> 或是<font color="#ff0000"><strong>subinterface</strong></font>。</li>
</ol>
<h1></h1>
<p align="center">&nbsp;</p>
<ul>
<li><font color="#800000"><strong>Method and constructor signature pattern</strong></font></li>
<li><font color="#800000"><strong>Field signature pattern</strong></font></li>
</ul>
<p>如何選取所需join point集合形成pointcuts，可依<strong>Join Point種類的不同</strong>，用以下的幾種方法來操作所找出的pointcuts。</p>
<ul>
<li><font color="#800080"><strong>Kinded pointcuts：可實現explose join poin</strong></font></li>
</ul>
<p><a href="http://oicejki.files.wordpress.com/2007/09/kind.jpg" title="kind.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/kind.jpg?w=510" alt="kind.jpg" /></a></p>
<ul>
<li><font color="#800080"><strong>Control-flow based pointcuts</strong></font></li>
</ul>
<p><a href="http://oicejki.files.wordpress.com/2007/09/cf1.jpg" title="cf1.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/cf1.jpg?w=510" alt="cf1.jpg" /></a></p>
<ul>
<li><font color="#800080"><strong>Lexical-structure based pointcuts：</strong><font color="#000000">可使用於<strong><font color="#ff0000">class</font></strong></font></font>、<font color="#800080"><font color="#000000"><strong><font color="#ff0000">aspect</font></strong>和<strong><font color="#ff0000">method</font></strong>的lexical scope。</font><strong><br />
</strong></font></li>
</ul>
<ol>
<li><strong>within(TypeSignaturePattern):</strong>使用在找出特定<font color="#ff0000"><strong>class</strong></font>、<font color="#ff0000"><strong>aspect</strong></font>的join point。<strong><br />
</strong></li>
<li><strong>withincode(MethodSignaturePattern,ConstructoruSignaturePattern):</strong>使用在<font color="#ff0000"><font color="#000000">找出特定</font></font><strong><font color="#ff0000">method</font></strong>、<strong><font color="#ff0000">constructor</font></strong>的join point。</li>
</ol>
<p><a href="http://oicejki.files.wordpress.com/2007/09/le.jpg" title="le.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/le.jpg?w=510" alt="le.jpg" /></a><a href="http://oicejki.files.wordpress.com/2007/09/le.jpg" title="le.jpg"></a></p>
<ul>
<li><font color="#800080"><strong>Execution object pointcuts:可<font color="#000000">使用於object執行時。</font></strong></font></li>
<p><font color="#000000"><strong>因為傳入的參數為Type，所以<font color="#ff0000">不需使用* ..  +</font><br />
而static method因沒有產生object，所以也不能使用this(),target()。</strong></font></ul>
<ol>
<li>
<p align="left"><strong>this(Type or ObjectIdentifier):目前</strong>的object。</p>
</li>
<li><strong>target(</strong><strong>Type or ObjectIdentifier</strong><strong>):</strong>這個object上的某個method被呼叫。</li>
</ol>
<p><font size="3"><span style="font-family:宋体;"></span><strong><font color="#ff0000"><span><font face="Times New Roman">             target() pointcut </font></span><span style="font-family:宋体;">一般和</span></font><font color="#ff0000" face="Times New Roman"><strong><span>call</span></strong><span> join point </span></font><font color="#ff0000"><span style="font-family:宋体;">搭配使用。</span></font></strong></font><font color="#99cc00"><strong>Type:不需要context時使用。</strong></font><font color="#99cc00"><strong>this instanceof &lt;Type&gt;</strong>為<strong>True</strong>。</font></p>
<p><font color="#99cc00"><strong>ObjectIdentifier:需要將context傳給advice時使用，會收集和此object相關的資訊。</strong></font></p>
<p><a href="http://oicejki.files.wordpress.com/2007/09/exe.jpg" title="exe.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/exe.jpg?w=510" alt="exe.jpg" /></a></p>
<ul>
<li><font color="#800080"><strong>Argument pointcuts:</strong><font color="#000000">抓取有傳遞arguments的join point。</font><strong><br />
</strong></font></li>
</ul>
<p><a href="http://oicejki.files.wordpress.com/2007/09/arg.jpg" title="arg.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/arg.jpg?w=510" alt="arg.jpg" /></a></p>
<ul>
<li><font color="#800080"><strong>Condition check pointcuts：抓取有選擇的join point。 </strong></font></li>
</ul>
<p><a href="http://oicejki.files.wordpress.com/2007/09/cond.jpg" title="cond.jpg"><img src="http://oicejki.files.wordpress.com/2007/09/cond.jpg?w=510" alt="cond.jpg" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=52&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/11/pointcuts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/ff.jpg" medium="image">
			<media:title type="html">ff.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/kind.jpg" medium="image">
			<media:title type="html">kind.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/cf1.jpg" medium="image">
			<media:title type="html">cf1.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/le.jpg" medium="image">
			<media:title type="html">le.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/exe.jpg" medium="image">
			<media:title type="html">exe.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/arg.jpg" medium="image">
			<media:title type="html">arg.jpg</media:title>
		</media:content>

		<media:content url="http://oicejki.files.wordpress.com/2007/09/cond.jpg" medium="image">
			<media:title type="html">cond.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Join point</title>
		<link>http://oicejki.wordpress.com/2007/09/11/join-point/</link>
		<comments>http://oicejki.wordpress.com/2007/09/11/join-point/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 07:43:38 +0000</pubDate>
		<dc:creator>oicejki</dc:creator>
				<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[電腦技術]]></category>

		<guid isPermaLink="false">http://oicejki.wordpress.com/2007/09/11/join-point/</guid>
		<description><![CDATA[可在Join Points中選取所需的Pointcuts , 這些Join Points叫做Ｅxpose join points  。以下為各種Expose join points。 Method join points execution join points call join points Constructor join points Field access join points Exception handler execution join points Class initialization join points Object initialization join points Object pre-initialization join points Advice execution join points<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=51&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>可在Join Points中選取所需的Pointcuts , 這些Join Points叫做<strong>Ｅxpose join points</strong>  。以下為各種Expose join points。</p>
<ul>
<li>Method join points
<ol>
<li>execution join points</li>
<li>call join points</li>
</ol>
</li>
<li>Constructor join points</li>
<li>Field access join points</li>
<li>Exception handler execution join points</li>
<li>Class initialization join points</li>
<li>Object initialization join points</li>
<li>Object pre-initialization join points</li>
<li>Advice execution join points</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oicejki.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oicejki.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oicejki.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oicejki.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oicejki.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oicejki.wordpress.com&amp;blog=1128186&amp;post=51&amp;subd=oicejki&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oicejki.wordpress.com/2007/09/11/join-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/83ca0ccb011b876417c96071afc5128a?s=96&#38;d=identicon" medium="image">
			<media:title type="html">oicejki</media:title>
		</media:content>
	</item>
	</channel>
</rss>
