<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3115329479995633066</id><updated>2024-09-04T13:28:34.442-07:00</updated><category term="SSH"/><category term="sql"/><category term="facebook"/><category term="framework"/><category term="STRUTS2"/><category term="Spring"/><category term="jquery"/><category term="STRUTS"/><category term="javascript"/><category term="tomcat"/><category term="jstl"/><category term="solr"/><title type='text'>Ncs學習筆記</title><subtitle type='html'>這是我工作中所遇到的問題，&#xa;以及解法所寫的文章，&#xa;大多問題都是網路不容易找到的解法，&#xa;如果對您有幫助，請點個讚或是分享。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mmncsmm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-1838990390252202886</id><published>2019-09-20T18:16:00.002-07:00</published><updated>2019-09-20T18:19:51.278-07:00</updated><title type='text'>KTV唱歌教學</title><content type='html'>&lt;h4&gt;
&lt;b&gt;KTV唱歌教學1 | 簡單四招認識自己的聲音&lt;/b&gt;&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/h1PTatHs850&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學2 | 三步骤成為K歌之王&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/kUIul2nUyg0&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學3 | 如何將感情帶入歌曲中&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/-pzUTcRnfqE&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學4 | 教你唱出好人缘&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/zKEH5HRv2a4&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學5 | 五招拯救五音不全&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/9UpUCmA85xA&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學6 | 3招告别高音唱上不去低音下不来&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/df8GcZYgSSo&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學7 | 王菲、陳奕迅和周杰倫不能说的秘密&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/pWer3AU-gjc&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學8 | 學那英用《默》唱出深情&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/98W3oKiDJCc&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學9 | 正確開嗓練聲&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/h7311-wDgQc&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學10 | 歌手如何準備演唱會&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/7zge-VjGCKg&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
KTV唱歌教學11 | 唱歌前的熱身準備動作&lt;/h4&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/iuh6poi9DGE&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
KTV唱歌教學12 | 總結與歸納&lt;/h3&gt;
&lt;iframe allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/WNO8fu35MSM&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1838990390252202886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1838990390252202886'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2019/09/ktv.html' title='KTV唱歌教學'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/h1PTatHs850/default.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-1556892237661950450</id><published>2018-03-21T03:24:00.003-07:00</published><updated>2019-09-20T18:04:35.902-07:00</updated><title type='text'>工程師 常用線上工具</title><content type='html'>最強線上英英字典 :&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.richhappy.com.tw/free-online-dictionaries/&quot;&gt;https://www.richhappy.com.tw/free-online-dictionaries/&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
JSON formatter :&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://jsonformatter.curiousconcept.com/&quot;&gt;https://jsonformatter.curiousconcept.com/&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1556892237661950450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1556892237661950450'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2018/03/blog-post.html' title='工程師 常用線上工具'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-4550019117637591597</id><published>2014-06-04T23:11:00.001-07:00</published><updated>2014-06-04T23:11:28.919-07:00</updated><title type='text'>GGTrends  APP微觀察: 查詢APP世界排名的好網站-App Annie</title><content type='html'>&lt;a href=&quot;http://ggtrends.blogspot.com/2012/07/app-app-annie_17.html?spref=bl&quot;&gt;GGTrends  APP微觀察: 查詢APP世界排名的好網站-App Annie&lt;/a&gt;: App Annie 是專門從事App Store流量分析和提供iOS、Mac、Google Play 市場情報的公司。因此在Top Charts的頁面，能一併iOS&amp;amp;Google Play的數據。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/4550019117637591597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/4550019117637591597'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2014/06/ggtrends-app-app-app-annie.html' title='GGTrends  APP微觀察: 查詢APP世界排名的好網站-App Annie'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-3284915583725944528</id><published>2012-04-12T02:41:00.000-07:00</published><updated>2012-04-12T02:41:01.980-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Facebook Api logout (登出)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguWkepld7zd-3mG9yspVgSovkkbyv42GHuQww51kd2gXcq6mZ7E0gumbUjDxRiRVgD3ph0QT7VoD-8GK2jr-d_AF9LuJl8xAOnHaGIWjXJy0ruBk7C27Ta4R1Ny3o0WN0dI5kjKF0TR64/s1600/facebook_logout-300x212.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguWkepld7zd-3mG9yspVgSovkkbyv42GHuQww51kd2gXcq6mZ7E0gumbUjDxRiRVgD3ph0QT7VoD-8GK2jr-d_AF9LuJl8xAOnHaGIWjXJy0ruBk7C27Ta4R1Ny3o0WN0dI5kjKF0TR64/s400/facebook_logout-300x212.jpg&quot; width=&quot;287&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;原因：&lt;/b&gt;若你的FB是登入狀態，作認證時FB不會跳出任何訊息框，就直接用你的帳號作登入了。目前用過twitter, linkedin, plurk 及 tumblr，只有FB沒有任何訊息框。為了避免用錯帳號認證，我想在認證前，自動幫使用者作登出的動作。&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;解決方式：&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

 &lt;pre class=&quot;brush: javascript&quot;&gt;
function fbLogout(){
 FB.init({appId: &#39;XXXXXXX&#39;});
 FB.getLoginStatus(handleSessionResponse);
}

function handleSessionResponse(response) {
 if (response.status==&#39;connected&#39;) {
  FB.logout();
 }
}

&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;b&gt;備註：&lt;/b&gt;一開始試了很久，直接呼叫FB.logout()都沒有效果，原來一定要先呼叫getLoginStatus，取得登入狀態才可以再呼叫FB.logout()。&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3284915583725944528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3284915583725944528'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2012/04/facebook-api-logout.html' title='Facebook Api logout (登出)'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguWkepld7zd-3mG9yspVgSovkkbyv42GHuQww51kd2gXcq6mZ7E0gumbUjDxRiRVgD3ph0QT7VoD-8GK2jr-d_AF9LuJl8xAOnHaGIWjXJy0ruBk7C27Ta4R1Ny3o0WN0dI5kjKF0TR64/s72-c/facebook_logout-300x212.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-2954138675513355786</id><published>2012-03-05T02:29:00.000-08:00</published><updated>2012-03-09T01:28:47.219-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Scribe OAUTH with JAVA</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3bryaUlyFH2oPyGbJeoiH3Xgm6PNskDP8XuwaIybXZdcySz8yIb2F5KEWopo1yZoPDmhRldZ0eeFLTyv8nm-14uGJo6QhuTJ0F7g0hXwmIWG0wSQZYyYLD7fKVERx06Bssfh2Nx2MneQ/s1600/image%5B3%5D.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3bryaUlyFH2oPyGbJeoiH3Xgm6PNskDP8XuwaIybXZdcySz8yIb2F5KEWopo1yZoPDmhRldZ0eeFLTyv8nm-14uGJo6QhuTJ0F7g0hXwmIWG0wSQZYyYLD7fKVERx06Bssfh2Nx2MneQ/s1600/image%5B3%5D.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
在使用社群API時，一定要先通過認證機制取得access token，而大多數的社群都支援OAUTH，目前已經成為主流，各大網站能用facebook或twitter帳號登入已經成為必備條件。&lt;br /&gt;
&lt;br /&gt;
OAUTH最大的優點就是不用紀錄使用者的帳號密碼，對使用者來說也比較安心。&lt;br /&gt;
所以你一定要學會怎饃用。&lt;br /&gt;
詳細的說明可以參考此&lt;a href=&quot;http://blog.csdn.net/hereweare2009/article/details/3968582&quot;&gt;網站&lt;/a&gt;。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
OAUTH又分為1及2，2跟1相比驗證的過程簡單許多，若自己用httpclient來時作也很花時間。&lt;br /&gt;
&lt;br /&gt;
我找到一套別人寫好的認證程式，同時支援OAUTH1及OAUTH2，底層複雜的認證機制都幫你寫好了，只要把必要得參數送進去就好了。&lt;br /&gt;
就是&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;a href=&quot;https://github.com/fernandezpablo85/scribe-java&quot;&gt;SCRIBE&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
支援30多種&lt;a href=&quot;https://github.com/fernandezpablo85/scribe-java/tree/master/src/main/java/org/scribe/builder/api&quot;&gt;社群&lt;/a&gt;OAUTH認證，並且還有提供15個社群的&lt;a href=&quot;https://github.com/fernandezpablo85/scribe-java/tree/master/src/test/java/org/scribe/examples&quot;&gt;範例程式&lt;/a&gt;，包含Facebook,Twitter, Linkedin以及新浪微博等。Linkedin的官網教學就是用&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;a href=&quot;https://github.com/fernandezpablo85/scribe-java&quot;&gt;SCRIBE&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/b&gt;。&lt;br /&gt;
只能說超好用的。&lt;br /&gt;
&lt;br /&gt;
這裡的範例程式流程是，執行後會先回傳一段URL在console，&lt;br /&gt;
&lt;br /&gt;
1. 執行&lt;br /&gt;
2. 回傳URL在console&lt;br /&gt;
3. 複製URL貼到browser，會顯示一段驗證碼，若有callback url則會已get的方式連接在url後面。&lt;br /&gt;
4. 在console輸入驗證碼&lt;br /&gt;
5. 取得access token&lt;br /&gt;
&lt;br /&gt;
如果沒有支援你需要的社群也沒關係，若是OAUTH1繼承DefaultApi10a，OAUTH2繼承DefaultApi20，參考別人怎麼&lt;a href=&quot;https://github.com/fernandezpablo85/scribe-java/tree/master/src/main/java/org/scribe/builder/api&quot;&gt;實做&lt;/a&gt;就好了，很簡單的。&lt;br /&gt;
&lt;br /&gt;
在寫code前，記得先去註冊應用程式，取得appkey。可以參考我之前寫的幾篇，&lt;a href=&quot;http://mmncsmm.blogspot.com/2011/07/facebook-api-for-java-login.html&quot;&gt;Facebook&lt;/a&gt;、&lt;a href=&quot;http://mmncsmm.blogspot.com/2012/01/twitter-app.html&quot;&gt;Twitter&lt;/a&gt;及&lt;a href=&quot;http://mmncsmm.blogspot.com/2012/01/plurk-app.html&quot;&gt;Plurk&lt;/a&gt;。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2954138675513355786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2954138675513355786'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2012/03/scribe-oauth-with-java.html' title='Scribe OAUTH with JAVA'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3bryaUlyFH2oPyGbJeoiH3Xgm6PNskDP8XuwaIybXZdcySz8yIb2F5KEWopo1yZoPDmhRldZ0eeFLTyv8nm-14uGJo6QhuTJ0F7g0hXwmIWG0wSQZYyYLD7fKVERx06Bssfh2Nx2MneQ/s72-c/image%5B3%5D.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-1681086321594952416</id><published>2012-01-25T05:37:00.000-08:00</published><updated>2012-01-25T05:38:03.040-08:00</updated><title type='text'>TWITTER - 註冊應用服務 (APP)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjt5amOOkLafYKQiVNwLEfJ4rZQdkm0EEw-I7T_apxBNfEIrodriimpM9XugqakUEqn0VyuKxHx0MDIKUVG4w-lan24I4qxzsQCmv7KACcUFPY6IjU4cUJSOKCprNjMgG2qI_q4_5TMmg/s1600/twitter-02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjt5amOOkLafYKQiVNwLEfJ4rZQdkm0EEw-I7T_apxBNfEIrodriimpM9XugqakUEqn0VyuKxHx0MDIKUVG4w-lan24I4qxzsQCmv7KACcUFPY6IjU4cUJSOKCprNjMgG2qI_q4_5TMmg/s320/twitter-02.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
在使用TWITTER的api前，必須先註冊應用服務 (APP)，取得&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;App Key及&lt;/span&gt;

&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;&quot;&gt;App Secret。程式要呼叫api時，這兩個參數是必要的，以下就來介紹註冊的步驟。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;登入後，開啟
&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;https://dev.twitter.com/&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;https://dev.twitter.com/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;按下「&lt;span lang=&quot;EN-US&quot;&gt;create an app&lt;/span&gt;」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;3.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;填寫完之後按下「&lt;span lang=&quot;EN-US&quot;&gt;create&lt;/span&gt;」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;4.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;上方&lt;span lang=&quot;EN-US&quot;&gt;tab&lt;/span&gt;按下「&lt;span lang=&quot;EN-US&quot;&gt;Settings&lt;/span&gt;」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;5.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;到&lt;span lang=&quot;EN-US&quot;&gt;Application type&lt;/span&gt;，點選「&lt;span lang=&quot;EN-US&quot;&gt;Read, Write and Access
direct messages&lt;/span&gt;」。（才有權限發訊息）&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;6.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;上方&lt;span lang=&quot;EN-US&quot;&gt;tab&lt;/span&gt;按下「&lt;span lang=&quot;EN-US&quot;&gt;Detail&lt;/span&gt;」後，到畫面最底，按下「&lt;span lang=&quot;EN-US&quot;&gt;create my&amp;nbsp; access token&lt;/span&gt;」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;7.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;即可取得參數&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1681086321594952416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1681086321594952416'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2012/01/twitter-app.html' title='TWITTER - 註冊應用服務 (APP)'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjt5amOOkLafYKQiVNwLEfJ4rZQdkm0EEw-I7T_apxBNfEIrodriimpM9XugqakUEqn0VyuKxHx0MDIKUVG4w-lan24I4qxzsQCmv7KACcUFPY6IjU4cUJSOKCprNjMgG2qI_q4_5TMmg/s72-c/twitter-02.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-2557532745240460315</id><published>2012-01-25T05:35:00.000-08:00</published><updated>2012-01-25T05:35:13.661-08:00</updated><title type='text'>PLURK - 註冊應用服務 (APP)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGd00xpSoGZrSVNHvwWby_-ZUHwgaBGt2FTPQFaXPx9GYgoPzDwO52LI8m1s8ERE6e5TFCswu5ioXdKLCKwEL1nZFIfi1OdvJ2FCLxiBjvDXxUYMr_G6tgU3NiggegVnpd78YiaO3LRvs/s1600/49a2143752c40.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGd00xpSoGZrSVNHvwWby_-ZUHwgaBGt2FTPQFaXPx9GYgoPzDwO52LI8m1s8ERE6e5TFCswu5ioXdKLCKwEL1nZFIfi1OdvJ2FCLxiBjvDXxUYMr_G6tgU3NiggegVnpd78YiaO3LRvs/s400/49a2143752c40.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
在使用PLURK 的api前，必須先註冊應用服務 (APP)，取得&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;App Key及&lt;/span&gt;

&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: &amp;quot;Lohit Hindi&amp;quot;; mso-bidi-language: HI; mso-fareast-language: ZH-TW; mso-font-kerning: .5pt;&quot;&gt;App Secret。程式要呼叫api時，這兩個參數是必要的，以下就來介紹註冊的步驟。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;
  &lt;w:DisplayVerticalDrawingGridEvery&gt;2&lt;/w:DisplayVerticalDrawingGridEvery&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;ZH-TW&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:SpaceForUL/&gt;
   &lt;w:BalanceSingleByteDoubleByteWidth/&gt;
   &lt;w:DoNotLeaveBackslashAlone/&gt;
   &lt;w:ULTrailSpace/&gt;
   &lt;w:DoNotExpandShiftReturn/&gt;
   &lt;w:AdjustLineHeightInTable/&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
   &lt;w:UseFELayout/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; Name=&quot;Body Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; Name=&quot;Hyperlink&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:表格內文;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:10.0pt;
 font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot;/&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot;/&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;1.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;登入後，開啟&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;http://www.plurk.com/PlurkApp/&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;AR PL UMing HK&amp;quot;;&quot;&gt;http://www.plurk.com/PlurkApp/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;AR PL UMing HK&amp;quot;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;2.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;按下「註冊新的應用服務」，填寫完之後按下「註冊」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;3.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;按下「測試工具」，開啟
&lt;span lang=&quot;EN-US&quot;&gt;OAuth &lt;/span&gt;的 &lt;span lang=&quot;EN-US&quot;&gt;Test Console&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;4.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;按下「&lt;span lang=&quot;EN-US&quot;&gt;Get Request Token&lt;/span&gt;」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;5.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;按下「&lt;span lang=&quot;EN-US&quot;&gt;Open Authorization URL&lt;/span&gt;」開啟授權頁面，並且按「是，我要授權」。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;6.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;記得認證碼（可能在網址列上）。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;7.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;回到
&lt;span lang=&quot;EN-US&quot;&gt;Test Console&lt;/span&gt;，按下「&lt;span lang=&quot;EN-US&quot;&gt;Get Access Token&lt;/span&gt;」，填入認證碼。&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family: 微軟正黑體;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;8.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;即可取得參數&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36pt; text-indent: -18pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot; style=&quot;margin-left: 36pt; text-indent: -18pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoBodyText&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;參考網址：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;a href=&quot;http://zh.blog.plurk.com/archives/1121&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;AR PL UMing HK&amp;quot;;&quot;&gt;http://zh.blog.plurk.com/archives/1121&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:DisplayHorizontalDrawingGridEvery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;
  &lt;w:DisplayVerticalDrawingGridEvery&gt;2&lt;/w:DisplayVerticalDrawingGridEvery&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;ZH-TW&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:SpaceForUL/&gt;
   &lt;w:BalanceSingleByteDoubleByteWidth/&gt;
   &lt;w:DoNotLeaveBackslashAlone/&gt;
   &lt;w:ULTrailSpace/&gt;
   &lt;w:DoNotExpandShiftReturn/&gt;
   &lt;w:AdjustLineHeightInTable/&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
   &lt;w:UseFELayout/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; Name=&quot;Body Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:表格內文;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:10.0pt;
 font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot;/&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot;/&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;

&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;微軟正黑體&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: &amp;quot;Lohit Hindi&amp;quot;; mso-bidi-language: HI; mso-fareast-language: ZH-TW; mso-font-kerning: .5pt;&quot;&gt;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2557532745240460315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2557532745240460315'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2012/01/plurk-app.html' title='PLURK - 註冊應用服務 (APP)'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGd00xpSoGZrSVNHvwWby_-ZUHwgaBGt2FTPQFaXPx9GYgoPzDwO52LI8m1s8ERE6e5TFCswu5ioXdKLCKwEL1nZFIfi1OdvJ2FCLxiBjvDXxUYMr_G6tgU3NiggegVnpd78YiaO3LRvs/s72-c/49a2143752c40.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-6086919303244795194</id><published>2011-11-07T05:57:00.000-08:00</published><updated>2011-11-07T05:57:13.552-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>在Blogger中嵌入Facebook分享按鈕</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVsAcQPjaDoA_WULa7FvCdHh-udfv6PfNxCpPbPadQF2ivSY-x7FTF57nDd6-zdl6UflVv2XBuoTwVN46jpNdxS_plRZfWPbtINkdXOlsA_fXQT_M6KW7vJz4CpLasQPDcfM0r_THLQWw/s1600/myspace_button.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVsAcQPjaDoA_WULa7FvCdHh-udfv6PfNxCpPbPadQF2ivSY-x7FTF57nDd6-zdl6UflVv2XBuoTwVN46jpNdxS_plRZfWPbtINkdXOlsA_fXQT_M6KW7vJz4CpLasQPDcfM0r_THLQWw/s320/myspace_button.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
(http://www.iconfinder.com/icondetails/34144/122/button_facebook_name_share_icon)&lt;/div&gt;
&lt;br /&gt;
目前在blogger中加入Facebook分享按鈕（share button），有兩種方式。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;方法一：&lt;/b&gt;&lt;br /&gt;
1. 使用blogger內建的元件，登入&lt;a href=&quot;http://blogger.com/&quot;&gt;Blogger 的控制台&lt;/a&gt;，點選『&lt;span class=&quot;GOSO1BNO3&quot;&gt;&lt;span class=&quot;GOSO1BNO5&quot;&gt;版面配置&lt;/span&gt;&lt;/span&gt;』再點『網誌文章中的編輯』，如下圖。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-3Oh_6L9A03PD6ndxsWqWE7KJU2a9BBuyOluAnY9WskyyM5Og063xku3rnpeoKGRu6oG6JTqycR6Gy3AI5HsWqVtzvVPvJUC9slV76wfgi8EuqVRj1qEXS6_9nuWjiM1gNG01OeJoaiY/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;416&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-3Oh_6L9A03PD6ndxsWqWE7KJU2a9BBuyOluAnY9WskyyM5Og063xku3rnpeoKGRu6oG6JTqycR6Gy3AI5HsWqVtzvVPvJUC9slV76wfgi8EuqVRj1qEXS6_9nuWjiM1gNG01OeJoaiY/s640/1.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
2.&amp;nbsp; 此時會展開一個小視窗，裡面有『
顯示分享按鈕』打勾即可。一併幫你加入twitter、facebook、google+ 等分享按鈕，如下圖。但facebook不會有計數功能。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtpXEx8sLNYUqwiLrnPNQpf5u_NIAHyHtryI006RMZ1XnrZeQonD9_DFU4S2E6HOyi-2pGZo1CgCG2tMHS9-6CV1_L4L1KeMA40pAb2TO6WOM2J2MCX2Sw7FvmM5PaK-f8jycglO8N3jo/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;36&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtpXEx8sLNYUqwiLrnPNQpf5u_NIAHyHtryI006RMZ1XnrZeQonD9_DFU4S2E6HOyi-2pGZo1CgCG2tMHS9-6CV1_L4L1KeMA40pAb2TO6WOM2J2MCX2Sw7FvmM5PaK-f8jycglO8N3jo/s400/1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;方法二：&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;放置在標題下方，facebook的『讚』及『分享按鈕』，並且有計數功能，看到此文章被多少人分享。&lt;br /&gt;
1. 登入&lt;a href=&quot;http://blogger.com/&quot;&gt;Blogger 的控制台&lt;/a&gt;，點選『範本』再點『修改HTML』，此時會展開一個小視窗，並且在『展開小裝置範本 』打勾。&lt;br /&gt;
&lt;br /&gt;
2. 按ctrl+f 搜尋 &amp;lt;div class=&#39;post-header-line-1&#39;/&amp;gt; ，將下列語法貼至此行下面即可，若搜尋到多行，選擇最上面那行。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdSqADdJl6hG67NrZqY2sK1hEaxpnT57RgYnJUx4a-obQpmDSu-Kn66mJGiHw3grFDyDMpitLNB6v8envySLwS4K-wpuSm7QWV-8wQoh5zxcIb6Ricf0QaFmTwWkfJH5ARKE3aGHw0IKA/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdSqADdJl6hG67NrZqY2sK1hEaxpnT57RgYnJUx4a-obQpmDSu-Kn66mJGiHw3grFDyDMpitLNB6v8envySLwS4K-wpuSm7QWV-8wQoh5zxcIb6Ricf0QaFmTwWkfJH5ARKE3aGHw0IKA/s640/1.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
加入『讚』的語法&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;document.write(&amp;amp;#39;&amp;amp;lt;iframe src=&amp;amp;quot;http://www.facebook.com/plugins/like.php?href=&amp;lt;data:post.url/&amp;gt;&amp;amp;amp;layout=standard&amp;amp;amp;show_faces=true&amp;amp;amp;width=450&amp;amp;amp;action=like&amp;amp;amp;font=verdana&amp;amp;amp;colorscheme=light&amp;amp;quot; scrolling=&amp;amp;quot;no&amp;amp;quot; frameborder=&amp;amp;quot;0&amp;amp;quot; allowTransparency=&amp;amp;quot;true&amp;amp;quot; style=&amp;amp;quot;border:none; overflow:hidden; width:450px; height:65px&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/iframe&amp;amp;gt;&amp;amp;#39;);&lt;br /&gt;&amp;lt;/script&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
加入『分享按鈕』的語法&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;lt;div style=&#39;float:right; margin-left:10px;&#39;&amp;gt;&lt;br /&gt;&amp;lt;a expr:share_url=&#39;data:post.url&#39; href=&#39;http://www.facebook.com/sharer.php&#39; name=&#39;fb_share&#39; type=&#39;box_count&#39;&amp;gt;Share&amp;lt;/a&amp;gt;&amp;lt;script src=&#39;http://static.ak.fbcdn.net/connect.php/js/FB.Share&#39; type=&#39;text/javascript&#39;/&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
附註：div是為了讓分享按鈕靠左，如不需要可移除。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6086919303244795194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6086919303244795194'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/11/bloggerfacebook.html' title='在Blogger中嵌入Facebook分享按鈕'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVsAcQPjaDoA_WULa7FvCdHh-udfv6PfNxCpPbPadQF2ivSY-x7FTF57nDd6-zdl6UflVv2XBuoTwVN46jpNdxS_plRZfWPbtINkdXOlsA_fXQT_M6KW7vJz4CpLasQPDcfM0r_THLQWw/s72-c/myspace_button.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-6860343814545740743</id><published>2011-09-30T02:16:00.000-07:00</published><updated>2011-09-30T02:18:09.209-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Spring MVC + Hibernate JPA @Transactional 沒作用</title><content type='html'>版本： Spring 3 MVC + Hibernate 3.6 JPA&lt;br /&gt;
&lt;br /&gt;
問題： 透過dao對資料庫操作時，無法新增(insert)、修改(update)及刪除(delete)，沒有錯誤訊息，只能做select的動作。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
原因： spring mvc 使用 annotation 時，需要在mvc-config.xml中加入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;context:component-scan base-package=&quot;div.mmncsmm&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在server啟動時，spring初始化的過程中，會掃描div.mmncsmm下的所有類別的annotation，包含@Controller、@Service、@Autowired等。&lt;br /&gt;
但掃描到 @Service 時，@Transactional 還沒被處理，所以Transaction沒有被開啟，dao對資料庫操作時沒有做commit，自然資料沒有被異動。&lt;br /&gt;
&lt;br /&gt;
解決方式：&lt;br /&gt;
&lt;br /&gt;
在載入applicationContext.xml時，先去掃描除了annotation之外的設定，等到載入mvc-config.xml時，在載入annotation的設定。&lt;br /&gt;
&lt;br /&gt;
在mvc-config.xml中，原先是&lt;br /&gt;
&lt;br /&gt;
&amp;lt;context:component-scan base-package=&quot;div.mmncsmm&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
改成&lt;br /&gt;
&lt;br /&gt;
&amp;lt;context:component-scan base-package=&quot;div.mmncsmm&quot; use-default-filters=&quot;false&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;context:&lt;span style=&quot;color: red;&quot;&gt;include&lt;/span&gt;-filter expression=&quot;org.springframework.stereotype.Controller&quot; type=&quot;annotation&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/context:component-scan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
applicationContext.xml中加入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;context:component-scan base-package=&quot;div.mmncsmm&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;context:&lt;span style=&quot;color: red;&quot;&gt;exclude&lt;/span&gt;-filter expression=&quot;org.springframework.stereotype.Controller&quot; type=&quot;annotation&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/context:component-scan&amp;gt; </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6860343814545740743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6860343814545740743'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/09/spring-mvc-hibernate-jpa-transactional.html' title='Spring MVC + Hibernate JPA @Transactional 沒作用'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-6199071822933585244</id><published>2011-08-31T03:18:00.000-07:00</published><updated>2011-08-31T03:20:18.997-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="solr"/><title type='text'>SOLR - 部署（一）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoJOurhNNUvGnFPh5vBeUR7u6Wn9xXo0998lacFkaADvdsiLMPxt7s1WK1Q2eZ70opXtH4Gs0AWt936VdXcZK9RqIglnIdNoGbRggN3unrcDiIhFMNnW2FUJFDeLKkKDI5vbIpPKw6tUk/s1600/solr.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoJOurhNNUvGnFPh5vBeUR7u6Wn9xXo0998lacFkaADvdsiLMPxt7s1WK1Q2eZ70opXtH4Gs0AWt936VdXcZK9RqIglnIdNoGbRggN3unrcDiIhFMNnW2FUJFDeLKkKDI5vbIpPKw6tUk/s1600/solr.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
簡介：&lt;br /&gt;
開發網站一定會有搜尋的功能，資料量小的情況下，可以直接用sql查詢，但資料量一大很快就遇到了效能問題，或是想要做全文檢索。&lt;br /&gt;
因此就會導入搜尋引擎，要用就要用最多人用的，遇到問題也比較快找到解，開放原始碼中目前最多人使用的是Lucene，&lt;br /&gt;
而SOLR就是Lucene的web版，還沒玩過的快來試試看。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
開發環境：&lt;br /&gt;
Windows Server 2003&lt;br /&gt;
Tomcat6&lt;br /&gt;
SOLR 3.3&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
配置：&lt;br /&gt;
&lt;br /&gt;
1. &lt;a href=&quot;http://lucene.apache.org/solr/&quot;&gt;下載 apache-solr-3.3.0&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
2. 將..\apache-solr-3.3.0\dist下的apache-solr-3.3.0.war，改名為solr33.war，並且放置在D:\tomcat6\webapps下。&lt;br /&gt;
&lt;br /&gt;
3. 在D:\tomcat6\conf\Catalina\localhost下，新增solr33.xml，內容如下，其中也包含設定檔的路徑D:\tomcat6\solr\。
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;Context path=&quot;/solr33&quot; docBase=&quot;solr33&quot; debug=&quot;0&quot; crossContext=&quot;true&quot; &amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Environment name=&quot;solr/home&quot; type=&quot;java.lang.String&quot; value=&quot;D:\tomcat6\solr\&quot; override=&quot;true&quot; /&amp;gt;
&amp;lt;/Context&amp;gt;
&lt;/pre&gt;

&lt;br /&gt;
4. 將..\apache-solr-3.3.0\example\solr\的conf資料夾，整個複製到D:\tomcat6\solr\下。&lt;br /&gt;
&lt;br /&gt;
5. 啟動tomcat&lt;br /&gt;
&lt;br /&gt;
6. 若沒發生錯誤，連到 &lt;a href=&quot;http://localhost:8080/solr/admin.jsp&quot;&gt;http://localhost:8080/solr/admin.jsp&lt;/a&gt; 有畫面即成功。&lt;br /&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6199071822933585244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6199071822933585244'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/08/solr.html' title='SOLR - 部署（一）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoJOurhNNUvGnFPh5vBeUR7u6Wn9xXo0998lacFkaADvdsiLMPxt7s1WK1Q2eZ70opXtH4Gs0AWt936VdXcZK9RqIglnIdNoGbRggN3unrcDiIhFMNnW2FUJFDeLKkKDI5vbIpPKw6tUk/s72-c/solr.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-2800808848713489567</id><published>2011-08-12T03:55:00.000-07:00</published><updated>2011-08-12T03:59:18.881-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><title type='text'>一對多的資料表串接成一個欄位</title><content type='html'>原因：我要組成一張view，但是關聯是一對多的資料表，這時要將其中一個欄位用分隔符號串成一個欄位。看例子會比較好懂。&lt;br /&gt;
&lt;br /&gt;
例子：如下圖是參考資料(Reference)以及實體檔案(RFile)的關聯表，一筆參考資料，將有多個實體檔，現在我要將這兩張表串成一張view，而且rid不能重複，FileName用分號作區隔串成一個欄位。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJXWwDRylABMWC8Z7rBZGi86ebXbLwzWsrKsgrfQsxvs3heWvDn6yAh_hbfg8GsevSX8YjvhohG4Hj9043MEuTwLsndts5bf87DRNjt7Js94WHr2565MqTJHbilGSgJ0yWm28DXrB8L0/s1600/123.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJXWwDRylABMWC8Z7rBZGi86ebXbLwzWsrKsgrfQsxvs3heWvDn6yAh_hbfg8GsevSX8YjvhohG4Hj9043MEuTwLsndts5bf87DRNjt7Js94WHr2565MqTJHbilGSgJ0yWm28DXrB8L0/s1600/123.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
方法：將FileName用分號作區隔串接成一個字串，需要利用ms sql的純量值函數，來定義串接的function，如下圖。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq1o21U0nixmKEImdYH9uln6XgepxxMV5ytN5jwbHBskCiH1md-7ACeEsvVHuT8WQc8AySfVBHiDAw08uWfQ4v6PYAswCa5MlXDMJpX4VClgHw22HsyMn4BjCVBCBp4e1PBien2cf5Av0/s1600/123.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq1o21U0nixmKEImdYH9uln6XgepxxMV5ytN5jwbHBskCiH1md-7ACeEsvVHuT8WQc8AySfVBHiDAw08uWfQ4v6PYAswCa5MlXDMJpX4VClgHw22HsyMn4BjCVBCBp4e1PBien2cf5Av0/s1600/123.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
傳統作法是用sql的while和point去將FileName一個一個取出來。不過今天發現一個更快的作法，直接執行下面這段sql，即可產生純量值函數。COALESCE和STUFF為sql原生函數，google很容易查到，不在此描述。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO



CREATE FUNCTION [dbo].[GetRFileName]&amp;nbsp; --函數名稱

(

&amp;nbsp;&amp;nbsp;&amp;nbsp; --輸入參數

&amp;nbsp;&amp;nbsp;&amp;nbsp; @Rid int&amp;nbsp;&amp;nbsp;&amp;nbsp; 

)

RETURNS nvarchar(3000)&amp;nbsp; 

AS

BEGIN

&amp;nbsp;&amp;nbsp;&amp;nbsp; --宣告變數

&amp;nbsp;&amp;nbsp;&amp;nbsp; DECLARE @HandleRid nvarchar(3000)

&amp;nbsp;&amp;nbsp;&amp;nbsp; --串接FileName

&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT @HandleRid = COALESCE(@HandleRid,&#39;&#39;) + &#39;;&#39; + [FileName] from RFile where RId =@Rid

&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN STUFF(@HandleRid, 1, 1, &#39;&#39;)

END

&lt;/pre&gt;
&lt;br /&gt;
建立完成後，我們就可以下此sql&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;SELECT RId,Title,Content,PublishDate,dbo.GetRFileName(RId)
FROM Reference 
&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2800808848713489567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/2800808848713489567'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/08/blog-post.html' title='一對多的資料表串接成一個欄位'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJXWwDRylABMWC8Z7rBZGi86ebXbLwzWsrKsgrfQsxvs3heWvDn6yAh_hbfg8GsevSX8YjvhohG4Hj9043MEuTwLsndts5bf87DRNjt7Js94WHr2565MqTJHbilGSgJ0yWm28DXrB8L0/s72-c/123.JPG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-741992093974458524</id><published>2011-07-19T23:46:00.000-07:00</published><updated>2011-07-19T23:49:51.326-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Facebook API for Java - 取得使用者相關資訊 （二）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg47LFhcKJR6GU9AVR2tnYpFTzwo-oOa5Cf2lKdh7bsPir4WeMYyt_qIgZXWLWwFOhCB-MP_LVU42DxPAjYLs4_4UbILc1T08-HWzLHBw13iOOG3Flx3qhOLGtYqPgZL56dKW3S8tAcZoA/s1600/banner_facebook.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg47LFhcKJR6GU9AVR2tnYpFTzwo-oOa5Cf2lKdh7bsPir4WeMYyt_qIgZXWLWwFOhCB-MP_LVU42DxPAjYLs4_4UbILc1T08-HWzLHBw13iOOG3Flx3qhOLGtYqPgZL56dKW3S8tAcZoA/s320/banner_facebook.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
圖片來源：http://www.roars.in/facebook-application-developer-india.html&lt;/div&gt;
&lt;br /&gt;
請先下載 &lt;a href=&quot;http://code.google.com/p/facebook-java-api/&quot;&gt;facebook-java-api &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
需要的jar有三個&lt;br /&gt;
facebook-java-api-3.0.2.jar&lt;br /&gt;
facebook-java-api-schema-3.0.2.jar&lt;br /&gt;
runtime-0.4.1.5.jar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;appID及appSecret接由&lt;a href=&quot;https://developers.facebook.com/apps&quot;&gt;開發人員應用程式&lt;/a&gt;取得 authToken為當驗證FB登入成功時，根據Canvas URL所設定的路徑，導回我們的系統，會自動帶參數auth_token回來。若尚未登入，則跳到fb的登入頁面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
String appID = &quot;XXXXX&quot;;
String appSecret = &quot;XXXXX&quot;;
String authToken= hsrHttpServletRequest.getParameter(&quot;auth_token&quot;);
FacebookJaxbRestClient facebookClient = new FacebookJaxbRestClient(appID, appSecret);

if(authToken!=null){
&amp;nbsp;&amp;nbsp;&amp;nbsp; try {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; facebookClient.auth_getSession(authToken);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FriendsGetResponse friendsResponse = facebookClient.friends_get();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //取得朋友名單
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;long&gt; friends = friendsResponse.getUid();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG.debug(&quot;friends = &quot;+friends.size());
&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; Set&lt;charsequence&gt; fields = new HashSet&lt;charsequence&gt;(); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fields.add(ProfileField.SEX.fieldName()); //性別 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fields.add(ProfileField.NAME.fieldName()); //姓名 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List&lt;user&gt; users = facebookClient.users_getInfo(friends, fields).getUser();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(User user:users) { 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG.debug(user.getSex());
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG.debug(user.getName()); 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (FacebookException e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG.debug(&quot;取資料發生錯誤&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/user&gt;&lt;/charsequence&gt;&lt;/charsequence&gt;&lt;/long&gt;&lt;/pre&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/741992093974458524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/741992093974458524'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/07/facebook-api-for-java.html' title='Facebook API for Java - 取得使用者相關資訊 （二）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg47LFhcKJR6GU9AVR2tnYpFTzwo-oOa5Cf2lKdh7bsPir4WeMYyt_qIgZXWLWwFOhCB-MP_LVU42DxPAjYLs4_4UbILc1T08-HWzLHBw13iOOG3Flx3qhOLGtYqPgZL56dKW3S8tAcZoA/s72-c/banner_facebook.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-7022236188482703807</id><published>2011-07-14T21:22:00.000-07:00</published><updated>2013-04-16T18:33:36.763-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="STRUTS2"/><title type='text'>Framework 樣板之Struts2 Annotation + Spring3.1 + Hibernate3.6 JPA （四）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2A-81NUFcNRUtLo-jKWb3gUbNFvJCrYe14LOOfqSwK3LFR4-1WkN86a9YLkdhnrRafIBBLY3SkPQCc3UaEYZzaTVBYjnV2ZrHxqo7gHB1dR01HXrgk5o0-3N8b8GuifnK295aDqGeLlU/s1600/struts2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2A-81NUFcNRUtLo-jKWb3gUbNFvJCrYe14LOOfqSwK3LFR4-1WkN86a9YLkdhnrRafIBBLY3SkPQCc3UaEYZzaTVBYjnV2ZrHxqo7gHB1dR01HXrgk5o0-3N8b8GuifnK295aDqGeLlU/s1600/struts2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
版本：Struts2.2.3 + Spring3.1 + Hibernate3.6&lt;br /&gt;
&lt;br /&gt;
包含：Displaytag、Tiles 、 OpenSessionInView 及 連接DB&lt;br /&gt;
&lt;br /&gt;
資料庫：MS SQL2005&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://draft.blogger.com/blogger.g?blogID=3115329479995633066&quot; name=&quot;more&quot;&gt;&lt;/a&gt;&lt;br /&gt;
Schema：在/BlankS2SH/WebContent/dev/sql.txt，為了方便說明，僅用兩張Table。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
下載： &lt;a href=&quot;http://bit.ly/13dVj9X&quot; target=&quot;_blank&quot;&gt;原始碼&lt;/a&gt; ，可直接從Eclipse import。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struts2.2.3 + Spring3.1 + Hibernate3.6 架構說明：&lt;br /&gt;
&lt;br /&gt;
src下的folder&lt;br /&gt;
&lt;br /&gt;
struts.properties：細部設定。&lt;br /&gt;
&lt;br /&gt;
struts.xml：設定action forward。&lt;br /&gt;
&lt;br /&gt;
action：DispatchDemoAction及ExampleAction繼承ActionSupport。&lt;br /&gt;
&lt;br /&gt;
common：共用變數。&lt;br /&gt;
&lt;br /&gt;
persistence：Hibernate dao，此資料夾階由Myeclipse自動產生。&lt;br /&gt;
&lt;br /&gt;
service：主要的商業邏輯寫在這，依照功能切分不同服務。ex：MemberService包含會員的新增、刪除和修改等。&lt;br /&gt;
&lt;br /&gt;
utility：獨立元件，可直接搬移至其他專案。ex：檔案下載、發送郵件。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WEB-INF下的folder&lt;br /&gt;
&lt;br /&gt;
config：必要設定檔。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex： applicationContext.xml，Hibernate基本設定檔。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataSourceService.xml，DB登入帳密，如果不想用c3p0的connection pool，直接更換此檔即可。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tiles-front.xml，tiles2設定。&lt;br /&gt;
&lt;br /&gt;
jsp：主要有三部分，一.layout為tiles的框架；二.front為所有jsp頁面；三. common共用頁面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
細部說明：&lt;br /&gt;
Struts2比1的設定檔少了很多，只需要設定action forward。另外又與Spring3整合，可以用annotation取代注入的xml。與SSH相比少了DAOService.xml、SearchService.xml及BaseService.xml，不管對於新手還是老手，開發的速度都會快很多。&lt;br /&gt;
與Spring3 MVC相比，只是將RequestMapping，統一寫到struts.xml中。所要寫的設定是差不多的。&lt;br /&gt;
我個人是比較喜歡把forward的路徑寫在同一個地方，要改的時候也比較方便。&lt;br /&gt;
有人可能會問，共同開發時，大家都寫在同一個struts.xml，同步的時候會沖到很麻煩。&lt;br /&gt;
這個問題切成多個struts.xml就可以避免了。&lt;br /&gt;
&lt;br /&gt;
網路上已經很多人討論過Struts2及Spring3的優缺點了。&lt;br /&gt;
&lt;br /&gt;
我認為最重要的是你們團隊中，對哪一種framework&lt;span style=&quot;color: red;&quot;&gt;最快熟悉或是最快上手&lt;/span&gt;，來決定要用哪種。&lt;br /&gt;
&lt;br /&gt;
我在這列出幾點：&lt;br /&gt;
&lt;br /&gt;
1. 維護性：Spring3自由度太高導致維護性比Struts2低。&lt;br /&gt;
&lt;br /&gt;
2. 元件：Spring3只有JSTL可以用。Struts2有ONGL及DOJO等，還有許多自行開的元件可以使用。&lt;br /&gt;
&lt;br /&gt;
3. REST支援度：Spring3完全支援。Struts2不支援多參數。&lt;br /&gt;
&lt;br /&gt;
4. 版本：Spring3更新速度相當快，版本間的相容性也很高。Struts2可能太過龐大，通常要一段時間才會更新。&lt;br /&gt;
&lt;br /&gt;
Tiles設定：&lt;br /&gt;
需要tiles-api-2.2.2.jar、tiles-core-2.2.2.jar、tiles-jsp-2.2.2.jar、tiles-servlet-2.2.2.jar、tiles-template-2.2.2.jar&lt;br /&gt;
&lt;br /&gt;
1. 在web.xml加上&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;listener&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;listener-class&amp;gt;org.apache.struts2.tiles.StrutsTilesListener&amp;lt;/listener-class&amp;gt;
&amp;lt;/listener&amp;gt;
&amp;lt;context-param&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;param-name&amp;gt;org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG&amp;lt;/param-name&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;param-value&amp;gt;&amp;lt;!-- 多個tiles文件以逗號隔開 --&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/WEB-INF/tiles/tiles-defs.xml
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 在struts.xml加上&lt;br /&gt;
&amp;lt;package name=&quot;default&quot; extends=&quot;tiles-default&quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
常見問題：&lt;br /&gt;
&lt;br /&gt;
1. dispatch沒有作用&lt;br /&gt;
&lt;br /&gt;
檢查struts.properties中struts.enable.DynamicMethodInvocation要設成true&lt;br /&gt;
&lt;br /&gt;
struts.xml的action forward要寫成&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;action name=&quot;dispatchDemo_*&quot; method=&quot;{1}&quot; class=&quot;div.mmncsmm.action.DispatchDemoAction&quot;&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result name=&quot;load&quot; type=&quot;tiles&quot;&amp;gt;dispatchDemo.load&amp;lt;/result&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result name=&quot;save&quot; type=&quot;tiles&quot;&amp;gt;dispatchDemo.save&amp;lt;/result&amp;gt;
&amp;lt;/action&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
2. autowire沒作用&lt;br /&gt;
&lt;br /&gt;
這個地方我卡了很久，最後才找到，原來在applicationContext.xml要加上&lt;br /&gt;
&amp;lt;context:component-scan base-package=&quot;div.mmncsmm&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. tiles沒作用&lt;br /&gt;
&lt;a href=&quot;http://mmncsmm.blogspot.com/2011/07/tile2.html&quot;&gt;請看&lt;/a&gt; </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/7022236188482703807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/7022236188482703807'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/07/framework-struts2-annotation-spring31.html' title='Framework 樣板之Struts2 Annotation + Spring3.1 + Hibernate3.6 JPA （四）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2A-81NUFcNRUtLo-jKWb3gUbNFvJCrYe14LOOfqSwK3LFR4-1WkN86a9YLkdhnrRafIBBLY3SkPQCc3UaEYZzaTVBYjnV2ZrHxqo7gHB1dR01HXrgk5o0-3N8b8GuifnK295aDqGeLlU/s72-c/struts2.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-3108239765278994323</id><published>2011-07-13T03:43:00.000-07:00</published><updated>2011-07-14T21:32:10.471-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Facebook API for Java - Login （一）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8Yw26j6yiJ_yWhgDmA5gc-WhRzjh1qTu4iSUWBihFm5GsTfF5vcjpGsY1g7KzXrRgoQpKdQQdwFwndt3iuloAkcAcueck89SbcHUhScUHiRdG6maL3rRW3eQ_IWovaVqa9f9Et2QC-Q/s1600/sucure+facebook+account1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8Yw26j6yiJ_yWhgDmA5gc-WhRzjh1qTu4iSUWBihFm5GsTfF5vcjpGsY1g7KzXrRgoQpKdQQdwFwndt3iuloAkcAcueck89SbcHUhScUHiRdG6maL3rRW3eQ_IWovaVqa9f9Et2QC-Q/s1600/sucure+facebook+account1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;最近幾乎每個網站都結合Facebook login，Facebook API是現在很熱門的東西，上網看了其他人的教學，發現Facebook改版太快了，寫法也不一樣了。所以自己來發一篇&lt;br /&gt;
&lt;br /&gt;
1. 先加入&lt;a href=&quot;https://developers.facebook.com/apps&quot;&gt;開發人員應用程式 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. 右上，建立新的應用程式&lt;br /&gt;
&lt;br /&gt;
3. 填入Canvas URL，這是登入後，要導回自己的系統的URL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ys0cr7TvPBuU-TBPVnMdEwZAIpqqnW1atLMFV1NwT9y18fljgrmuIf3C6F9oCJkc31M7slf1Vek7NM1eKoq9OFLDbNgk_hMtOM0b_lI0jGzkyuRqBPHJR_HMANo8wfSdfwuV12DUd98/s1600/fb.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;411&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0ys0cr7TvPBuU-TBPVnMdEwZAIpqqnW1atLMFV1NwT9y18fljgrmuIf3C6F9oCJkc31M7slf1Vek7NM1eKoq9OFLDbNgk_hMtOM0b_lI0jGzkyuRqBPHJR_HMANo8wfSdfwuV12DUd98/s640/fb.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
接下來到登入的jsp頁面，加入登入按鈕，方法有兩種&lt;br /&gt;
&lt;br /&gt;
1. url&lt;br /&gt;
&amp;lt;a href=&quot;http://www.facebook.com/login.php?api_key=XXXXXXX&amp;amp;v=1.0&quot;&amp;gt;Login&amp;lt;/a&amp;gt;&lt;br /&gt;
紅色的部份請改成App ID&lt;br /&gt;
&lt;br /&gt;
2. FBML http://developers.facebook.com/docs/reference/fbml/&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&amp;lt;script src=&quot;http://connect.facebook.net/en_US/all.js#appId=&lt;span style=&quot;color: red;&quot;&gt;XXXXXXX&lt;/span&gt;&amp;amp;xfbml=1&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;div id=&quot;fb-root&quot;/&amp;gt;
&amp;lt;fb:login-button show-faces=&quot;true&quot; width=&quot;200&quot; max-rows=&quot;1&quot;&amp;gt;&amp;lt;/fb:login-button&amp;gt;
&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3108239765278994323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3108239765278994323'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/07/facebook-api-for-java-login.html' title='Facebook API for Java - Login （一）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8Yw26j6yiJ_yWhgDmA5gc-WhRzjh1qTu4iSUWBihFm5GsTfF5vcjpGsY1g7KzXrRgoQpKdQQdwFwndt3iuloAkcAcueck89SbcHUhScUHiRdG6maL3rRW3eQ_IWovaVqa9f9Et2QC-Q/s72-c/sucure+facebook+account1.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-1001825112587194172</id><published>2011-07-05T21:31:00.000-07:00</published><updated>2013-04-16T18:35:24.652-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Framework 樣板之Spring3.1 MVC Annotation + Hibernate3.6 JPA（三）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimDRpOXAGAgHCWqVCC9T7Bej_sTTGpNWZeie61caJqZyvJKPkJ43ZD_3oC-p8ZD9QqpEJmQx32qaWDXF188Va0tKta_Sv53NOmz76vysdARmVZrGf9Tpbir7YZaaKhBaulqqLcGIiBAHE/s1600/123.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimDRpOXAGAgHCWqVCC9T7Bej_sTTGpNWZeie61caJqZyvJKPkJ43ZD_3oC-p8ZD9QqpEJmQx32qaWDXF188Va0tKta_Sv53NOmz76vysdARmVZrGf9Tpbir7YZaaKhBaulqqLcGIiBAHE/s1600/123.PNG&quot; true=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align=&quot;left&quot; class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;left&quot; class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
﻿&lt;/div&gt;
&lt;div align=&quot;left&quot;&gt;
版本：Spring3.1 + Hibernate3.6&lt;br /&gt;
&lt;br /&gt;
包含：Displaytag、Tiles 、 OpenSessionInView 及 連接DB&lt;br /&gt;
&lt;br /&gt;
資料庫：MS SQL2005 &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Schema：在/BlankSpring3/WebContent/dev/sql.txt，為了方便說明，僅用兩張Table。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; true=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
下載： &lt;a href=&quot;http://bit.ly/YtEfpg&quot; target=&quot;_blank&quot;&gt;原始碼&lt;/a&gt; ，可直接從Eclipse import。&lt;br /&gt;
&lt;br /&gt;
﻿ &lt;br /&gt;
Spring3 MVC + Hibernate3 JPA架構說明：&lt;br /&gt;
src下的folder&lt;br /&gt;
&lt;br /&gt;
bean：提供給controller使用的javabean。&lt;br /&gt;
&lt;br /&gt;
controller：提供不同RequestMapping的實作方式，及回傳至頁面方式作參考。&lt;br /&gt;
&lt;br /&gt;
persistence：Hibernate dao，此資料夾階由Myeclipse自動產生。&lt;br /&gt;
&lt;br /&gt;
service：主要的商業邏輯寫在這，依照功能切分不同服務。ex：MemberService包含會員的新增、刪除和修改等。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WEB-INF下的folder&lt;br /&gt;
&lt;br /&gt;
config：必要設定檔。ex： applicationContext.xml，Hibernate基本設定檔。&lt;br /&gt;
&lt;br /&gt;
DataSourceService.xml，DB登入帳密，如果不想用c3p0的connection pool，直接更換此檔即可。&lt;br /&gt;
&lt;br /&gt;
mvc-config.xml，Spring3 基本設定。&lt;br /&gt;
&lt;br /&gt;
tiles-front.xml，tiles2設定。&lt;br /&gt;
&lt;br /&gt;
jsp：主要有三部分，一.layout為tiles的框架；二.front為所有jsp頁面；三. common共用頁面。&lt;br /&gt;
&lt;br /&gt;
細部說明：&lt;br /&gt;
Spring3 MVC 主要的優點就是，用annotation取代控制流程及注入的xml，幾乎可以說是0配置。&lt;br /&gt;
service：將service implement class加上@Service，以及要注入的dao，加上@Autowired即可。可以不用再寫DAOService.xml。&lt;br /&gt;
&lt;br /&gt;
controller：將每個controller加上@Controller、@RequestMapping，以及要注入的service，加上@Autowired即可。可以不用再寫BaseService.xml、struts-config.xml。&lt;br /&gt;
&lt;br /&gt;
處理client side request 方式&lt;br /&gt;
1. 說明：request method必須是get（若要用post就改成RequestMethod.POST），且參數要帶有method=load。&lt;br /&gt;
@RequestMapping(params=&quot;method=load&quot;,method = RequestMethod.GET)&lt;br /&gt;
public ModelAndView load() {...}&lt;br /&gt;
&lt;br /&gt;
2. 說明：url 結尾必須要是xxx/login，才會執行此method。HttpServletRequest及HttpServletResponse這兩個參數不一定需要。Users為javabean，會自動將參數塞到bean中，類似struts的formbean。&lt;br /&gt;
&lt;br /&gt;
@RequestMapping(value=&quot;/login&quot;)&lt;br /&gt;
public String test(HttpServletRequest request, HttpServletResponse response,Users userinfo){...}&lt;br /&gt;
3. 說明：url為xxx/{id}，{id}作為傳遞的參數，接收參數必須加上@PathVariable。&lt;br /&gt;
&lt;br /&gt;
@RequestMapping(value = &quot;/{id}&quot;,method=RequestMethod.GET)&lt;br /&gt;
public ModelAndView helloWorld(@PathVariable Long id) {...}&lt;br /&gt;
&lt;br /&gt;
Tiles設定：&lt;br /&gt;
1. 在mvc-config.xml加入&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;bean id=&quot;tilesConfigurer&quot; 
 class=&quot;org.springframework.web.servlet.view.tiles2.TilesConfigurer&quot;&amp;gt;
 &amp;lt;property name=&quot;definitions&quot;&amp;gt;
  &amp;lt;list&amp;gt;
   &amp;lt;value&amp;gt;/WEB-INF/config/tiles-front.xml&amp;lt;/value&amp;gt;
  &amp;lt;/list&amp;gt;
 &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;bean class=&quot;org.springframework.web.servlet.view.ContentNegotiatingViewResolver&quot;&amp;gt;
 &amp;lt;property name=&quot;viewResolvers&quot;&amp;gt;
  &amp;lt;list&amp;gt;
   &amp;lt;bean id=&quot;tilesViewResolver&quot;
    class=&quot;org.springframework.web.servlet.view.UrlBasedViewResolver&quot;&amp;gt;
    &amp;lt;property name=&quot;viewClass&quot;
     value=&quot;org.springframework.web.servlet.view.tiles2.TilesView&quot; /&amp;gt;
    &amp;lt;property name=&quot;order&quot; value=&quot;1&quot; /&amp;gt;
   &amp;lt;/bean&amp;gt;
   &amp;lt;bean id=&quot;viewResolver&quot; class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&amp;gt;
    &amp;lt;property name=&quot;prefix&quot; value=&quot;/jsp/&quot; /&amp;gt;
    &amp;lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot; /&amp;gt;
   &amp;lt;/bean&amp;gt;
  &amp;lt;/list&amp;gt;
 &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
2. 在/WEB-INF/config/增加tiles-front.xml，範例請下載原始碼。&lt;br /&gt;
&lt;br /&gt;
注意事項：&lt;a href=&quot;http://mmncsmm.blogspot.com/2011/07/tile2.html&quot;&gt;請看&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1001825112587194172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/1001825112587194172'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/07/framework-spring31-mvc-annotation.html' title='Framework 樣板之Spring3.1 MVC Annotation + Hibernate3.6 JPA（三）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimDRpOXAGAgHCWqVCC9T7Bej_sTTGpNWZeie61caJqZyvJKPkJ43ZD_3oC-p8ZD9QqpEJmQx32qaWDXF188Va0tKta_Sv53NOmz76vysdARmVZrGf9Tpbir7YZaaKhBaulqqLcGIiBAHE/s72-c/123.PNG" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-6296278375405270775</id><published>2011-07-05T21:13:00.000-07:00</published><updated>2011-07-05T21:24:38.206-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="STRUTS2"/><title type='text'>Tile2 注意事項</title><content type='html'>官方網站：&lt;a href=&quot;http://tiles.apache.org/&quot;&gt;http://tiles.apache.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
需要tiles-api-2.2.2.jar、tiles-core-2.2.2.jar、tiles-jsp-2.2.2.jar、tiles-servlet-2.2.2.jar、tiles-template-2.2.2.jar&lt;br /&gt;
&lt;br /&gt;
問題：&lt;br /&gt;
java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/TilesListener&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
解決方式：&lt;br /&gt;
在tiles2.0.x是包在tiles-core-2.0.x.jar中，但在tiles2.2.x是包在tiles-servlet-2.2.x.jar，所以要記得加入喔。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6296278375405270775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6296278375405270775'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/07/tile2.html' title='Tile2 注意事項'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-8169681023445503469</id><published>2011-06-30T03:22:00.000-07:00</published><updated>2011-08-04T03:01:04.616-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><title type='text'>Framework 樣板之Struts1 + Spring3 + Hibernate3 JPA教學（二）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKajZC9UjMHDYDYW5XtHMsopufH6f0fzfid1j3XrDwQ2pnmjgaTI15tsa-XFlL91AiOj0SE4L_pmn9WvIFVu7tXUP2LtMtp1fE82YcEOwfEP9b73rdVWfowVVzgnWK4RPYZeYyDuOOQSo/s1600/thumb.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKajZC9UjMHDYDYW5XtHMsopufH6f0fzfid1j3XrDwQ2pnmjgaTI15tsa-XFlL91AiOj0SE4L_pmn9WvIFVu7tXUP2LtMtp1fE82YcEOwfEP9b73rdVWfowVVzgnWK4RPYZeYyDuOOQSo/s1600/thumb.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
版本：Struts1.3.10 + Spring3.1 + Hibernate3.6 &lt;span style=&quot;color: red;&quot;&gt;JPA&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
包含：Displaytag、Tiles 、 OpenSessionInView 及 連接DB&lt;br /&gt;
&lt;br /&gt;
資料庫：MS SQL2005 &lt;br /&gt;
&lt;br /&gt;
Schema：在/HibernateJPA/WebContent/dev/sql.txt，為了方便說明，僅用兩張Table。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
下載： &lt;a href=&quot;http://mmncsmm01.appspot.com/redirect?mode=2&quot;&gt;原始碼&lt;/a&gt; ，可直接從Eclipse import。&lt;br /&gt;
SSH(JPA)架構說明&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
主要架構與上一篇相同，僅列出差異的部份&lt;br /&gt;
&lt;br /&gt;
src下的folder&lt;br /&gt;
&lt;br /&gt;
persistence：Hibernate dao，此資料夾階由Myeclipse自動產生。&lt;br /&gt;
&lt;br /&gt;
config：spring物件注入，不開放給外部修改的xml。&lt;br /&gt;
&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; ex：applicationContext.xml，Hibernate JPA基本設定檔，及transactionManager設定&lt;br /&gt;
&lt;br /&gt;
META-INF：persistence.xml&lt;br /&gt;
&lt;br /&gt;
比較Hibernate及Hibernate JPA：兩種我都是MyEclipse來產生dao&lt;br /&gt;
&lt;br /&gt;
JPA優點：&lt;br /&gt;
&lt;br /&gt;
1. dao的method有分頁的參數&lt;br /&gt;
&lt;br /&gt;
2. hbm.xml都變成annotation&lt;br /&gt;
&lt;br /&gt;
缺點：&lt;br /&gt;
&lt;br /&gt;
1. 當欄位的pk為流水號時，需要在dto增加@GeneratedValue(strategy = GenerationType.AUTO)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注意事項：&lt;br /&gt;
&lt;br /&gt;
JPA的OpenEntityManagerInViewFilter是使用&lt;br /&gt;
&lt;br /&gt;
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8169681023445503469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8169681023445503469'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/06/framework-struts1-spring3-hibernate3.html' title='Framework 樣板之Struts1 + Spring3 + Hibernate3 JPA教學（二）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKajZC9UjMHDYDYW5XtHMsopufH6f0fzfid1j3XrDwQ2pnmjgaTI15tsa-XFlL91AiOj0SE4L_pmn9WvIFVu7tXUP2LtMtp1fE82YcEOwfEP9b73rdVWfowVVzgnWK4RPYZeYyDuOOQSo/s72-c/thumb.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-6581589730360484458</id><published>2011-06-17T03:58:00.000-07:00</published><updated>2011-08-04T03:01:20.771-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><title type='text'>Framework 樣板之Struts1 + Spring3 + Hibernate3教學（一）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFXsXQGSCEJuVtcNEwLkZOMPhzNjbHC7kFJHrrgIqHprm3rn5k79KAiyKRsmDXiDR-PxnoFn7IG3YAjm1O59XfpznX1id53COV5_2eBHP_o8Q02dJzrbN5WD3oOMWRkmpsod9I01K_3vU/s1600/struts.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFXsXQGSCEJuVtcNEwLkZOMPhzNjbHC7kFJHrrgIqHprm3rn5k79KAiyKRsmDXiDR-PxnoFn7IG3YAjm1O59XfpznX1id53COV5_2eBHP_o8Q02dJzrbN5WD3oOMWRkmpsod9I01K_3vU/s1600/struts.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
版本：Struts1.3.10&amp;nbsp;+ Spring3.1&amp;nbsp;+ Hibernate3.6&lt;br /&gt;
&lt;br /&gt;
包含：Displaytag、Tiles 、 OpenSessionInView 及 連接DB&lt;br /&gt;
資料庫：MS SQL2005 &lt;br /&gt;
&lt;br /&gt;
Schema：在\BlankSSH\dev\sql.txt，為了方便說明，僅用兩張Table。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDFL2F6Qyaxmll1jZx7zpTlhv5I4bgdIz27hojQEXhd1pDJWfBIZ7CL3lgaDYCB1eATWOBhYCDK97HB46U5NAQOqsZw52EDp1oLN0estFHWGlJj1suhZSvW4ykMsfdBdrtH2uuV-nlG2Q/s1600/Test.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
下載： &lt;a href=&quot;http://mmncsmm01.appspot.com/redirect?mode=1&quot; target=&quot;_blank&quot;&gt;原始碼&lt;/a&gt;&amp;nbsp;，可直接從Eclipse import。&lt;br /&gt;
&lt;br /&gt;
SSH架構說明：&lt;br /&gt;
&lt;br /&gt;
src下的folder&lt;br /&gt;
action：DispatchDemoAction繼承BaseAction，ExampleAction繼承Action，提供兩種寫法做參考，即可直接get service，不用再呼叫spring WebApplicationContext。&lt;br /&gt;
&lt;br /&gt;
common：共用變數及BaseAction。BaseAction中繼承DispatchAction，也可將seesion處理的方法寫在此。&lt;br /&gt;
&lt;br /&gt;
filter：簡易登入權限設定。&lt;br /&gt;
&lt;br /&gt;
formbean：提供給action使用。&lt;br /&gt;
&lt;br /&gt;
persistence：Hibernate dao，此資料夾階由Myeclipse自動產生。&lt;br /&gt;
&lt;br /&gt;
service：主要的商業邏輯寫在這，依照功能切分不同服務。&lt;br /&gt;
&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; ex：MemberService包含會員的新增、刪除和修改等。&lt;br /&gt;
&lt;br /&gt;
utility：獨立元件，可直接搬移至其他專案。ex：檔案下載、發送郵件。&lt;br /&gt;
&lt;br /&gt;
config：spring物件注入，不開放給外部修改的xml。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex：LoginCheckerFilter.xml，登入權限&lt;br /&gt;
&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; DAOService.xml，每個Service要用到的dao&lt;br /&gt;
&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; BaseService.xml，所有的Service&lt;br /&gt;
&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; applicationContext.xml，Hibernate基本設定檔&lt;br /&gt;
&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; TransactionManager.xml，用OpenSessionInView必需&lt;br /&gt;
&lt;br /&gt;
WEB-INF下的folder&lt;br /&gt;
config：spring物件注入，開放給外部修改的xml，方便於環境異動。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex：DataSourceService.xml，DB登入帳密。&lt;br /&gt;
&lt;br /&gt;
tiles：主要有兩部分，一.layout為tiles的框架，二.page為所有jsp頁面。&lt;br /&gt;
&lt;br /&gt;
細部說明：&lt;br /&gt;
從Service開始說明，所有的xxxService都是interface，由xxxServiceImpl實作，每個service所用到的dao，均定義在DAOService.xml。&lt;br /&gt;
唯一例外的是BaseService，此BaseService注入了所有Service，定義在BaseService.xml，提供給BaseAction使用。&lt;br /&gt;
讀起來好像有點饒舌，看圖應該比較好理解&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQCxIcBehpROZqscwniK8TmzdVeOOshyphenhyphenFSDvHvVGehl1V16aS0uSqfGqUsRkanP-iq1VrgSKDh2H54uzFhWNjWHpgHP09TR6ojTofhAfoh_dfqRJ5nLMzwrH8eHLw4Xkp-uXoLyrS6GmI/s1600/Project.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; i$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQCxIcBehpROZqscwniK8TmzdVeOOshyphenhyphenFSDvHvVGehl1V16aS0uSqfGqUsRkanP-iq1VrgSKDh2H54uzFhWNjWHpgHP09TR6ojTofhAfoh_dfqRJ5nLMzwrH8eHLw4Xkp-uXoLyrS6GmI/s640/Project.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
為什麼我要搞的這麼複雜呢？&lt;br /&gt;
&lt;br /&gt;
當我在寫action需要取得Service時，必須要寫&lt;br /&gt;
ServletContext application = this.getServlet().getServletContext();&lt;br /&gt;
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(application);&lt;br /&gt;
xxxService serice = (xxxService) wac.getBean(&quot;xxxService&quot;);&lt;br /&gt;
每次都要寫這麼一大串，感覺好煩，我又常常忘記getBean裡面要填的名稱，而且還要強制轉型。&lt;br /&gt;
所以最後將所有Service都注入BaseService，再BaseAction中只要寫一次getBean(&quot;BaseService&quot;)，&lt;br /&gt;
在DispatchDemoAction中我只要寫this.getMemberService()，就可以取得MemberService，多方便。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tiles設定：&lt;br /&gt;
&lt;br /&gt;
需要struts-tiles-1.3.10.jar&lt;br /&gt;
1. 在struts-config.xml加入&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;plug-in className=&quot;org.apache.struts.tiles.TilesPlugin&quot;&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;set-property property=&quot;definitions-config&quot; value=&quot;/WEB-INF/tiles/tiles-defs.xml&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp; &amp;lt;set-property property=&quot;moduleAware&quot; value=&quot;true&quot; /&amp;gt;
&amp;lt;/plug-in&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;brush: xml&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;brush: xml&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
2. 在/WEB-INF/tiles/增加tiles-defs.xml，範例請下載原始碼。&lt;br /&gt;
&lt;br /&gt;
3. struts-config.xml中的action forward path也要修改，要與tiles的definition name做對應。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注意事項：&lt;br /&gt;
在web.xml載入這些xml是有順序性的，要注意。&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;context-param&amp;gt;
&amp;nbsp;&amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;
&amp;nbsp;&amp;lt;param-value&amp;gt;
&amp;nbsp;&amp;nbsp;classpath*:config/applicationContext/LoginCheckerFilter.xml,
&amp;nbsp;&amp;nbsp;classpath*:config/applicationContext/TransactionManager.xml,
&amp;nbsp;&amp;nbsp;/WEB-INF/config/applicationContext/DataSourceService.xml,
&amp;nbsp;&amp;nbsp;classpath*:config/applicationContext/applicationContext.xml,
&amp;nbsp;&amp;nbsp;classpath*:config/applicationContext/DAOService.xml,
&amp;nbsp;&amp;nbsp;/WEB-INF/config/applicationContext/SearchService.xml,
&amp;nbsp;&amp;nbsp;classpath*:config/applicationContext/BaseService.xml
&amp;nbsp;&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;如有疑問，歡迎提出，也請大家多多指教</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6581589730360484458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/6581589730360484458'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/06/framework-ssh.html' title='Framework 樣板之Struts1 + Spring3 + Hibernate3教學（一）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFXsXQGSCEJuVtcNEwLkZOMPhzNjbHC7kFJHrrgIqHprm3rn5k79KAiyKRsmDXiDR-PxnoFn7IG3YAjm1O59XfpznX1id53COV5_2eBHP_o8Q02dJzrbN5WD3oOMWRkmpsod9I01K_3vU/s72-c/struts.gif" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-5601494899433686988</id><published>2011-06-16T03:42:00.000-07:00</published><updated>2011-07-14T21:30:17.275-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><title type='text'>Framework 樣板（序）</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dFCJUm7lwHrVNADax_1NDOrBzC1dsroQmTfP7q_AGUwOimhgswMMZ_S4SgS2BilZZy5kND8evmlq8SL8zMUbc1IZq5ZK5DdoY7ZTOoH41fBMxTSzizmAuBTUB7KByL31nqS-H1B9WNU/s1600/Web-framework1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dFCJUm7lwHrVNADax_1NDOrBzC1dsroQmTfP7q_AGUwOimhgswMMZ_S4SgS2BilZZy5kND8evmlq8SL8zMUbc1IZq5ZK5DdoY7ZTOoH41fBMxTSzizmAuBTUB7KByL31nqS-H1B9WNU/s1600/Web-framework1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
圖片來源：&lt;a href=&quot;http://www.zeroturnaround.com/java-ee-productivity-report-2011/&quot;&gt;http://www.zeroturnaround.com/java-ee-productivity-report-2011/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
﻿&lt;/div&gt;
這是2011年初國外網站統計的結果，Spring和Hibernate會成為前兩名，因為這兩種可以搭配其它的Framework一起整合使用，所以人氣如此高。GWT短短幾年就超越STRUTS衝到第三名，來勢洶洶。STRUT很難在成長，但目前有太多專案用此架構，會維持在10％。STRUTS2自從2007年推出以來，有漸漸在成長中，今年推出2.2版，應該是更加穩定。這幾種Framework你能不學嘛？&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
起源：&lt;br /&gt;
由於每次開發新專案，不管用什麼framework都要花很多時間做基本的設定，像是一直出現ClassNotFound，就要去找缺少的jar檔；xml少設定一行，啟動時就出現error，找這些問題相當浪費時間。要是能有一個基本配置完成及用到的jar都沒有缺的專案有多好。這些專案都是我一開始開發時所使用的，只需要改專案名稱即可。&lt;br /&gt;
&lt;br /&gt;
另外也可以給新手當做一個參考的範例，希望新手可以少路。&lt;br /&gt;
&lt;br /&gt;
在此我將會分享四種較多人用的framework，包含原始檔&lt;br /&gt;
&lt;br /&gt;
1. &lt;a href=&quot;http://mmncsmm.blogspot.com/2011/06/framework-ssh.html&quot;&gt;Struts 1.3.10&amp;nbsp;+ Spring 3.1&amp;nbsp;+ Hibernate 3.6&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. &lt;a href=&quot;http://mmncsmm.blogspot.com/2011/06/framework-struts1-spring3-hibernate3.html&quot;&gt;Struts 1.3.10 + Spring 3.1 + Hibernate 3.6 JPA&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3. &lt;a href=&quot;http://mmncsmm.blogspot.com/2011/07/framework-spring31-mvc-annotation.html&quot;&gt;Spring 3.1 MVC Annotation + Hibernate 3.6 JPA&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
4. &lt;a href=&quot;http://mmncsmm.blogspot.com/2011/07/framework-struts2-annotation-spring31.html&quot;&gt;Struts 2.2.3 Annotation + Spring 3.1 + Hibernate 3.6 JPA&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
四種共同有配置有Displaytag、Tiles 、 OpenSessionInView 及 連接DB&lt;br /&gt;
&lt;br /&gt;
開發環境：&lt;br /&gt;
JDK 1.6&lt;br /&gt;
Tomcat 6&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
MyEclipse 9&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5601494899433686988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5601494899433686988'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/06/framework.html' title='Framework 樣板（序）'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dFCJUm7lwHrVNADax_1NDOrBzC1dsroQmTfP7q_AGUwOimhgswMMZ_S4SgS2BilZZy5kND8evmlq8SL8zMUbc1IZq5ZK5DdoY7ZTOoH41fBMxTSzizmAuBTUB7KByL31nqS-H1B9WNU/s72-c/Web-framework1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-638283651183658214</id><published>2011-06-16T02:50:00.000-07:00</published><updated>2011-06-16T02:50:20.661-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Spring3 MVC 延遲加載(Lazy Load)的問題</title><content type='html'>環境：Spring3 MVC + Hibernate3.6 JPA&lt;br /&gt;
&lt;br /&gt;
錯誤訊息：&lt;br /&gt;
&lt;br /&gt;
org.hibernate.LazyInitializationException: could not initialize proxy - no Session&lt;br /&gt;
&lt;br /&gt;
原因：hibernate session可由spring在控制，hibernate允許對關聯對象、屬性進行延遲加載，但是必須保證延遲加載的操作限於同一個Hibernate Session 範圍之內進行。若Session關閉後，會導致延遲加載資料的訪問異常。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
解決方式：&lt;br /&gt;
使用OpenEntityManagerInViewFilter，注意這裡所使用的Filter跟hibernate不一樣&lt;br /&gt;
&lt;br /&gt;
1. 在web.xml加上&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&lt;filter&gt;
&amp;nbsp;&amp;nbsp; &lt;filter-name&gt;OpenSessionInViewFilter&lt;/filter-name&gt;
&amp;nbsp;&amp;nbsp; &lt;filter-class&gt;org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&amp;nbsp;&amp;nbsp; &lt;filter-name&gt;OpenSessionInViewFilter&lt;/filter-name&gt;
&amp;nbsp;&amp;nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 若再出現下面錯誤&lt;br /&gt;
&lt;br /&gt;
錯誤訊息：&lt;br /&gt;
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?&lt;br /&gt;
&lt;br /&gt;
很明顯告訴我們，沒有載入ContextLoaderListener，在web.xml加上&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&lt;listener&gt;
&amp;nbsp;&amp;nbsp; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
&lt;/listener&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. 接著啟動時，若applicationContext.xml沒放在WEB-INF下，就算在contextConfigLocation有指定路徑也沒用，就會出現下面的錯誤&lt;br /&gt;
&lt;br /&gt;
錯誤訊息：&lt;br /&gt;
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]&lt;br /&gt;
&lt;br /&gt;
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call &#39;refresh&#39; before accessing beans via the ApplicationContext</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/638283651183658214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/638283651183658214'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/06/spring3-mvc-lazy-load.html' title='Spring3 MVC 延遲加載(Lazy Load)的問題'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-8766138431358658536</id><published>2011-06-08T02:37:00.000-07:00</published><updated>2011-06-08T02:53:55.647-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>Dynatree教學</title><content type='html'>這一套也free的，也有結合contextMenu，最重要的是，官方網站有詳細的教學，個人感覺比jstree更好上手。目前發現一個小缺點，在新增節點時，無法在節點上輸入名稱，還是可以用，跳一個對話框出來輸入節點名稱來解決。&lt;br /&gt;
&lt;br /&gt;
官方網站：&lt;a href=&quot;http://code.google.com/p/dynatree/&quot;&gt;Dynatree&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
下面將會整理一些常用的功能，來做為範例。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;pre class=&quot;brush: javascript&quot;&gt;$(function(){

loadTree();

//建立子目錄
$(&quot;#btnAddNode&quot;).click(function(){

 //取得被點選節點
 var node = $(&quot;#tree&quot;).dynatree(&quot;getActiveNode&quot;);

 if( !node ){
  alert(&quot;請點選節點&quot;);
 }else{
   addTreeNode(node.data.key);
   reloadTree();
 }
});


//刪除目錄
$(&quot;#btnDeleteNode&quot;).click(function(){

 //取得被點選節點
 var node = $(&quot;#tree&quot;).dynatree(&quot;getActiveNode&quot;);

 if( !node ){
  alert(&quot;請點選節點&quot;);
 }else if(node.getLevel()==1){
  alert(&quot;根節點無法刪除&quot;);
 }else if(node.hasChildren()){
  alert(&quot;尚有子節點無法刪除&quot;);
 }else if(confirm(&quot;確定刪除？&quot;)){
  deleteTreeNode(node.data.key);
  reloadTree();
 }
});
});

function loadTree(){

$(&quot;#tree&quot;).dynatree({ 

 initAjax: { 
  url: &quot;tree.do?method=list&quot; 
 }, 
 onActivate: function(node) { //點擊節點觸發
  alert(node.data.key);
 },
 onSelect: function(select, node) { //取得被勾選的節點
  var selNodes = node.tree.getSelectedNodes(); 
  var selKeys = $.map(selNodes, function(node){ 
  return node.data.key;
  });
  alert(selKeys.join(&quot;,&quot;));
 },
 onPostInit: function(isReloading, isError) { //樹載完後
  $(&quot;#tree&quot;).dynatree(&quot;getRoot&quot;).visit(function(node){ //將節點全選
  node.select(true); 
  }
 }
 checkbox: true,
 minExpandLevel: 2 //預設展開層數
});

}


//重新載入
function reloadTree(){
 var tree = $(&quot;#tree&quot;).dynatree(&quot;getTree&quot;);
 tree.reload();
}

function addTreeNode(parentID){
 var data = &quot;parentID=&quot;+parentID;
 $.ajax({
  type: &#39;POST&#39;,
  url: &quot;tree.do?method=add&quot;,
  data: data,
  dataType: &quot;txt&quot;,
  async:false
 });
}


function deleteTreeNode(nodeID){
 var data = &quot;nodeID=&quot;+nodeID;
 $.ajax({
  type: &#39;POST&#39;,
  url: &quot;tree.do?method=delete&quot;,
  data: data,
  dataType: &quot;txt&quot;,
  async:false
 });
}
&lt;/pre&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8766138431358658536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8766138431358658536'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/06/dynatree.html' title='Dynatree教學'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-3637111451577500386</id><published>2011-05-17T01:45:00.000-07:00</published><updated>2011-05-17T01:46:31.664-07:00</updated><title type='text'>JQUERY及JAVA開發常用套件</title><content type='html'>jquery plugin&lt;br /&gt;
1. 畫圖工具&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jqplot.com/&quot;&gt;JQPLOT&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. 表格&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.displaytag.org/&quot;&gt;DisplayTag &lt;/a&gt;&lt;br /&gt;
優點：相當容易使用。&lt;br /&gt;
缺點：2008之後沒有在更新。中文匯出有問題，需要修改原始碼。&lt;br /&gt;
&lt;a href=&quot;http://www.trirand.com/blog/&quot;&gt;JQGRID&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3. TREE&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jstree.com/&quot;&gt;JSTREE&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;http://mmncsmm.blogspot.com/2011/05/jstree.html&quot;&gt;&lt;span id=&quot;goog_1988238337&quot;&gt;&lt;/span&gt;教學&lt;span id=&quot;goog_1988238338&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/dynatree/&quot;&gt;DYNATREE&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dhtmlx.com/&quot;&gt;DHTMLTREE&lt;/a&gt;&amp;nbsp; (要付費)&lt;br /&gt;
&lt;br /&gt;
4. 文字編輯&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ckeditor.com/&quot;&gt;FCKEDIT&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
5. 多檔案上傳&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.fyneworks.com/jquery/multiple-file-upload/#&quot;&gt;Multiple File Upload&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;http://swfupload.org/&quot;&gt;SWFUPLOADER&lt;/a&gt;&amp;nbsp; (ie不支援)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JAVA&lt;br /&gt;
&lt;br /&gt;
1. 工具&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/guava-libraries/&quot;&gt;GUAVA&lt;/a&gt;&lt;br /&gt;
google出的函式庫，內有許多好用function，尤其是collation，可以省下開發的時間。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://jolbox.com/&quot;&gt;BONDCP&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
目前雖然是0.7版，還持續有更新，網路上可以找到很多測試結果都比c3p0效能好。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3637111451577500386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/3637111451577500386'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/05/jqueryjava.html' title='JQUERY及JAVA開發常用套件'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-8453457023191428367</id><published>2011-05-17T01:09:00.001-07:00</published><updated>2011-05-17T01:14:32.856-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>jstree教學</title><content type='html'>這一套是free的jquery套件，而且有整合contextmenu。由於官網的教學寫的不太詳細，所以我在這整理一下用法。&lt;br /&gt;
官方網站：&lt;a href=&quot;http://www.jstree.com/&quot;&gt;jstree&lt;/a&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;//using ajax load tree
(&quot;#tree1&quot;).jstree({
 &quot;themes&quot;: {
  &quot;theme&quot;: &quot;default&quot;,
  &quot;dots&quot;: false,
  &quot;icons&quot;: false
  },
 &quot;json_data&quot;: {
  &quot;ajax&quot;: {
   &quot;url&quot;: &quot;../AJAXLOADTREE.do&quot;
  }
 },
 &quot;plugins&quot;: [&quot;themes&quot;,&quot;json_data&quot;, &quot;checkbox&quot;]
 }).bind(&quot;loaded.jstree&quot;, function (event, data) {//tree load完才做其他事情
   refill();
 }).bind(&quot;click.jstree&quot;, function(event, data) {//checkbox被點擊時事件
  $(&quot;#tree&quot;).jstree(&quot;get_checked&quot;).each(function() {
   alert(this.id);//取得nodeId
   alert($(&quot;#tree1&quot;).jstree(&quot;get_text&quot;,&quot;#&quot;+this.id));//取得node title
   });
 });


function loadTree() {
 $(&quot;#tree&quot;).jstree({
   &quot;themes&quot;: {
    &quot;theme&quot;: &quot;default&quot;,
    &quot;dots&quot;: true,
    &quot;icons&quot;: true
   },
   &quot;json_data&quot;: {
    &quot;ajax&quot;: {
     &quot;url&quot;: &quot;../AJAXLOADTREE.do?sessionid=&quot;+Math.round(Math.random()*100000)//防止被cache
    }
   },
   &quot;plugins&quot;: [&quot;themes&quot;, &quot;json_data&quot;, &quot;ui&quot;, &quot;crrm&quot;, &quot;dnd&quot;]
 }).bind(&#39;create.jstree&#39;, function(e, data) {//新增節點
   // create node
   //alert(data.rslt.name);新增節點名稱
   //var node = data.rslt.obj;新增節點物件
   //alert(data.rslt.parent.attr(&quot;id&quot;));父節點Id
   if (data.rslt.parent == -1)//新增根目錄
    setTreeFolder(&#39;0&#39;, data.rslt.name, &#39;0&#39;);
   else
    setTreeFolder(&#39;0&#39;, data.rslt.name, data.rslt.parent.attr(&quot;id&quot;));
 }).bind(&quot;move_node.jstree&quot;, function(event, data) {//移動節點
   var moved_node = data.rslt.o;
   if (moved_node != null) {
    var parentNode = data.inst._get_parent(moved_node);
    if (parentNode != -1)//有父目錄
     moveTreeFolder($(moved_node).attr(&#39;id&#39;), $(parentNode).attr(&#39;id&#39;));
    else
     moveTreeFolder($(moved_node).attr(&#39;id&#39;), &#39;0&#39;); //移動為根目錄
   }
 });
    
 $(&quot;#tree&quot;).delegate(&quot;a&quot;, &quot;click&quot;, function(e) {//節點單擊事件
   node = this;
   //TODO
 });

 $(&quot;#treeFolder&quot;).delegate(&quot;a&quot;, &quot;dblclick&quot;, function(e) {//節點雙擊事件
   node = this;
   //TODO
 });
}

//新增或更新節點
function setTreeFolder(id, folderName, parentFolderId) {
 $.ajax({
  url: &#39;../AJAXSETTREE.do&#39;,
  type: &quot;POST&quot;,
  data: &quot;Id=&quot; + id + &quot;&amp;amp;FolderName=&quot; + folderName + &quot;&amp;amp;ParentFolderId=&quot; + parentFolderId,
  success: function(data,status){reloadTree();}
 });
}

//移動節點
function moveTreeFolder(id, parentid) {
 $.ajax({
  url: &#39;../AJAXMOVETREE.do&#39;,
  type: &quot;POST&quot;,
  data: &quot;Id=&quot; + id + &quot;&amp;amp;ParentFolderId=&quot; + parentid,
  success: function(data,status){reloadTree();}
 });
}

//重新載入專卷樹
function reloadTree() {
 $(&quot;#treeFolder&quot;).empty();
 loadTree();
}

//回填
function refill() {
 var nodeNameArray = $(&quot;#nodeNameId&quot;).val().split(&quot;;&quot;);
 for(i=0;i &amp;lt;nodeNameArray.length;i++){
  //用name取id
  var selectedId = $(&#39;#tree&#39;).find(&quot;&#39;a[rel=&quot;+nodeNameArray[i]+&quot;]&#39;&quot;).parent().attr(&#39;id&#39;);
  //展開節點
  jQuery.each($(&#39;#tree&#39;).jstree(&quot;get_path&quot;, &quot;#&quot; + selectedId, true), function(index, value) {
    $(&#39;#tree1&#39;).jstree(&quot;open_node&quot;, &quot;#&quot; + value);
  });
  //回勾
  $(&#39;#tree&#39;).jstree(&quot;check_node&quot;, &quot;#&quot; + selectedId);
 }
}&lt;/pre&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8453457023191428367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/8453457023191428367'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/05/jstree.html' title='jstree教學'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-5068290776122789069</id><published>2011-03-31T20:29:00.000-07:00</published><updated>2011-03-31T20:43:19.526-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><title type='text'>hibernate升級至3.6</title><content type='html'>先到官方&lt;a href=&quot;http://sourceforge.net/projects/hibernate/files/hibernate3/&quot;&gt;http://sourceforge.net/projects/hibernate/files/hibernate3/&lt;/a&gt;下載jar檔&lt;br /&gt;
裡面包含了所有需要用到的jar&lt;br /&gt;
&lt;br /&gt;
要替換的jar有&lt;br /&gt;
hibernate3.jar&lt;br /&gt;
antlr-2.7.6.jar(舊版請移除)&lt;br /&gt;
&lt;br /&gt;
新增加的jar&lt;br /&gt;
hibernate-jpa-2.0-api-1.0.0.Final.jar&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;常見問題：&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1. 錯誤訊息：&lt;/strong&gt;Exception in thread “main” java.lang.NoClassDefFoundError: javax/persistence/EntityListeners&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;解決方式：&lt;/strong&gt;缺少hibernate-jpa-2.0-api-1.0.0.Final.jar，放入即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. 錯誤訊息：&lt;/strong&gt;java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;解決方式：&lt;/strong&gt;antlr的版本不對或是有多個antlr互相衝突&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. 錯誤訊息：&lt;/strong&gt;WARN [org.hibernate.util.DTDEntityResolver] – recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;解決方式：&lt;/strong&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&amp;lt;?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?&amp;gt;
&amp;lt;!DOCTYPE hibernate-configuration PUBLIC
        &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot;
        &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;&amp;gt;
&lt;/pre&gt;將hbm.xml，如上面xml第四行&lt;br /&gt;
http://hibernate.sourceforge.net修改為 http://www.hibernate.org/dtd</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5068290776122789069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5068290776122789069'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/03/hibernate36.html' title='hibernate升級至3.6'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3115329479995633066.post-5500416423157259254</id><published>2011-03-06T20:19:00.000-08:00</published><updated>2011-03-06T20:19:37.056-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>JavaScript parseInt 08或09 回傳0的問題</title><content type='html'>&lt;b&gt;原因：&lt;/b&gt;&lt;br /&gt;
這是一個著名的問題，parseInt(&#39;01&#39;)到07都沒問題，只有08和09回傳。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;因為parseInt這個函數，有兩個參數可傳遞：&lt;br /&gt;
parseInt(string, radix)&lt;br /&gt;
&lt;br /&gt;
第一個參數 string為轉換為數字的字串&lt;br /&gt;
第二個參數 radix 則是設定二進位、還是八進位或十六進位等&lt;br /&gt;
&lt;br /&gt;
若沒設定radix，會自動判斷string，設定進位&lt;br /&gt;
EX: 0x 開頭的字串，都視為十六進位字串&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0開頭則視為八進位或二進位字串&lt;br /&gt;
&lt;br /&gt;
故parseInt(&#39;08&#39;)會被判斷為八進位，而八進位裡不會出現 8 和 9 這兩個字母，所以視為不合法的字串，於是就傳回 0。&lt;br /&gt;
&lt;br /&gt;
若parseInt(&#39;010&#39;)則會被判斷為二進位&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;解決方法：&lt;/b&gt;&lt;br /&gt;
1. string不要給08，給8就沒問題了。&lt;br /&gt;
2. 把第二個參數也加進去，例如 parseInt(&#39;08&#39;,10)。&lt;br /&gt;
&lt;br /&gt;
延伸閱讀：&lt;br /&gt;
1. &lt;a href=&quot;http://www.w3schools.com/jsref/jsref_parseInt.asp&quot;&gt;parseInt詳細解說&lt;/a&gt; &lt;br /&gt;
2. &lt;a href=&quot;http://tw.myblog.yahoo.com/jw%21v9EKjxOXCkSQzfYe5uE-/article?mid=401&amp;amp;prev=404&amp;amp;next=394&quot;&gt;JavaScript中parseInt()內部轉換過程&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5500416423157259254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3115329479995633066/posts/default/5500416423157259254'/><link rel='alternate' type='text/html' href='http://mmncsmm.blogspot.com/2011/03/javascript-parseint-0809-0.html' title='JavaScript parseInt 08或09 回傳0的問題'/><author><name>mmncsmm</name><uri>http://www.blogger.com/profile/14541814485410974870</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>