<?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: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-6882176456751413730</id><updated>2011-12-16T10:13:21.179+08:00</updated><category term='Google Map API'/><category term='MCU'/><category term='Visual Studio'/><category term='MySQL'/><category term='Face Detection'/><category term='php'/><category term='Flartoolkit'/><category term='Office'/><category term='ARM'/><category term='PV3D'/><category term='Google'/><category term='資料備份'/><category term='韌體設計'/><category term='Flash'/><category term='Joomla'/><category term='3DSMAX'/><category term='FPPA'/><category term='Linux'/><category term='Ruby on Rail'/><category term='多媒體'/><category term='LabVIEW'/><category term='Mindmap'/><category term='Android'/><category term='FLEX'/><category term='SVN'/><category term='Java Script'/><category term='VBS'/><title type='text'>L.O.N.G.F.E.L.l.o.w.</title><subtitle type='html'>blog this, blog that, blog everything.&lt;br&gt;
blog here, blog there, blog everywhere.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default?start-index=101&amp;max-results=100'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>106</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-779792063632454940</id><published>2011-08-27T13:28:00.000+08:00</published><updated>2011-08-27T13:28:28.164+08:00</updated><title type='text'>整理一些以前自己練習的程式</title><content type='html'>網路空間異動，重建連結…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/CarDriver/CarDriver.html"&gt;http://www.vercenter.nknu.edu.tw/flex/CarDriver/CarDriver.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/GoogleMapTest/GoogleMapTest.html"&gt;http://www.vercenter.nknu.edu.tw/flex/GoogleMapTest/GoogleMapTest.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/Box2DPV3D/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/Box2DPV3D/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/FacebookFriends/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/FacebookFriends/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/Ribbon3dDemo/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/Ribbon3dDemo/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study1/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study1/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study3/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study3/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study4/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study4/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study5/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study5/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study6/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study6/LongfellowHelloFlex.html&lt;/a&gt;&lt;span id="goog_1797464073"&gt;&lt;/span&gt;&lt;span id="goog_1797464074"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study7/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study7/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study8/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study8/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study10/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study10/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study13/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study13/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study15/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study15/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study16/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study16/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/study19/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/study19/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-779792063632454940?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/779792063632454940/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=779792063632454940' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/779792063632454940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/779792063632454940'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2011/08/blog-post.html' title='整理一些以前自己練習的程式'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8130814070447611309</id><published>2011-07-03T22:35:00.006+08:00</published><updated>2011-07-03T22:47:09.288+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>學習 Android/Linux Kernel 編譯</title><content type='html'>使用 Ubuntu 11.04 (安裝在 VirtualBox 4.08) 在 emulator 上跑 Android，大致記錄過程，待有硬體再來學習實機移植…&lt;br /&gt;&lt;br /&gt;一、安裝 git 原始碼管理套件…&lt;br /&gt;sudo apt-get install git-core gnupg&lt;br /&gt;&lt;br /&gt;二、安裝 java jre / jdk…&lt;br /&gt;sudo add-apt-repository ppa:ferramroberto/java&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install sun-java6-jre sun-java6-plugin&lt;br /&gt;sudo apt-get install sun-java6-jdk&lt;br /&gt;&lt;br /&gt;三、安裝其它需要的套件… &lt;br /&gt;sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl valgrind&lt;br /&gt;&lt;br /&gt;四、準備下載 Android 原始碼 (不包含Linux核心) &lt;br /&gt;cd ~&lt;br /&gt;wget http://Android.git.kernel.org/repo&lt;br /&gt;chmod 777 repo&lt;br /&gt;sudo cp repo /bin/&lt;br /&gt;mkdir Android&lt;br /&gt;cd Android&lt;br /&gt;repo init -u git://android.git.kernel.org/platform/manifest.git&lt;br /&gt;repo sync&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 這邊會下載幾小時&lt;br /&gt;&lt;br /&gt;五、編譯/執行… &lt;br /&gt;make&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 這邊會編譯幾小時&lt;br /&gt;export PATH=$PATH:~/Android/out/host/linux-x86/bin&lt;br /&gt;export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic&lt;br /&gt;emulator&lt;br /&gt;&lt;br /&gt;至此是 Android 的編譯，若要進行 Linux Kernel 編譯…&lt;br /&gt;六、下載 Linux Kernel for Android…&lt;br /&gt;mkdir kernel&lt;br /&gt;cd kernel&lt;br /&gt;git clone git://android.git.kernel.org/kernel/common.git&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 這邊會下載幾小時&lt;br /&gt;&lt;br /&gt;七、透過 emulator 截取 config 檔…&lt;br /&gt;cd common&lt;br /&gt;emulator &amp;amp;&lt;br /&gt;adb pull /proc/config.gz&lt;br /&gt;gunzip config.gz&lt;br /&gt;mv config .config&lt;br /&gt;&lt;br /&gt;八、修改 Makefile 檔… &lt;br /&gt;nano Makefile&lt;br /&gt;===========================&lt;br /&gt;ARCH=arm&lt;br /&gt;CROSS_COMPILE ?= arm-eabi-&lt;br /&gt;===========================&lt;br /&gt;&lt;br /&gt;九、編譯… &lt;br /&gt;make menuconfig&lt;br /&gt;make&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 這邊會編譯幾小時&lt;br /&gt;&lt;br /&gt;十、使用剛編譯出的核心執行 emulator…&lt;br /&gt;cd ~/Android&lt;br /&gt;emulator -kernel ./kernel/common/arch/arm/boot/zImage &amp;amp;&lt;br /&gt;&lt;br /&gt;十一、進 Android 後台確認核心版本…&lt;br /&gt;adb shell&lt;br /&gt;root@android:/ # cd /proc&lt;br /&gt;root@android:/proc # cat version&lt;br /&gt;Linux version 2.6.29-gb0d93fb-dirty (fellong@fellong-VirtualBox) (gcc version 4.4.3 (GCC) ) #5 Sun Jul 3 14:31:58 CST 2011&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8130814070447611309?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8130814070447611309/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8130814070447611309' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8130814070447611309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8130814070447611309'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2011/07/androidlinux-kernel.html' title='學習 Android/Linux Kernel 編譯'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1174853475614715337</id><published>2011-06-28T09:41:00.001+08:00</published><updated>2011-07-03T22:42:08.592+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Starter</title><content type='html'>一、下載 JAVA SE JDK，安裝&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-A3JAVWUANEE/Tgkm8riZUoI/AAAAAAAADcE/Anhn1kXCy8Y/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/-A3JAVWUANEE/Tgkm8riZUoI/AAAAAAAADcE/Anhn1kXCy8Y/s320/1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;二、下載 Android SDK，安裝&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-j5q77PU_S6M/TgkmpGr6IlI/AAAAAAAADb8/87drFtN4EgE/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/-j5q77PU_S6M/TgkmpGr6IlI/AAAAAAAADb8/87drFtN4EgE/s320/3.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;三、下載 Eclipse Classic，安裝&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AawWS0NTLpI/Tgkm4HlBleI/AAAAAAAADcA/qHSCBWF8A-A/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/-AawWS0NTLpI/Tgkm4HlBleI/AAAAAAAADcA/qHSCBWF8A-A/s320/2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;四、執行 Eclipse，按下列步驟安裝 ADT&amp;nbsp; Plug-in (摘自 &lt;a href="http://developer.android.com/sdk/eclipse-adt.html#installing"&gt;http://developer.android.com/sdk/eclipse-adt.html#installing&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start Eclipse, then select &lt;b&gt;Help&lt;/b&gt; &amp;gt; &lt;b&gt;Install New Software...&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;Add&lt;/b&gt;, in the top-right corner.&lt;/li&gt;&lt;li&gt;In the Add Repository dialog that appears, enter "ADT Plugin" for the &lt;i&gt;Name&lt;/i&gt; and the following URL for the &lt;i&gt;Location&lt;/i&gt;:       &lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;https&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="com"&gt;//dl-ssl.google.com/android/eclipse/&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;OK&lt;/b&gt;       Note: If you have trouble acquiring the plugin, try using "http" in the Location URL, instead of "https" (https is preferred for security reasons).&lt;/li&gt;&lt;li&gt;In the Available Software dialog, select the checkbox next to Developer Tools and click &lt;b&gt;Next&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;In the next window, you'll see a list of the tools to be downloaded. Click &lt;b&gt;Next&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;Read and accept the license agreements, then click &lt;b&gt;Finish&lt;/b&gt;.       Note: If you get a security warning saying that the authenticity or validity of the software can't be established, click &lt;b&gt;OK&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;When the installation completes, restart Eclipse. 這邊會開始下載安裝比較久的時間。&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;五、 執行 Eclipse，到選單 &amp;gt; Windows &amp;gt; Android SDK and ADV Manager 開啟 ADV Manager (或透過直接執行 ADV Manager 亦可)。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ffOzvN-m-kg/TgkpmK7xLaI/AAAAAAAADcI/SjwXrMHI8oU/s1600/4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://4.bp.blogspot.com/-ffOzvN-m-kg/TgkpmK7xLaI/AAAAAAAADcI/SjwXrMHI8oU/s320/4.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;此時若出現找不到 ADV Manager 位置的話，則要到選單 &amp;gt; Windows &amp;gt; Preferences &amp;gt; Andriod 頁面進行設定。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iiqfA8qD5MA/TgkqkQBZS3I/AAAAAAAADcM/IOWUBxyEebw/s1600/5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-iiqfA8qD5MA/TgkqkQBZS3I/AAAAAAAADcM/IOWUBxyEebw/s320/5.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;六、第一次執行 ADV Manager 要先安裝相關套件，這邊也是會開始下載安裝一段時間&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-DZsuRwDtACY/TgkrM5ykFYI/AAAAAAAADcQ/u_vNYDlUAe0/s1600/6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/-DZsuRwDtACY/TgkrM5ykFYI/AAAAAAAADcQ/u_vNYDlUAe0/s320/6.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;七、新增加一個 ADV (Android模擬器)，名稱自己取&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ahbe_cIbtqM/TgkrwfdISbI/AAAAAAAADcU/2paJJyXF_VE/s1600/7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/-ahbe_cIbtqM/TgkrwfdISbI/AAAAAAAADcU/2paJJyXF_VE/s320/7.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;八、OK 後就可以在 ECLIPSE 開 Android 專案了，Build Target 記得選剛剛建立好的 ADV 版本。&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kXbHaAVvqps/TgksMkzv7xI/AAAAAAAADcY/tS0UCt5T6f8/s1600/8.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/-kXbHaAVvqps/TgksMkzv7xI/AAAAAAAADcY/tS0UCt5T6f8/s320/8.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AHKUd1lg1Mk/TgksgP3LAfI/AAAAAAAADcc/yvZcbceeb7Y/s1600/9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-AHKUd1lg1Mk/TgksgP3LAfI/AAAAAAAADcc/yvZcbceeb7Y/s320/9.JPG" width="282" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;九、寫個範例程式…(摘自 &lt;a href="http://developer.android.com/resources/tutorials/hello-world.html"&gt;http://developer.android.com/resources/tutorials/hello-world.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;package example.HelloAndroid;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class HelloAndroidActivity extends Activity {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView tv = new TextView(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText("Hello, Android");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(tv);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;十、執行結果…&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VjMkOo-udzw/TgkxN3KlbrI/AAAAAAAADck/U6zLbWXSEBM/s1600/11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://3.bp.blogspot.com/-VjMkOo-udzw/TgkxN3KlbrI/AAAAAAAADck/U6zLbWXSEBM/s320/11.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yn9rYjuA4wc/TgkvHxhAt_I/AAAAAAAADcg/RjE10LvX8GM/s1600/10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-yn9rYjuA4wc/TgkvHxhAt_I/AAAAAAAADcg/RjE10LvX8GM/s320/10.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1174853475614715337?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1174853475614715337/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1174853475614715337' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1174853475614715337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1174853475614715337'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2011/06/android-starter.html' title='Android Starter'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-A3JAVWUANEE/Tgkm8riZUoI/AAAAAAAADcE/Anhn1kXCy8Y/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7921183995252477392</id><published>2011-06-20T16:47:00.000+08:00</published><updated>2011-06-20T16:53:20.969+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCU'/><title type='text'>MIDI Code 在 Windows &amp; Apple - Mac 的差別</title><content type='html'>同樣是 MIDI out 到 device，Windows 跟 Mac 卻有差別…&lt;br /&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;差別一：&lt;br /&gt;例如:一個 Note 「09 90 01 7f」，在 Windows 作輸出時，透過 Bus Hound (監視 USB 通訊的軟體) 來看是底下這樣…&lt;br /&gt;Device&amp;nbsp; Length&amp;nbsp;&amp;nbsp;&amp;nbsp; Phase&amp;nbsp; Data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delta&amp;nbsp; Cmd.Phase.Ofs(rep)&lt;br /&gt;------&amp;nbsp; --------&amp;nbsp; -----&amp;nbsp; -----------&amp;nbsp; ----------------&amp;nbsp; -----&amp;nbsp; ------------------&lt;br /&gt;&amp;nbsp; 27.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64&amp;nbsp; OUT&amp;nbsp;&amp;nbsp;&amp;nbsp; 09 90 01 7f&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; 5.1sc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.24&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.48&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.52&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.56&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00 00 00 00&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28.1.60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Windows 一次「至少」就傳了 64 bytes 的資料給 device ，後面無用的資料都補 0。&lt;br /&gt;&lt;br /&gt;但是 Mac 卻只有傳了…「09 90 01 7f」這 4 個 bytes，並且沒有 0 作結尾。&lt;br /&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;差別二：&lt;br /&gt;很多 MIDI Code 要傳輸時，Windows 都是遵照上述的原則，一定會傳出 64 bytes (或許有別的 MIDI API 可以作不一樣長度的輸出，但以音控軟體 Traktor 而言是如此)&lt;br /&gt;&lt;br /&gt;但是 Mac 在這個情況下有可能會傳出 4*N 個 bytes，也就是 4、8、12、16…。&lt;br /&gt;&lt;br /&gt;------------------------------------&lt;br /&gt;於是在韌體的撰寫上就要特別注意這二個不同的差別來作 MIDI Code 的解析，才能同時相容於 Windows 及 Mac!!!&lt;br /&gt;&lt;br /&gt;看起來 Mac 的效能會比較好。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7921183995252477392?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7921183995252477392/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7921183995252477392' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7921183995252477392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7921183995252477392'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2011/06/midi-code-windows-apple-mac.html' title='MIDI Code 在 Windows &amp; Apple - Mac 的差別'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3059254074233946841</id><published>2010-12-16T02:20:00.004+08:00</published><updated>2011-01-25T16:51:51.789+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><title type='text'>ARM7-TDMI 第一步 - 使用 Winbond W90P710CDG 記錄</title><content type='html'>一、系統已經內建 uCLinux，先學習在上面開發 AP。&lt;br /&gt;二、主板開機後連接網路線(對接或透過HUB)&lt;br /&gt;三、使用 IP-Search-Utility - Etm.exe 或其它方式查詢主板 IP。&lt;br /&gt;四、telnet 進去主板，登入 admin 確定 uCLinux 有跑起來。&lt;br /&gt;五、安裝 Virtual Box 及 linux-Demo.vdi. 下載網址 http://www.metavert.com/public/Virtual-Linux/&lt;br /&gt;六、參照 http://www.metavert.com/public/htm-w90f/21-virtual_linux.htm 說明，設定 Virtual Box 並載入 linux-Demo.vdi，或自行摸索把 linux-Demo.vdi 建成虛擬機器就是了。&lt;br /&gt;七、在 Virtual Box 中啟動 linux-Demo。(Ubuntu)&lt;br /&gt;八、進入 Ubuntu 後查看虛擬電腦 ip 是不是跟主板在同一子網域，若沒則作修改。看要改主板或 Ubuntu 都可。&lt;br /&gt;九、將範例 g03a.tar.gz 、上載工具 tools.tar.gz 及安裝 scripts install.sh 透過共享資料夾或其它方式上傳到 Ubuntu。&lt;br /&gt;十、執行 install.sh (注意查看 scripts 內容 PRJ=xxx 是否正確)&lt;br /&gt;十一、安裝成功會在 home 資料夾建立範例程式，並安裝好上載工具 eUpg90 &lt;br /&gt;十二、開發、編輯、編譯程式，產生 目的檔 i.e. example。(最好使用 Eclipse，開發環境都設定好了，只需將 example Import 進 project 即可，真方便)&lt;br /&gt;十三、在 Ubuntu 命令列，切到目的檔所在目錄，下達「eUpg90 -file -a192.168.1.10 example /usr/example」指令將 example 上傳到主板的 /usr/example 。此處 192.168.1.10 是主板的 IP。(程式需透過 eUpg90 上載，用 ftp 上傳的不行，原因還不知)&lt;br /&gt;十四、telnet 主板切至 /usr 目錄應會看到上載的程式 example，執行、驗證。Good!!&lt;br /&gt;完成。&lt;br /&gt;&lt;br /&gt;*到它內建的 www 首頁就有很多範例可供參考。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3059254074233946841?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3059254074233946841/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3059254074233946841' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3059254074233946841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3059254074233946841'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/12/arm7-tdmi-winbond-w90p710cdg.html' title='ARM7-TDMI 第一步 - 使用 Winbond W90P710CDG 記錄'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1473462428810271148</id><published>2010-12-04T17:52:00.000+08:00</published><updated>2010-12-20T10:36:49.631+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><title type='text'>STM32 多個外部中斷設定方式(使用stm32f10x_lib)</title><content type='html'>一、打開 GPIO 時鐘及重映射功能時鐘。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* System Clocks Configuration */&lt;br /&gt;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;二、打開/設定 外部中斷的 中斷套嵌。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* NVIC configuration */&lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;&lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;&lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;&lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQChannel;&lt;br /&gt;NVIC_Init(&amp;amp;NVIC_InitStructure);&lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;&lt;br /&gt;NVIC_Init(&amp;amp;NVIC_InitStructure);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;注意:不同的外部中斷需各別使用 NVIC_Init() 函式來設定，不可以用「|」OR 運算來同時設定。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;三、設置 GPIO 腳位、屬性。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* Configure the GPIO ports */&lt;br /&gt;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;&lt;br /&gt;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;&lt;br /&gt;GPIO_Init(GPIOE, &amp;amp;GPIO_InitStructure);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;注意:不同的 IO PORT 需各別使用 GPIO_Init() 函式來設定，但同一個 PORT 可以用「|」OR 運算來同時設定。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;四、連結 外部中斷線 到 GPIO線(PIN0~PIN15)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* Connect EXTI Line to GPIO Pin */&lt;br /&gt;GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);    &lt;br /&gt;GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3);    &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;注意:不同 GPIO Pin 需各別使用 GPIO_EXTILineConfig() 函式來設定，不可以用「|」OR 運算來同時設定。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;五、設置外部中斷反應方式並打開外部中斷&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/* Configure EXTI Line to generate an interrupt on falling edge */  &lt;br /&gt;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;&lt;br /&gt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;&lt;br /&gt;EXTI_InitStructure.EXTI_LineCmd = ENABLE;&lt;br /&gt;EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3;&lt;br /&gt;EXTI_Init(&amp;amp;EXTI_InitStructure);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;注意:所有的外部中斷可以使用一次/多次 EXTI_Init() 函式來設定，並可以用「|」OR 運算來同時設定。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;六、最後在 stm32f10x_it.c 處理中斷函式…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;void EXTIx_IRQHandler(void)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1473462428810271148?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1473462428810271148/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1473462428810271148' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1473462428810271148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1473462428810271148'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/12/stm32-stm32f10xlib.html' title='STM32 多個外部中斷設定方式(使用stm32f10x_lib)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1624167479023035911</id><published>2010-12-02T10:50:00.000+08:00</published><updated>2010-12-20T10:36:49.632+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><title type='text'>RL-ARM 使用 user timer 的方法</title><content type='html'>一、在 RTX_Config.c 修改 OS_TIMERCNT。(預設是 0 記得要修改)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#ifndef OS_TIMERCNT&lt;br /&gt; #define OS_TIMERCNT    5&lt;br /&gt;#endif&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;二、在 task 中建立 timer。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;OS_ID  tmr1;&lt;br /&gt;tmr1 = os_tmr_create (300, 1); /// after 300 system_tick, callback.&lt;br /&gt;if (tmr1 == NULL) {&lt;br /&gt; printf ("Failed to create user timer.\n");&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;三、在 RTX_Config.c 修改 timer 的 callback 函式 os_tmr_call。&lt;br /&gt;&lt;code&gt;&lt;br /&gt;void os_tmr_call (U16 info) {&lt;br /&gt;  /* This function is called when the user timer has expired. Parameter   */&lt;br /&gt;  /* 'info' holds the value, defined when the timer was created.          */&lt;br /&gt;  /* HERE: include optional user code to be executed on timeout. */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1624167479023035911?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1624167479023035911/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1624167479023035911' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1624167479023035911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1624167479023035911'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/12/rl-arm-user-timer.html' title='RL-ARM 使用 user timer 的方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5760682157690055085</id><published>2010-10-28T12:00:00.000+08:00</published><updated>2010-12-20T10:37:10.767+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='韌體設計'/><title type='text'>時間轉換函式~秒&lt;----&gt;日期 (從2000年)</title><content type='html'>&lt;code&gt;&lt;br /&gt;bit isleap(int y)&lt;br /&gt;{&lt;br /&gt; return y%4==0&amp;amp;&amp;amp;y%100!=0 || y%400==0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int DaysOfMonth( int y, int m )&lt;br /&gt;{&lt;br /&gt; switch(m)&lt;br /&gt; {&lt;br /&gt; case 1: return 31;&lt;br /&gt; case 2: return isleap(y)?29:28;&lt;br /&gt; case 3: return 31;&lt;br /&gt; case 4: return 30;&lt;br /&gt; case 5: return 31;&lt;br /&gt; case 6: return 30;&lt;br /&gt; case 7: return 31;&lt;br /&gt; case 8: return 31;&lt;br /&gt; case 9: return 30;&lt;br /&gt; case 10: return 31;&lt;br /&gt; case 11: return 30;&lt;br /&gt; case 12: return 31;&lt;br /&gt; }&lt;br /&gt; return 30;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int DaysOfYear( int y )&lt;br /&gt;{&lt;br /&gt; if( isleap(y) )&lt;br /&gt;  return 366;&lt;br /&gt; return 365;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;unsigned long SecsFrom2000( int y, int m, int d, int hh, int mm, int ss )&lt;br /&gt;{&lt;br /&gt; int i;&lt;br /&gt; unsigned long day = 0;&lt;br /&gt; for( i=2000; i&amp;lt;y; i++ )&lt;br /&gt;  day += DaysOfYear(i);&lt;br /&gt; for( i=1; i&amp;lt;m; i++ )&lt;br /&gt;  day += DaysOfMonth(y,i);&lt;br /&gt; day += d;&lt;br /&gt; day = day*86400L + hh*3600L + mm*60L + ss*1L;&lt;br /&gt; return day;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void SecToDateTime( unsigned long sec, cdate * pdate, ctime * ptime )&lt;br /&gt;{&lt;br /&gt; unsigned long day;&lt;br /&gt;&lt;br /&gt; day = sec/86400;&lt;br /&gt;&lt;br /&gt; pdate-&amp;gt;yy = 2000;&lt;br /&gt; while( day &amp;gt; DaysOfYear( pdate-&amp;gt;yy ) )&lt;br /&gt; {&lt;br /&gt;  day-= DaysOfYear( pdate-&amp;gt;yy );&lt;br /&gt;  pdate-&amp;gt;yy++;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; pdate-&amp;gt;mm = 1;&lt;br /&gt; while( day &amp;gt; DaysOfMonth( pdate-&amp;gt;yy, pdate-&amp;gt;mm ) )&lt;br /&gt; {&lt;br /&gt;  day-= DaysOfMonth( pdate-&amp;gt;yy, pdate-&amp;gt;mm );&lt;br /&gt;  pdate-&amp;gt;mm++;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; pdate-&amp;gt;dd = day;&lt;br /&gt;&lt;br /&gt; ptime-&amp;gt;hh = (sec/3600)%24;&lt;br /&gt; ptime-&amp;gt;mm = (sec/60)%60;&lt;br /&gt; ptime-&amp;gt;ss = (sec)%60;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5760682157690055085?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5760682157690055085/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5760682157690055085' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5760682157690055085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5760682157690055085'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/10/2000.html' title='時間轉換函式~秒&lt;----&gt;日期 (從2000年)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5966356114932317043</id><published>2010-06-23T13:50:00.000+08:00</published><updated>2010-06-23T13:51:05.945+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>MS OFFICE 2007 .ppsx 檔轉檔</title><content type='html'>先下載安裝 Open office &lt;br /&gt;&lt;a href="http://download.openoffice.org/index.html"&gt;http://download.openoffice.org/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;使用 Open office 開啟 ppsx 檔&lt;br /&gt;開啟時會詢問你使用的 filter 篩選器&lt;br /&gt;&lt;br /&gt;此時選 ms office 2007 即可開啟&lt;br /&gt;&lt;br /&gt;再另存新檔 ms office 97 格式即可&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5966356114932317043?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5966356114932317043/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5966356114932317043' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5966356114932317043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5966356114932317043'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/06/ms-office-2007-ppsx.html' title='MS OFFICE 2007 .ppsx 檔轉檔'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7733056827436991747</id><published>2010-06-22T17:55:00.001+08:00</published><updated>2010-06-23T13:50:48.179+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2010</title><content type='html'>幾個 VB 的技巧…&lt;br /&gt;&lt;br /&gt;Callback 函式指定方式&lt;br /&gt;&lt;code&gt;&lt;br /&gt;AddHandler _timer.Tick, AddressOf TimerEventProcessor&lt;br /&gt;&lt;br /&gt;Private Sub TimerEventProcessor(ByVal myObject As Object, ByVal myEventArgs As EventArgs)&lt;br /&gt;'todo&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;SerialPort1_DataReceived 因為是執行緒非同步在接收 RS232 的資料，而 VB 不允許在執行緒中直接設定一些 Components 的值，因些必須透過代理的方式來處理…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived&lt;br /&gt;memoMessage.Invoke(New myDelegate(AddressOf updateTextBox), New Object() {})&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Public Delegate Sub myDelegate()&lt;br /&gt;Public Sub updateTextBox()&lt;br /&gt;memoMessage.Text = SerialPort1.ReadExisting()&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;String 跟 char array 轉換的方式…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Dim str as String&lt;br /&gt;Dim carr() As Char = str.ToCharArray&lt;br /&gt;str = CStr(carr)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;要加快 components 的繒圖速度可以使用 GDI 雙重緩衝，若是繼承自 compnents 可寫在 New() 建構式中…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    Public Sub New()&lt;br /&gt;        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)&lt;br /&gt;        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)&lt;br /&gt;        Me.SetStyle(ControlStyles.UserPaint, True)&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7733056827436991747?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7733056827436991747/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7733056827436991747' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7733056827436991747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7733056827436991747'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/06/visual-studio-2010.html' title='Visual Studio 2010'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8392584392593805729</id><published>2010-05-31T22:29:00.001+08:00</published><updated>2010-05-31T22:34:44.114+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map API'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android 開發 Google Map API - 如何註冊 API Key</title><content type='html'>Google Map View 官方教學網站…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/resources/tutorials/views/hello-mapview.html"&gt; http://developer.android.com/resources/tutorials/views/hello-mapview.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這有詳盡的 Android Google API 開發教學~&lt;br /&gt;&lt;br /&gt;萬事起頭難，其中提到，必須有一組 API Key 才能註冊成為合法認證的 Google API，才能在 Android 上執行，才可以開始玩。(其實就是 java 憑證)&lt;br /&gt;&lt;br /&gt;建立過程如下…&lt;br /&gt;&lt;br /&gt;一、在開發的過程中，可以先建立 debug certificate…&lt;br /&gt;&lt;a href="http://code.google.com/intl/zh-TW/android/add-ons/google-apis/mapkey.html#getdebugfingerprint"&gt;&lt;br /&gt;http://code.google.com/intl/zh-TW/android/add-ons/google-apis/mapkey.html#getdebugfingerprint&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;二、按照上面的說明，先找到應用程式存放 debug keystore 的地方，通常放在…&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\&amp;lt;user&amp;gt;\.android\debug.keystore&lt;br /&gt;&lt;br /&gt;或可透過裝了 ADT 的 Eclipse 選單 Windows &amp;gt; Prefs &amp;gt; Android &amp;gt; Build 中找到完整路徑。&lt;br /&gt;&lt;br /&gt;三、再下達…&lt;br /&gt;&lt;br /&gt;keytool -list -alias androiddebugkey -keystore &amp;lt;path_to_debug_keystore&amp;gt;.keystore -storepass android -keypass android&lt;br /&gt;&lt;br /&gt;會發生二個問題…&lt;br /&gt;&lt;ul&gt;&lt;li&gt;keytool.exe 的位置：在 JAVA JRE 安裝目錄中，例如…&lt;br /&gt;&lt;br /&gt;C:\Program Files\Java\jre6\bin&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;路徑有可能包含空白字元，導致無法在 DOS COMMAND 視窗下達指令，你可以先把 debug.keystore 拷貝到 C:\ 再下達指令…&lt;br /&gt;&lt;br /&gt;keytool -list -alias androiddebugkey -keystore c:\debug.keystore -storepass android -keypass android&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;四、如此便會算出 MD5 碼…&lt;br /&gt;&lt;br /&gt;androiddebugkey, 2010/5/15, keyEntry,&lt;br /&gt;認證指紋 (MD5)： 70:02:A3:1F:85:35:D1:A4:3C:1C:D2:12:34:56:78:90&lt;br /&gt;&lt;br /&gt;五、有了 MD5 碼就可以到 Android Maps API Key Signup 網頁註冊新的 API Key…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/intl/zh-TW/android/maps-api-signup.html"&gt;http://code.google.com/intl/zh-TW/android/maps-api-signup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;六、完成註冊，得到 API Key…&lt;br /&gt;&lt;br /&gt;感謝您申請 Android Maps API 金鑰！&lt;br /&gt;您的金鑰為：&lt;br /&gt;0GNWKtyf-6M2YDIU3XIjq-Qgqh0yn1234567890&lt;br /&gt;此金鑰適合所有使用以下指紋憑證所簽署的應用程式：&lt;br /&gt;70:02:A3:1F:85:35:D1:A4:3C:1C:D2:12:34:56:78:90&lt;br /&gt;&lt;br /&gt;有了金鑰就可以拿來填到 main.xml 中了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;p.s. 下達 keytool 指令時可以善用 DOS 輸出導向功能 keytool ooo xxx yyy ... zzz &lt;b&gt;&amp;gt; md5.txt&amp;nbsp;&lt;/b&gt; , 把輸出導向到一個檔案方便拷貝，以免打錯 MD5 碼。&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_80QNBcr7cME/TAPI8s8wE8I/AAAAAAAADa0/kJYy37X08Ao/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="450" src="http://4.bp.blogspot.com/_80QNBcr7cME/TAPI8s8wE8I/AAAAAAAADa0/kJYy37X08Ao/s640/1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8392584392593805729?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8392584392593805729/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8392584392593805729' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8392584392593805729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8392584392593805729'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/android-google-map-api-api-key.html' title='Android 開發 Google Map API - 如何註冊 API Key'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_80QNBcr7cME/TAPI8s8wE8I/AAAAAAAADa0/kJYy37X08Ao/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5641341542420012716</id><published>2010-05-23T23:36:00.002+08:00</published><updated>2010-05-31T22:32:38.958+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android EventListener 建立方法</title><content type='html'>元件常常有很多「event」必預要去「listen」，這時候需要靠 EventListener。&lt;br /&gt;&lt;br /&gt;網路上看到的範例大多長的像底下這個樣子…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;btn.setOnClickListener(new OnClickListener() {&lt;br /&gt;public void onClick(View v) {&lt;br /&gt;/// TODO&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;乍看可能還很難以理解這一小段程式是在作什麼，其實整個意義如同底下這段程式…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;btn.setOnClickListener( new clsOnClickListener() );&lt;br /&gt;///---inline class ---///&lt;br /&gt;public class clsOnClickListener implements OnClickListener {&lt;br /&gt;public void onClick(View v) {&lt;br /&gt;/// TODO&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;也就是它其實是建立了個新的 class implements 原來的 OnClickListener 來自訂 onClick 事件處理函式。&lt;br /&gt;&lt;br /&gt;但難的是在 coding 的時候往往不曉得(或忘了)有哪些事件，有哪些 listener，更別說要寫出上面第一段那樣的程式了。&lt;br /&gt;&lt;br /&gt;還好 Eclipse 開發環境很好用，你可以利用它自動產生程式碼的功能，幫你做到這些事。&lt;br /&gt;用說的不好解釋，看段影片說明…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/plW4zMxpnBA"&gt;http://www.youtube.com/v/plW4zMxpnBA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/plW4zMxpnBA&amp;hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/plW4zMxpnBA&amp;hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;這樣就可以減輕腦袋的負荷了~^ ^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5641341542420012716?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5641341542420012716/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5641341542420012716' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5641341542420012716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5641341542420012716'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/android-eventlistener.html' title='Android EventListener 建立方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8129352316998494277</id><published>2010-05-23T22:56:00.001+08:00</published><updated>2010-05-31T22:32:38.960+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android 動態產生元件</title><content type='html'>Android 應用程式的開發一般都將 UI 跟 RESOURCES 的部分抽離出來，好方便管理及設計，也因此有一些 XML 檔需要撰寫，主要都是用來描述這些資源。&lt;br /&gt;&lt;br /&gt;但若要自己土法練鋼寫動態產生時要怎麼作?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;super.onCreate(savedInstanceState);&lt;br /&gt;///setContentView(R.layout.main); ///不使用 main.xml 資源&lt;br /&gt;&lt;br /&gt;LinearLayout layout = new LinearLayout(this);&lt;br /&gt;this.addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));&lt;br /&gt;layout.setOrientation(LinearLayout.VERTICAL);&lt;br /&gt;&lt;br /&gt;Button btn = new Button(this);&lt;br /&gt;btn.SetText("Button");&lt;br /&gt;layout.addView(btn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));&lt;br /&gt;&lt;br /&gt;EditText txt = new EditText(this);&lt;br /&gt;layout.addView(txt, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;相對照若用 xml 來描述的話像這樣…&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;LinearLayout &lt;br /&gt;android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:layout_height=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Button &lt;br /&gt;android:text=&amp;quot;Button&amp;quot; &lt;br /&gt;android:layout_width=&amp;quot;wrap_content&amp;quot; &lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot; &lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&amp;lt;EditText &lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot; &lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;/EditText&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8129352316998494277?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8129352316998494277/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8129352316998494277' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8129352316998494277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8129352316998494277'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/android_23.html' title='Android 動態產生元件'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-9080247349456319422</id><published>2010-05-23T16:37:00.001+08:00</published><updated>2010-05-31T22:32:38.962+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android 練習-寶石方塊</title><content type='html'>直接將自己舊的 java 手機程式改成 Android 版本。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/bYORe68RixQ"&gt;http://www.youtube.com/v/bYORe68RixQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bYORe68RixQ&amp;hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bYORe68RixQ&amp;hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-9080247349456319422?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/9080247349456319422/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=9080247349456319422' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9080247349456319422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9080247349456319422'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/android.html' title='Android 練習-寶石方塊'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3069382110947032652</id><published>2010-05-23T16:17:00.006+08:00</published><updated>2010-05-31T22:32:38.964+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Android TabLayout 使用心得</title><content type='html'>Android 2.2 SDK 己經出了…&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/index.html"&gt;http://developer.android.com/sdk/index.html &lt;/a&gt;&lt;br /&gt;最近也在學習，還好之前有 java/javaME 的基礎，還算順利。&lt;br /&gt;&lt;br /&gt;Google 官方有提供教學網頁…&lt;br /&gt;&lt;a href="http://developer.android.com/resources/index.html"&gt;http://developer.android.com/resources/index.html&amp;nbsp;&lt;/a&gt;&lt;br /&gt;很不錯。&lt;br /&gt;&lt;br /&gt;不過其中一個範例 TabLayout 的使用…&lt;br /&gt;&amp;nbsp;&lt;a href="http://developer.android.com/resources/tutorials/views/hello-tabwidget.html"&gt;http://developer.android.com/resources/tutorials/views/hello-tabwidget.html&lt;/a&gt;&lt;br /&gt;這個範例對初學者來講比較複雜。&lt;br /&gt;&lt;br /&gt;底下是比較簡單易理解的版本…&lt;br /&gt;&lt;br /&gt;HelloTabWidgetNoIcon.java&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package com.study.HelloTabWidgetNoIcon;&lt;br /&gt;&lt;br /&gt;import android.app.TabActivity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.TabHost;&lt;br /&gt;&lt;br /&gt;public class HelloTabWidgetNoIcon extends TabActivity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;super.onCreate(savedInstanceState);&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;TabHost tabHost = getTabHost();  // The activity TabHost&lt;br /&gt;TabHost.TabSpec spec;  // Resusable TabSpec for each tab&lt;br /&gt;&lt;br /&gt;// Initialize a TabSpec for each tab and add it to the TabHost&lt;br /&gt;spec = tabHost.newTabSpec("artists").setIndicator("Artists").setContent(R.id.tab0);&lt;br /&gt;tabHost.addTab(spec);&lt;br /&gt;&lt;br /&gt;// Do the same for the other tabs&lt;br /&gt;spec = tabHost.newTabSpec("albums").setIndicator("Albums").setContent(R.id.tab1);&lt;br /&gt;tabHost.addTab(spec);&lt;br /&gt;&lt;br /&gt;spec = tabHost.newTabSpec("songs").setIndicator("Songs").setContent(R.id.tab2);&lt;br /&gt;tabHost.addTab(spec);&lt;br /&gt;&lt;br /&gt;tabHost.setCurrentTab(0);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;main.xml&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;TabHost xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;android:id=&amp;quot;@android:id/tabhost&amp;quot;&lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:layout_height=&amp;quot;fill_parent&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;LinearLayout&lt;br /&gt;android:orientation=&amp;quot;vertical&amp;quot;&lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:layout_height=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:padding=&amp;quot;5dp&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;TabWidget&lt;br /&gt;android:id=&amp;quot;@android:id/tabs&amp;quot;&lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;FrameLayout&lt;br /&gt;android:id=&amp;quot;@android:id/tabcontent&amp;quot;&lt;br /&gt;android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:layout_height=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;android:padding=&amp;quot;5dp&amp;quot; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;TextView &lt;br /&gt;android:text=&amp;quot;tab0&amp;quot; &lt;br /&gt;android:id=&amp;quot;@+id/tab0&amp;quot; &lt;br /&gt;android:layout_width=&amp;quot;wrap_content&amp;quot; &lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;TextView &lt;br /&gt;android:text=&amp;quot;tab1&amp;quot; &lt;br /&gt;android:id=&amp;quot;@+id/tab1&amp;quot; &lt;br /&gt;android:layout_width=&amp;quot;wrap_content&amp;quot; &lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;TextView &lt;br /&gt;android:text=&amp;quot;tab2&amp;quot; &lt;br /&gt;android:id=&amp;quot;@+id/tab2&amp;quot; &lt;br /&gt;android:layout_width=&amp;quot;wrap_content&amp;quot; &lt;br /&gt;android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/FrameLayout&amp;gt;&lt;br /&gt;&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;&amp;lt;/TabHost&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;對照一下 HelloTabWidgetNoIcon.java 及 main.xml 就可以了解程式碼跟 layout 間的對應關係了(tab0,tab1,tab2)。&lt;br /&gt;&lt;br /&gt;跟官方的範例不同的地方在於，官方的還多加了…&lt;br /&gt;一、Tab 的小圖示( ic_tab_artists.xml, ic_tab_albums.xml, ic_tab_songs.xml 及圖片 ) &lt;br /&gt;二、動態的 Tab View ( ArtistsActivity.java, AlbumsActivity.java, SongsActivity.java )&lt;/code&gt;&lt;br /&gt;所以才比較複雜並且要多撰寫一些 xml 碼。&lt;br /&gt;&lt;br /&gt;不過，若真的要用在手機上，當然還是用圖示比較吸引人嘍。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3069382110947032652?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3069382110947032652/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3069382110947032652' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3069382110947032652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3069382110947032652'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/android-tablayout.html' title='Android TabLayout 使用心得'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1587690323426631150</id><published>2010-05-02T16:36:00.001+08:00</published><updated>2010-05-23T16:45:06.366+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>申請使用GoogleApps免費服務記錄</title><content type='html'>&lt;br&gt;&lt;h4&gt;Google Apps &amp;#26159; GOOGLE &amp;#25552;&amp;#20379;&amp;#30340;&amp;#19968;&amp;#38917;&amp;#24456;&amp;#22909;&amp;#29992;&amp;#30340;&amp;#26381;&amp;#21209;&amp;#65292;&amp;#25552;&amp;#20379;&amp;#20813;&amp;#36027;&amp;#30340;&amp;#32178;&amp;#38913;&amp;#12289;EMAIL&amp;#26381;&amp;#21209;&amp;hellip;&amp;#65292;&amp;#19968;&amp;#20123;&amp;#23567;&amp;#20844;&amp;#21496;&amp;#12289;&amp;#23567;&amp;#20225;&amp;#26989;&amp;#12289;&amp;#31038;&amp;#32676;&amp;#22296;&amp;#39636;&amp;#37117;&amp;#25033;&amp;#35442;&amp;#32771;&amp;#24942;&amp;#20351;&amp;#29992;&amp;#36889;&amp;#38917;&amp;#20813;&amp;#36027;&amp;#30340;&amp;#26381;&amp;#21209;&amp;#65292;&amp;#20854;&amp;#20013;EMAIL&amp;#26381;&amp;#21209;&amp;#31639;&amp;#26159;&amp;#26368;&amp;#37325;&amp;#35201;&amp;#30340;&amp;#65292;&amp;#26377;&amp;#20102;&amp;#36889;&amp;#20491;&amp;#65292;&amp;#20320;&amp;#20877;&amp;#20063;&amp;#19981;&amp;#29992;&amp;#33258;&amp;#24049;&amp;#26550;&amp;#35373;&amp;#12289;&amp;#31649;&amp;#29702;MAIL&amp;#20282;&amp;#26381;&amp;#22120;&amp;#65292;&amp;#21487;&amp;#20197;&amp;#31680;&amp;#30465;&amp;#19968;&amp;#22823;&amp;#31558;&amp;#38283;&amp;#37559;&amp;#21448;&amp;#33021;&amp;#21516;&amp;#26178;&amp;#29554;&amp;#24471;&amp;#24456;&amp;#31337;&amp;#23450;&amp;#30340;EMAIL&amp;#26381;&amp;#21209;(&amp;#24049;&amp;#20351;&amp;#29992;&amp;#20108;&amp;#24180;&amp;#30340;&amp;#32147;&amp;#39511;&amp;#20358;&amp;#30475;&amp;#31639;&amp;#26159;&amp;#38750;&amp;#24120;&amp;#31337;&amp;#23450;&amp;#30340;)&lt;/h4&gt;&lt;br&gt;&amp;#20320;&amp;#38656;&amp;#35201;&amp;hellip;&lt;br&gt;&amp;#19968;&amp;#20491;&amp;#26377;&amp;#25928;&amp;#30340;&amp;#32178;&amp;#22495;&amp;#21517;&amp;#31281; ( &amp;#21487;&amp;#20197;&amp;#30003;&amp;#35531;&amp;#20813;&amp;#36027;&amp;#26381;&amp;#21209; )&lt;br&gt;&amp;#19968;&amp;#21488;DNS&amp;#20282;&amp;#26381;&amp;#22120; ( &amp;#21487;&amp;#20197;&amp;#30003;&amp;#35531;&amp;#20813;&amp;#36027;&amp;#26381;&amp;#21209; )&lt;br&gt;&amp;#19968;&amp;#21488;&amp;#32178;&amp;#38913;&amp;#20282;&amp;#26381;&amp;#22120; ( &amp;#39511;&amp;#35657;&amp;#29992;&amp;#65292;&amp;#36879;&amp;#36942;&amp;#20854;&amp;#23427;&amp;#39511;&amp;#35657;&amp;#26041;&amp;#24335;&amp;#65292;&amp;#21487;&amp;#20197;&amp;#30465;&amp;#25481;&amp;#19981;&amp;#29992; )&lt;br&gt;&lt;br&gt;&amp;#25563;&amp;#21477;&amp;#35441;&amp;#35498;&amp;#65292;&amp;#20320;&amp;#23436;&amp;#20840;&amp;#19981;&amp;#38656;&amp;#35201;&amp;#28310;&amp;#20633;&amp;#20219;&amp;#20309;&amp;#20282;&amp;#26381;&amp;#22120;&amp;#65292;&amp;#23601;&amp;#21487;&amp;#20197;&amp;#23436;&amp;#25104; GOOGLE APPS &amp;#26381;&amp;#21209;&amp;#30340;&amp;#30003;&amp;#35531;&amp;#12290;&lt;br&gt;&lt;br&gt;&amp;#24213;&amp;#19979;&amp;#26159;&amp;#31777;&amp;#21934;&amp;#30340;&amp;#30003;&amp;#35531;&amp;#27493;&amp;#39519;&amp;#25235;&amp;#22294;&amp;#35352;&amp;#37636;&lt;br&gt;&lt;br&gt;&amp;#21040;&amp;#30003;&amp;#35531;&amp;#39318;&amp;#38913;&amp;#36664;&amp;#20837;&amp;#20320;&amp;#30340;&amp;#32178;&amp;#22495;&amp;#21517;&amp;#31281;(&amp;#36879;&amp;#36942;&amp;#36092;&amp;#36023;&amp;#25110;&amp;#24478;&amp;#32178;&amp;#36335;&amp;#19978;&amp;#30003;&amp;#35531;&amp;#20813;&amp;#36027;&amp;#32178;&amp;#22495;&amp;#21517;&amp;#31281;)&lt;br&gt;&lt;div id="oakc" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1809qm89tbd5_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#36664;&amp;#20837;&amp;#30003;&amp;#35531;&amp;#36039;&amp;#26009;&lt;br&gt;&lt;div id="y7.m" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1810cmhtbvds_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#36664;&amp;#20837;&amp;#31649;&amp;#29702;&amp;#29702;&amp;#24115;&amp;#25142;&amp;#36039;&amp;#26009;&lt;br&gt;&lt;/div&gt;&lt;div id="lyvy" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1811gbj5vmfs_b" style="height:486px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#21021;&amp;#27493;&amp;#30003;&amp;#35531;&amp;#23436;&amp;#25104;&lt;br&gt;&lt;/div&gt;&lt;div id="vlxt" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_18122pjc7hcb_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#36914;&amp;#34892;&amp;#12300;&amp;#32178;&amp;#22495;&amp;#21517;&amp;#31281;&amp;#39511;&amp;#35657;&amp;#12301;&amp;#65292;&amp;#20197;&amp;#39511;&amp;#35657;&amp;#36889;&amp;#20491;&amp;#32178;&amp;#22495;&amp;#30906;&amp;#23526;&amp;#26159;&amp;#20320;&amp;#30340;&amp;#65292;&amp;#20108;&amp;#31278;&amp;#39511;&amp;#35657;&amp;#26041;&amp;#24335;&amp;#65292;CNAME&amp;#19981;&amp;#38656;&amp;#35201;&amp;#20027;&amp;#27231;&amp;#65292;&amp;#21482;&amp;#38656;&amp;#35201;DNS&amp;#26381;&amp;#21209;&amp;#65292;&amp;#32178;&amp;#38913;&amp;#26041;&amp;#24335;&amp;#21063;&amp;#38656;&amp;#35201;&amp;#36879;&amp;#36942;&amp;#19978;&amp;#20659;&amp;#32178;&amp;#38913;&amp;#30340;&amp;#26041;&amp;#24335;&amp;#20358;&amp;#36914;&amp;#34892;&amp;#65292;&amp;#36984;&amp;#21462;&amp;#24460;GOOGLE&amp;#26371;&amp;#23566;&amp;#24341;&amp;#20320;&amp;#36914;&amp;#34892;&amp;#39511;&amp;#35657;&amp;#12290;&lt;br&gt;&lt;/div&gt;&lt;div id="v_df" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1813cnp6qs6n_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#36889;&amp;#37002;&amp;#26159;&amp;#20351;&amp;#29992;&amp;#32178;&amp;#38913;&amp;#30340;&amp;#26041;&amp;#24335;&amp;#36914;&amp;#34892;&amp;#39511;&amp;#35657;(&amp;#38656;&amp;#35201;&amp;#26377;&amp;#33258;&amp;#24049;&amp;#30340;&amp;#32178;&amp;#38913;&amp;#20282;&amp;#26381;&amp;#22120;)&lt;br&gt;&lt;/div&gt;&lt;div id="x01q" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1814dvgpdnd7_b" style="height:342.22px;width:648px"&gt;&lt;/div&gt;&lt;div id="rfgx" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1815dfkmm7dg_b" style="height:342.22px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#20877;&amp;#20358;&amp;#26159;EMAIL&amp;#30340;&amp;#35373;&amp;#23450;&amp;#65292;&amp;#38656;&amp;#35201;&amp;#35373;&amp;#23450;DNS&amp;#30340;MX&amp;#35352;&amp;#37636;&amp;#65292;&amp;#25351;&amp;#21521;GOOGLE&amp;#30340;MAIL&amp;#31649;&amp;#29702;&amp;#20282;&amp;#26381;&amp;#22120;&amp;#65292;&amp;#25165;&amp;#33021;&amp;#35731;GOOGL&amp;#38918;&amp;#21033;&amp;#21033;&amp;#29992;&amp;#27492;&amp;#32178;&amp;#22495;&amp;#25910;&amp;#30332;&amp;#20449;&lt;br&gt;&lt;/div&gt;&lt;div id="swzj" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1816gth8b2hs_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#36889;&amp;#37002;&amp;#20351;&amp;#29992;&amp;#20813;&amp;#36027;&amp;#32178;&amp;#22495;twbbs&amp;#65292;&amp;#35373;&amp;#23450;MX&amp;#35352;&amp;#37636;&amp;#35731;EMAIL&amp;#29983;&amp;#25928;&lt;br&gt;&lt;/div&gt;&lt;div id="ed0." style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1817dc2dxk77_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;br&gt;&amp;#24190;&amp;#23567;&amp;#26178;&amp;#24460;&amp;#65292;&amp;#20320;&amp;#30340;email&amp;#26381;&amp;#21209;&amp;#23601;&amp;#21487;&amp;#20197;&amp;#20351;&amp;#29992;&amp;#20102;!!&lt;br&gt;&lt;/div&gt;&lt;div id="ilpd" style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfv6xn5d_1818gtjpv4hp_b" style="height:458.438px;width:648px"&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1587690323426631150?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1587690323426631150/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1587690323426631150' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1587690323426631150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1587690323426631150'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/05/googleapps.html' title='申請使用GoogleApps免費服務記錄'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2653301508309753295</id><published>2010-04-29T17:00:00.003+08:00</published><updated>2011-08-27T11:50:25.248+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map API'/><category scheme='http://www.blogger.com/atom/ns#' term='FLEX'/><title type='text'>GOOGLE MAP 導航</title><content type='html'>使用 FLEX 測試 GOOGLE MAP API ，簡單的導航功能的應用。&lt;br /&gt;&lt;br /&gt;線上DEMO： &lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/GoogleMapTest/GoogleMapTest.html"&gt;http://www.asn.com.tw/flex/GoogleMapTest/GoogleMapTest.html&lt;/a&gt;&lt;br /&gt;20110827連結更新… &lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/GoogleMapTest/GoogleMapTest.html"&gt;http://www.vercenter.nknu.edu.tw/flex/GoogleMapTest/GoogleMapTest.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;mxml 原始碼：&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?docid=0AQb8tm8yloBcZGZ2NnhuNWRfMTgwN2Q5NjlkcWNq&amp;amp;hl=zh_TW"&gt;http://docs.google.com/Doc?docid=0AQb8tm8yloBcZGZ2NnhuNWRfMTgwN2Q5NjlkcWNq&amp;amp;hl=zh_TW&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;參考教學：&lt;br /&gt;&lt;a href="http://code.google.com/intl/zh-TW/apis/maps/documentation/flash/"&gt;http://code.google.com/intl/zh-TW/apis/maps/documentation/flash/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;關鍵字：&lt;span style="color: yellow;"&gt;Marker,Directions,ClientGeocoder&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2653301508309753295?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2653301508309753295/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2653301508309753295' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2653301508309753295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2653301508309753295'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/04/google-map.html' title='GOOGLE MAP 導航'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5534549909276612501</id><published>2010-04-27T02:16:00.000+08:00</published><updated>2010-05-23T16:45:33.384+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Flartoolkit'/><title type='text'>MikuMikuDance use PMDViewer and FLARToolkits Multimarker/CubeMarker</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SL42QwZ-bVE&amp;hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/SL42QwZ-bVE&amp;hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5534549909276612501?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5534549909276612501/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5534549909276612501' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5534549909276612501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5534549909276612501'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/04/mikumikudance-use-pmdviewer-and.html' title='MikuMikuDance use PMDViewer and FLARToolkits Multimarker/CubeMarker'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7219032029998387614</id><published>2010-03-19T17:13:00.000+08:00</published><updated>2010-03-19T17:13:32.762+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>FLEX AIR 包裝應用程式 ICON 的問題</title><content type='html'>在開發 AIR&amp;nbsp; 應用程式後，若要包裝自己的應用程式，並且加上自訂的圖示的話，可以到 project\src\your-app.xml 找到…&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- &amp;lt;icon&amp;gt;&lt;br /&gt;&amp;lt;image16x16&amp;gt;&amp;lt;/image16x16&amp;gt;&lt;br /&gt;&amp;lt;image32x32&amp;gt;&amp;lt;/image32x32&amp;gt;&lt;br /&gt;&amp;lt;image48x48&amp;gt;&amp;lt;/image48x48&amp;gt;&lt;br /&gt;&amp;lt;image128x128&amp;gt;&amp;lt;/image128x128&amp;gt;&lt;br /&gt;&amp;lt;/icon&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;修改成…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;icon&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;image32x32&amp;gt;images/icon.png&amp;lt;/image32x32&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/icon&amp;gt;&lt;br /&gt;&lt;br /&gt;要注意，若你只有一個 32x32 的 ICON 就只要留下&amp;nbsp; &amp;lt;image32x32&amp;gt;&amp;lt;/image32x32&amp;gt; 這行即可，千萬別把其它留空白，否則會包裝失敗還一直查不出原因…錯誤示範如下…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;icon&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;image16x16&amp;gt;&amp;lt;/image16x16&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;image32x32&amp;gt;images/icon.png&amp;lt;/image32x32&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;image48x48&amp;gt;&amp;lt;/image48x48&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;image128x128&amp;gt;&amp;lt;/image128x128&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/icon&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7219032029998387614?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7219032029998387614/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7219032029998387614' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7219032029998387614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7219032029998387614'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/03/flex-air-icon_19.html' title='FLEX AIR 包裝應用程式 ICON 的問題'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7275615366116426277</id><published>2010-03-19T17:06:00.001+08:00</published><updated>2010-03-19T17:14:10.763+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>FMS串流撥放FLV(或RTMP)時截取其BITMAP的方式</title><content type='html'>在透過 FMS 撥放 rtmp 串流影音時，若你的 CLIENT 端除了撥放，還要抓圖作處理的話，會遇到如下的例外…&lt;br /&gt;&lt;br /&gt;SecurityError: Error #2123: Security sandbox violation:&amp;nbsp; &lt;br /&gt;BitmapData.draw: file:///xxx/xxx/xxx.swf &lt;br /&gt;cannot access rtmp://xxx.xxx.xxx/live. No policy files granted access.&lt;br /&gt;&lt;br /&gt;解決方式如下… &lt;br /&gt;1. COPY 安裝範例 C:\Program Files\Adobe\Flash Media Server 3.5\samples\applications\vod 到你自己的應用程式。(有興趣可以研究看看其寫法)&lt;br /&gt;&lt;br /&gt;2. 修改 Application.xml 檔，在 &amp;lt;client&amp;gt;&amp;lt;/client&amp;gt; 區間加入…&lt;br /&gt;&lt;br /&gt;&amp;lt;Access&amp;gt;&lt;br /&gt;&amp;lt;VideoSampleAccess enabled="true"&amp;gt;/&amp;lt;/VideoSampleAccess&amp;gt;&lt;br /&gt;&amp;lt;/Access&amp;gt; &lt;br /&gt;&lt;br /&gt;3. 修改 main.asc (即 Server-side-code)…&lt;br /&gt;找到 application.onConnect = function( p_client, p_autoSenseBW )&lt;br /&gt;這邊是用來處理當有 client 連到這個 server app 時的對應函式，幾個相關參數設定如下…&lt;br /&gt;&lt;br /&gt;writeAccess:&lt;br /&gt;若你有用到 shared object 或 live streams，就把它註解掉&lt;br /&gt;//p_client.writeAccess = ""; // prevents creating shared object or live streams.&lt;br /&gt;&lt;br /&gt;audioSampleAccess:&lt;br /&gt;允許 client side 直接抓取音效 raw data，利用 SoundMixer.computeSpectrum() 處理音效&lt;br /&gt;p_client.audioSampleAccess = "/";&lt;br /&gt;&lt;br /&gt;audioSampleAccess:&lt;br /&gt;允許 client side 直接抓取影片 raw data，利用  BitmapData.draw() 抓圖&lt;br /&gt;p_client.videoSampleAccess = "/";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;參考這篇: &lt;a href="http://www.thebluepipe.com/Developer/tutorials/as3/Crossdomain-Video-Snapshot-Fixing-BitmapData-draw-Security-Sandbox-Violation.html"&gt;http://www.thebluepipe.com/Developer/tutorials/as3/Crossdomain-Video-Snapshot-Fixing-BitmapData-draw-Security-Sandbox-Violation.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7275615366116426277?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7275615366116426277/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7275615366116426277' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7275615366116426277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7275615366116426277'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/03/fmsflvrtmpbitmap.html' title='FMS串流撥放FLV(或RTMP)時截取其BITMAP的方式'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3472753819451897804</id><published>2010-01-12T17:18:00.000+08:00</published><updated>2010-01-12T17:18:54.496+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP中計算某一周的起始及結束日期</title><content type='html'>以星期日為一周起始，函式傳入年份及第幾周，函式傳出開始及結束日期。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function findWeekPeriod( $week, $year )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $aPeriod = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $first_day = strtotime($year."-01-01");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $is_week_first_day = date("w", $first_day) == 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $is_weekone = strftime("%V", $first_day) == 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($is_weekone)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $week_one_start = $is_week_first_day ? strtotime("last sunday",$first_day) : $first_day;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $week_one_start = strtotime("next sunday", $first_day);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $aPeriod['start'] =&amp;nbsp; date("Y年m月d日", $week_one_start+(3600*24*7*($week-1)) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $aPeriod['end'] =&amp;nbsp; date("Y年m月d日", $week_one_start+(3600*24*(7*$week-1)) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $aPeriod;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;例如…&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $week=date('W');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $year=date('Y');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $wPeriod=findWeekPeriod( $week, $year );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 傳回當周的起始結束日期。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3472753819451897804?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3472753819451897804/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3472753819451897804' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3472753819451897804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3472753819451897804'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/01/php.html' title='PHP中計算某一周的起始及結束日期'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6024230519138143836</id><published>2010-01-05T23:38:00.000+08:00</published><updated>2010-01-05T23:39:17.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Face Detection'/><title type='text'>AS3 Face Detection 練習</title><content type='html'>臉部辨識練習。&lt;br /&gt;&lt;br /&gt;測試影片:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=EHocW-Bkqkc"&gt;http://www.youtube.com/watch?v=EHocW-Bkqkc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;線上DEMO:(需有 Webcam 視訊，正面對鏡頭) &lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/FaceDetector/FaceDetectorXML.html"&gt;http://www.asn.com.tw/flex/FaceDetector/FaceDetectorXML.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;參考網站:&lt;br /&gt;&lt;a href="http://www.squidder.com/2009/02/26/realtime-face-detection-in-flash/"&gt;http://www.squidder.com/2009/02/26/realtime-face-detection-in-flash/&lt;/a&gt;&lt;br /&gt;這個網站以 &lt;a href="http://en.wikipedia.org/wiki/OpenCV"&gt;OpenCV&lt;/a&gt; 為基礎，改寫成 flash 版本，效能不錯。&lt;br /&gt;&lt;br /&gt;這邊還有一個網站有把它作些優化…&lt;br /&gt;&lt;a href="http://www.quasimondo.com/archives/000687.php%20"&gt;http://www.quasimondo.com/archives/000687.php &lt;/a&gt;&lt;br /&gt;主要是 haarcascade 檔的載入把它轉成一個靜態的類別，但這樣變成只能作臉部辨識，haarcascade 就不能動態載入了。&lt;br /&gt;&lt;br /&gt;*haarcascade 檔是拿來述描所要辨識的影像的特徵集。&lt;br /&gt;&lt;br /&gt;squidder 載入的 haarcascade 檔是一個包含 &lt;a href="http://en.wikipedia.org/wiki/Adler-32"&gt;Adler-32&lt;/a&gt; Checksum 的 ZIP 壓縮檔，使用上比較不方便，我用了 &lt;a href="http://nochump.com/blog/?p=15"&gt;nochump&lt;/a&gt; 的 ZIP LIB 寫了一個簡單的 ZipLoader.as 來給這個 DEMO 使用，好方便載入不同的 haarcascade 檔，使用時只要把 HaarCascadeLoader.as 原始檔中的 "import jp.maaash.net.ZipLoader" REMARK 掉即可(當然，你還要有&lt;a href="http://nochump.com/blog/?p=15"&gt; nochump&lt;/a&gt; 的 ZIP LIB)。&lt;br /&gt;&lt;br /&gt;有試過安裝 &lt;a href="http://en.wikipedia.org/wiki/OpenCV"&gt;OpenCV&lt;/a&gt; 並使用它的其它 haarcascade 檔，例如手部、眼睛…，可惜沒有辨識成功~"~，還需要再研究。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ZipLoader.as...&lt;br /&gt;package&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import nochump.util.zip.*;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.EventDispatcher;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.Event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.net.URLRequest;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.utils.IDataInput;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.utils.ByteArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.net.URLLoader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.net.URLLoaderDataFormat;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class ZipLoader extends EventDispatcher{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var debug:Boolean;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var _url:String;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var req:URLRequest;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var data:ByteArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function ZipLoader(d:Boolean=false){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; debug = d;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; req = new URLRequest;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function load():void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var xmlLoader:URLLoader = new URLLoader();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xmlLoader.addEventListener(Event.COMPLETE, onLoadXML);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xmlLoader.dataFormat = URLLoaderDataFormat.BINARY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; xmlLoader.load(req);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function onLoadXML(e:Event):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var zipFile:ZipFile = new ZipFile(e.target.data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var entry:ZipEntry = zipFile.entries[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //trace(entry.name);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // extract the entry's data from the zip&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data = zipFile.getInput(entry);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //trace(data.toString());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dispatchEvent( e.clone() );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function set url(u:String):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _url = u;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; req.url = _url;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function getContentAsString():String{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return data.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function logger(... args):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!debug){ return; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; log(["[ZipLoader]"+args.shift()].concat(args));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6024230519138143836?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6024230519138143836/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6024230519138143836' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6024230519138143836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6024230519138143836'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2010/01/as3-face-detection.html' title='AS3 Face Detection 練習'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7615551632870035816</id><published>2009-12-30T01:13:00.000+08:00</published><updated>2010-01-05T23:39:52.979+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Flartoolkit'/><title type='text'>FlarDetector - make a hole underground</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=CW9imHbbljU"&gt;http://www.youtube.com/watch?v=CW9imHbbljU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;使用 FlarDetector 作成的地洞測試影片，加上在 3DS MAX 作的 miku 動畫、彩虹及程式中運算的 3D 彈跳球。&lt;br /&gt;&lt;br /&gt;project source ...&lt;br /&gt;&lt;a href="http://code.google.com/p/flardetector/"&gt;http://code.google.com/p/flardetector/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7615551632870035816?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7615551632870035816/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7615551632870035816' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7615551632870035816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7615551632870035816'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/12/flardetector-make-hole-underground.html' title='FlarDetector - make a hole underground'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6399080448055143271</id><published>2009-12-22T09:14:00.006+08:00</published><updated>2009-12-31T14:41:15.463+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Flartoolkit'/><title type='text'>FLARToolKit Multi Marker Detector &amp; Cube type Marker 實作</title><content type='html'>&lt;b&gt;ARis...&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.geishatokyo.com/jp/ar-figure/"&gt;ARis&lt;/a&gt; 是日本一間公司出品的產品，應用了 &lt;a href="http://www.hitl.washington.edu/artoolkit/"&gt;ARToolKit&lt;/a&gt; 技術。&lt;br /&gt;展示影片在這…&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=yCCx7zANsGE"&gt;http://www.youtube.com/watch?v=yCCx7zANsGE&lt;/a&gt;&lt;br /&gt;YouTube上可以找到更多類似的影片。 &lt;br /&gt;&lt;br /&gt;這邊是我用 &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 自己作的 DEMO，當然，不止是能運用在這方面( 指宅男專用 )，像是商業產品的3D 展示也可以這樣用，在全像投影真正普及化實現之前，我想 AR 技術或許是最快實現類似體驗的方法吧? ( 配合 AR 眼鏡 )&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DEMO VIDEO...&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=W9s2ldmd9Vc"&gt;http://www.youtube.com/watch?v=W9s2ldmd9Vc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DEMO ONLINE...&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/FlarMikuDemo/PV3DFlarTest.html"&gt;http://www.asn.com.tw/flex/FlarMikuDemo/PV3DFlarTest.html&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;要線上執行需要列印出上列 Marker 檔，將其中的方塊組合起來，並且準備一台 Webcam，程式運行後再將 Webcam 對準方塊就會出現人偶嘍~(還有牛)!!!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Markers...&lt;/b&gt;&lt;br /&gt;ARis Marker : &lt;a href="http://www.asn.com.tw/flex/FlarMikuDemo/Data/ARisMarker.jpg"&gt;http://www.asn.com.tw/flex/FlarMikuDemo/Data/ARisMarker.jpg&lt;/a&gt;&lt;br /&gt;Cube Marker : &lt;a href="http://www.asn.com.tw/flex/FlarMikuDemo/Data/CubeMarker.jpg"&gt;http://www.asn.com.tw/flex/FlarMikuDemo/Data/CubeMarker.jpg&lt;/a&gt; &lt;br /&gt;要自建 Marker 檔可以到…&lt;br /&gt;&lt;a href="http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released/"&gt;http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;======== 底下給有興趣寫 AR 程式的人作參考 ========&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MultiMarker...&lt;/b&gt; &lt;br /&gt;這個程式等於是  &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 複數 Marker 的應用，在  &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 中有個 FLARMultiMarkerDetector 的類別，是用來同時偵測多個 Marker 用的，MultiMarker 的偵測需要管理多個 Maeker 的 ARCode。&lt;br /&gt;網路上有現成的多偵測點 Marker 管理函式庫 &lt;a href="http://words.transmote.com/wp/flarmanager/"&gt;FLARManager&lt;/a&gt;…&lt;br /&gt;這個 MultiMarker 管理類別功能蠻強大的，包含多點偵測、圖形二元化閥值最佳化、座標位置 smooth 及動態點預測…。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FlarDetetor...&lt;/b&gt; &lt;br /&gt;不過我沒有實際去用 &lt;a href="http://words.transmote.com/wp/flarmanager/"&gt;FLARManager&lt;/a&gt;，而是自己寫了個簡化版的 FlarDetetor，一樣是 MultiMarker Detect，還蠻好用的，我的 ARis 就是利用這個類別作出來的。 &lt;br /&gt;&lt;br /&gt;FlarDetetor 特色：&lt;br /&gt;一、多個 Marker 同時偵測。&lt;br /&gt;二、事件觸發 ( MARKER_ADDED、MARKER_UPDATED、MARKER_REMOVED )。&lt;br /&gt;三、完全獨立的一個類別，低耦合，只用到原始的 &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 類別。&lt;br /&gt;四、俱備簡易 smooth 功能。&lt;br /&gt;&lt;br /&gt;如何使用：&lt;br /&gt;一、初始化，跟一般 &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 應用程式一樣代入 FLARParam 跟 Webcam 的 Bitmapdata。&lt;br /&gt;&lt;br /&gt;&lt;div style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FlarDetector.init(_capture);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;二、 建立 FlarObject 物件並載入 Marker 檔，然後加入 PV3D scene 中。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: yellow;"&gt; var cube:FlarCube = new FlarCube ();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cube.detector.loadCode( 'cube.pat',16,100 );&lt;/span&gt; /// 注意後面二個 width 參數要與當初存 patern 時一致，否則測不出來唷。&lt;br /&gt;&lt;div style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.scene.addChild( cube ); &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;三、最後只要在 PV3D Render 的時候 detect 即可自動分派事件。&lt;br /&gt;&lt;br /&gt;&lt;div style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FlarDetector.detectMarkerLite();&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FlarObject...&lt;/b&gt;&lt;br /&gt;這個類別便是拿來裝你的 PV3D 子物件的容器，繼承自 &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 的 FLARBaseNode 類別，並且有基本的一個 FlarDetector 及預設的事件反應，當 FlarDetector偵測到時便進行座標方位的轉換。&lt;br /&gt;比較特別的地方在於我使用了一個 _pivot:DisplayObject3D 作為內容器，好方便底下延伸類別的座標軸轉換，所有子物件都放在 pivot中，就可以自由在程式控制相對位置跟方向，而不會受 Node Transform 的影響。&lt;br /&gt;當然，其實 FlarDetector 是蠻低耦合的一個類別，你也可以直接使用 FlarDetector 在任何的場合，創造你自己的類別，也不一定要配合 PV3D 來使用，把 FlarDetector 當成一個單純的 Sensor 來使用即可。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FlarARisCube...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;至於六面體 Marker 的偵測，網路上可以找到 Tarotaro 的 5 面立方體範例…&lt;br /&gt;&lt;a href="http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/"&gt;http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;他的演算法是將水平的四個面用二個 Marker 解決，一個偵測用，一個判斷面向用，再加上上面一個 Marker 總共三個，真聰明丫，詳細的演算法可以參考…&lt;br /&gt;&lt;a href="http://flash.tarotaro.org/blog/2009/06/10/about-cube-detection-algorithm/"&gt;http://flash.tarotaro.org/blog/2009/06/10/about-cube-detection-algorithm/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;但是可惜是這個方法只能作 5 面偵測，從底下往上看沒有(要幹嘛?!)，而且水平的四個面的 Marker 必需有一定的規則，Marker 的設計要比較注意。&lt;br /&gt;&lt;br /&gt;這 個函式庫我也沒實際去用，於是又寫了個 FlarARisCube 的類別，這個類別其實只是在一個類別中放了六個 FlarDetector，再在偵測到時轉換一下座標而己，只是在轉換座標時搞的有點暈頭轉向，我的方法是比較直接的方式，效能沒 Tarotaro 的好，只能說是比較容易實現的方法。&lt;br /&gt;&lt;br /&gt;最後則是六面體方塊在上仰角度時，會有遮罩的效果，讓六面體看起來更直實(能遮到人偶)，我是參考 &lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit&lt;/a&gt; 的原作者 saqoosha 的這篇文章…&lt;br /&gt;&lt;a href="http://saqoosha.net/en/2009/01/08/1676/"&gt;http://saqoosha.net/en/2009/01/08/1676/ &lt;/a&gt;&lt;br /&gt;文章是介紹地上打洞的效果，不過原理一樣 ( 地上打洞很酷丫，下回再來作 ^ ^ )。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Finally… &lt;/b&gt;&lt;br /&gt;一連串的學習QQ"，總算成功，出現人偶嘍~(還有牛)~呵呵呵。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Source Code... &lt;/b&gt;&lt;br /&gt;原始程式下載：( 包含 papervision3d 及 flartoolkit )-原始版本&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/FlarMikuDemo/FlarMikuDemo.zip"&gt;http://www.asn.com.tw/flex/FlarMikuDemo/FlarMikuDemo.zip &lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2009/12/22 - 最新的 source 改放在 google code，&lt;a href="http://code.google.com/p/flardetector/"&gt;http://code.google.com/p/flardetector/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;( 不包含 papervision3d 及 flartoolkit )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6399080448055143271?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6399080448055143271/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6399080448055143271' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6399080448055143271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6399080448055143271'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/12/flartoolkit-multi-marker-detector-cube.html' title='FLARToolKit Multi Marker Detector &amp; Cube type Marker 實作'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4603000606710456642</id><published>2009-12-10T12:22:00.003+08:00</published><updated>2009-12-22T09:17:36.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Flartoolkit'/><title type='text'>Flartoolkits - Load DAE &amp; Make your own Marker Online</title><content type='html'>在網路上即時載入 DAE 3D 模型，透過視訊即時的在線上建立 Flar 物件的 Marker。&lt;br /&gt;&lt;br /&gt;操作方式：&lt;br /&gt;1. Load DAE file，預設己經載入三個模組。 &lt;br /&gt;2. 下拉選單點選你要操作的FLAR物件。&lt;br /&gt;3. 用麥克筆或印表機畫出你自訂的圖樣(正方形黑色邊框+裡面塗上簡易圖示)。&lt;br /&gt;4. 按下 Detect Pattern，把視訊對準圖樣。&lt;br /&gt;5. 當紅色標示出現在正確的位置時按下 Set Pattern。&lt;br /&gt;6. 下方操控面板可以控制物件的大小及角度。&lt;br /&gt;(亦可直接點選畫面上的物件操作)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DEMO VIDEO:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Hp2qY4_Ez_Y"&gt;http://www.youtube.com/watch?v=Hp2qY4_Ez_Y &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ONLINE DEMO: &lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/PV3DFlar/MarkerGeneratorOnline.html"&gt;http://www.asn.com.tw/flex/PV3DFlar/MarkerGeneratorOnline.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4603000606710456642?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4603000606710456642/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4603000606710456642' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4603000606710456642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4603000606710456642'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/12/flartoolkits-load-dae-make-your-own.html' title='Flartoolkits - Load DAE &amp; Make your own Marker Online'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4559678857317581493</id><published>2009-12-08T09:48:00.001+08:00</published><updated>2009-12-08T09:52:46.466+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCU'/><title type='text'>紅外線發射程式</title><content type='html'>最近用微處理器(MCU)寫了個紅外線發射的程式…&lt;br /&gt;原本的想法太過於複雜，程式寫久了會想要把東西寫的更靈活，於是會自己加了很多動態的計算、即時的判斷程式碼，沒想到對系統資源有限、時序要求非常嚴苛的 MCU 卻是一種負擔，這在多核的MCU如FPPA下不是什麼大問題，但在傳統的 MCU 如 EMC 或 PIC 卻會讓你越靈活就越難以控制(尤其是當你用C而不用組合語言來寫的時候)。&lt;br /&gt;在重新思考及嘗試後才發現原來程式很簡單…&lt;br /&gt;&lt;br /&gt;/// 這邊的編碼是以 SM5032 為例…&lt;br /&gt;void IR_Bit0( void )&lt;br /&gt;{&lt;br /&gt;/// 產生1/4週期的38KHZ載波&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IR_Bit1( void )&lt;br /&gt;{&lt;br /&gt;/// 產生3/4週期的38KHZ載波&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IR_Empty( void )&lt;br /&gt;{&lt;br /&gt;/// 空周期延時&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IR_Head( void ){&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Bit1();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Bit1();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Bit0();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IR_Custom( void )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Bit1();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Bit1();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IR_Tail( void )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Empty();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Empty();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Empty();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IR_Empty();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#define _0 IR_Bit0();&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;#define _1 IR_Bit1();&lt;br /&gt;#define _H IR_Head();&amp;nbsp;&amp;nbsp;&amp;nbsp; /// HEAD code&lt;br /&gt;#define _C IR_Custom();/// Custom code&lt;br /&gt;#define _T IR_Tail(); /// End code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial_IO();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( BTN0 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _0 _0 _0 _0 _0 _1 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN1 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _0 _0 _0 _0 _1 _0 _T&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN2 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _0 _0 _1 _0 _0 _0 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN3 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _1 _0 _0 _0 _0 _1 _1 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN4 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _0 _0 _0 _1 _0 _0 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN5 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _0 _1 _0 _0 _0 _0 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else if( BTN6 == 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _H _C _0 _1 _0 _0 _0 _0 _0 _T&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另外有一點要特別注意，一般紅外線發射會使用455KHZ的晶振，算是比較低頻，各家 MCU 特性不同，有可能會需要在 OSCO 串上個串聯電組 (5-10K)才會正常起振。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4559678857317581493?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4559678857317581493/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4559678857317581493' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4559678857317581493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4559678857317581493'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/12/blog-post.html' title='紅外線發射程式'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4338851718179228394</id><published>2009-12-06T13:12:00.000+08:00</published><updated>2009-12-08T09:51:42.946+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>有趣的 FLARToolKIT</title><content type='html'>&amp;nbsp;結合 webcam 產生像是虛擬+實境融合的效果(&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Augmented Reality)&lt;/span&gt;~ &lt;br /&gt;&lt;a href="http://blog.papervision3d.org/2009/01/07/augmented-reality-with-flartoolkit/"&gt;http://blog.papervision3d.org/2009/01/07/augmented-reality-with-flartoolkit/&lt;/a&gt;&lt;br /&gt;網路上有一大堆很酷的作品唷。 &lt;br /&gt;&lt;br /&gt;&lt;a href="http://saqoosha.net/en/flartoolkit/start-up-guide/"&gt;FLARToolKit &lt;/a&gt;是一位日本人將 &lt;a href="http://www.hitl.washington.edu/artoolkit/"&gt;ARToolKit&lt;/a&gt;&amp;nbsp; 改寫成 AS3版本，再配合 3D 引擎 (如 Papervision3D ) 作成的。&lt;br /&gt;&lt;br /&gt;主要的原理是利用事先製作好的圖像(marker)作為辨識它在現實環境中的 3D 位置、角度…等等的資料，再套用到螢幕這個 marker 所代表的 3D 物件，結合 webcam 畫面就造成這樣的視覺效果了。&lt;br /&gt;&lt;br /&gt;底下是自己練習的成果影片… &lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=tyQWHQH28iM"&gt;http://www.youtube.com/watch?v=tyQWHQH28iM&lt;/a&gt; &lt;br /&gt;可以想像一下整個房間貼滿 marker 或 全身穿上有 marker 的衣服會是怎樣的情景~^ ^，有很多發揮創意的空間。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;線上 Demo 在這…&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/PV3DFlar/PV3DFlar.html"&gt;http://www.asn.com.tw/flex/PV3DFlar/PV3DFlar.html&lt;/a&gt;&lt;br /&gt;*要使用線上 Demo 必須準備 webcam，再列印我使用的二種 marker，到這個網址後會提示啟用 webcam，再把 marker 對著&amp;nbsp; webcam 鏡頭晃，就會在螢幕上看到效果了。&lt;br /&gt;*我的 marker &lt;a href="http://www.asn.com.tw/flex/PV3DFlar/Data/marker.pdf"&gt;可以在這下載&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4338851718179228394?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4338851718179228394/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4338851718179228394' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4338851718179228394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4338851718179228394'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/12/flartoolkit.html' title='有趣的 FLARToolKIT'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6914905066533929215</id><published>2009-11-29T18:10:00.001+08:00</published><updated>2011-08-27T12:02:02.644+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='FLEX'/><title type='text'>PV3D 練習 - Facebook 好友大頭照</title><content type='html'>DEMO:(需登入fb)&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/20091129.htm"&gt;http://www.asn.com.tw/flex/20091129.htm&lt;/a&gt;&lt;br /&gt;20110827更新連結…&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/FacebookFriends/LongfellowHelloFlex.html"&gt;http://www.vercenter.nknu.edu.tw/flex/FacebookFriends/LongfellowHelloFlex.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在 facebook 上登入，讀取好友名單及大頭照，再將大頭照轉成 BitmapMaterial，用這個材質生成 PLANE，再置入 PV3D 場景中。&lt;br /&gt;&lt;br /&gt;效果跟效能，並不是絕對的反比關係。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOURCE:&lt;br /&gt;package study&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import game.FacebookAP;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import com.facebook.data.users.FacebookUser;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.Bitmap;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.Loader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.LoaderInfo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.Event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.MouseEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.filters.BlurFilter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.net.URLRequest;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.system.LoaderContext;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.core.effects.view.ReflectionView;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.core.math.Quaternion;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.cameras.CameraType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.materials.BitmapMaterial;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.objects.DisplayObject3D;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import org.papervision3d.objects.primitives.Plane;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class study21 extends ReflectionView&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var currentQuat:Quaternion = new Quaternion();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var targetQuat:Quaternion = new Quaternion();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var slerp:Number = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var fbRadius:Number;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var carousel:DisplayObject3D = new DisplayObject3D();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var isMouseDown:Boolean;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var fb:FacebookAP;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var save_mouseX:Number;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var save_rotationY:Number;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static var planeWidth:Number = 50;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static var planeHeight:Number = 50;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function study21()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; super(0,0,true,false,CameraType.FREE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.addEventListener(Event.ADDED_TO_STAGE, init0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function init0( event:Event ):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.removeEventListener(Event.ADDED_TO_STAGE, init0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fb = new FacebookAP();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fb.addEventListener( Event.COMPLETE, init1 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fb.init();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function init1( event:Event ):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fb.removeEventListener( Event.COMPLETE, init1 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; opaqueBackground=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; surfaceHeight = -5;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewport.interactive=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewportReflection.filters = [new BlurFilter(3,3,3)];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setReflectionColor(.7, .7, .7);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fbRadius = ( fb.friends.length * (planeWidth+planeWidth/2) )/(2*Math.PI);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; camera.target = carousel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; camera.position = carousel.position;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; camera.y = planeHeight/2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; camera.moveBackward( fbRadius+150 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( var i:int=0; i&lt;fb.friends.length; i++)=""&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; var user:FacebookUser = fb.friends.getItemAt(i) as FacebookUser;&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; var lc:LoaderContext = new LoaderContext(true);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &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; var loader:Loader = new Loader();&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; loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onLoadBitmap );&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; if( user.pic_square == "" )&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; loader.load(new URLRequest( "images/q_silhouette.gif" ), lc );&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; else&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; loader.load(new URLRequest( user.pic_square ), lc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scene.addChild(carousel);&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; this.addEventListener(Event.ENTER_FRAME, onENTER_FRAME );&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; this.stage.addEventListener( MouseEvent.MOUSE_DOWN, onMOUSE_DOWN );&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; this.stage.addEventListener( MouseEvent.MOUSE_UP, onMOUSE_UP );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function onLoadBitmap( event:Event ):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var bodyMaterial:BitmapMaterial = new BitmapMaterial( Bitmap(LoaderInfo(event.target).content).bitmapData );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bodyMaterial.interactive=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bodyMaterial.doubleSided=true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var plane:DisplayObject3D = new Plane( bodyMaterial,planeWidth,planeHeight,1,1 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; plane.rotationY = ( 360 / fb.friends.length ) * carousel.numChildren;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; plane.moveForward( fbRadius );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; plane.y = planeHeight/2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; carousel.addChild(plane);&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; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onMOUSE_DOWN(e:Event):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isMouseDown = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; save_mouseX = this.stage.mouseX;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; save_rotationY = carousel.rotationY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onMOUSE_UP(e:Event):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isMouseDown = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onENTER_FRAME(e:Event):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( isMouseDown )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; carousel.rotationY = save_rotationY + (180/Math.PI)*Math.atan((save_mouseX-this.stage.mouseX)/(fbRadius+150));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&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; carousel.rotationY -= ( this.stage.mouseX - this.stage.stageWidth/2 )/200;&lt;br /&gt;&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; slerp += (1 - slerp) * .05;&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; var quat:Quaternion = Quaternion.slerp( currentQuat, targetQuat, slerp );&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; carousel.transform = quat.matrix;&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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; singleRender();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/fb.friends.length;&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6914905066533929215?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6914905066533929215/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6914905066533929215' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6914905066533929215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6914905066533929215'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d-facebook.html' title='PV3D 練習 - Facebook 好友大頭照'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8377358753621117260</id><published>2009-11-27T02:12:00.002+08:00</published><updated>2011-08-27T11:52:39.006+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>PV3D 練習 - 加入影片</title><content type='html'>現在可以邊開車邊看電視了 ^ ^" &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/cardrive/CarDriver4.html"&gt;http://www.asn.com.tw/flex/cardrive/CarDriver4.html&lt;/a&gt;&lt;br /&gt;20110827連結更新…&lt;br /&gt;&lt;a href="http://www.vercenter.nknu.edu.tw/flex/CarDriver/CarDriver.html"&gt;http://www.vercenter.nknu.edu.tw/flex/CarDriver/CarDriver.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;不過所使用的影片檔是伺服端的 flv 檔，若要使用外部的連結(如 youtube)，則會有 security domain 的問題，還要再研究。&lt;br /&gt;&lt;br /&gt;幾個問題要注意…&lt;br /&gt;&lt;br /&gt;一、DAE 物件有可能是很多個小物件組成的，在 3DS 裡會有不同的名稱及材質名稱，若需要讓 DAE 物件能產生事件 ( 譬如這個例子中液晶電視的畫面會接收滑鼠按下的事件來停止、撥放影片 )，必須從讀入的 DAE 物件中抽取出子物件 ( getChildByName )，再把這個子物件加上 InteractiveScene3DEvent (材質亦需事先設定好 interactive = true，才能正確接收到事件。&lt;br /&gt;&lt;br /&gt;二、同樣是 DAE 物件，由於物件的建立順序是先建立 DisplayObject3D 再 LOAD 進模型及上材質，因此在 Render 的時候要特別注意，別在還沒 FileLoadEvent.LOAD_COMPLETE 之前就先調用子物件 ( 例如本例中的車承軸及車輪 )，否則會誤用 NULL 物件。 解決的辦法是確認全部 LOAD 完再 startRendering 或者在每次使用前作 NULL check。&lt;br /&gt;&lt;br /&gt;三、材質使用貼圖 bitmap 時要特別小心原 bitmap 的檔案大小也會嚴重影響到 render 的效能 ( 例如被我消去的草坪 = ="，跟原本很大張的木箱圖 )。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;PV3D 的效能確實不是很理想，但想必隨著 ADOBE 日後支援 3D 硬體 GPU 加速 (希望早點實現 )，PV3D (或其它 WEB 3D 引擎 ) 應該也會更讚才是，在此之前，先把效率最優化的技巧學好吧~ ^ ^&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另外順便介紹一個超驚人的 Web 3D 引擎 UNITY，底下是官網 DEMO…&lt;br /&gt;&lt;a href="http://unity3d.com/gallery/live-demos/tropical-paradise"&gt;http://unity3d.com/gallery/live-demos/tropical-paradise&lt;/a&gt;&lt;br /&gt;需要安裝個小小元件才能看到，不過效果驚人。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8377358753621117260?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8377358753621117260/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8377358753621117260' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8377358753621117260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8377358753621117260'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d_27.html' title='PV3D 練習 - 加入影片'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1356951285638605534</id><published>2009-11-26T01:54:00.000+08:00</published><updated>2009-12-08T09:51:42.949+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>PV3D 練習-幾種加入光影材質的方式</title><content type='html'>開車加入光影材質…&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/cardrive/CarDriver3.html"&gt;http://www.asn.com.tw/flex/cardrive/CarDriver3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;幾種加入光影材質的方式…&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在PV3D 裡面有所謂的 shadematerial，用來產生會按照光源反應出明暗變化的效果的材質，在使用上很方便，只需產生一個點光源，再利用它來 new 出一個 ShadeMaterial，再賦予物件使用。&lt;br /&gt;&lt;br /&gt;最簡單的像是 org.papervision3d.materials.shadematerials 底下的 FlatShadeMaterial …&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function foo():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&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; var light:PointLight3D = new PointLight3D();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var shaderMaterial:FlatShadeMaterial =&amp;nbsp; new FlatShadeMaterial( light, 0x123456, 0x000000 );&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var plane:Plane = new Plane(shaderMaterial,500,500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;但有時會需要用貼圖的方式來生成物件的表面紋理，比較像真，這時要透過 shader 來重新製作俱備貼圖的 ShadedMaterial…&lt;br /&gt;&lt;br /&gt;[Embed(source="assets/photo.jpg")]&lt;br /&gt;private var bmpAsset:Class;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function foo():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var light:PointLight3D = new PointLight3D();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var yourBitmap:Bitmap = new bmpAsset() as Bitmap;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var bitmapMaterial:BitmapMaterial = new BitmapMaterial(yourBitmap.bitmapData);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var shader:FlatShader= new FlatShader( light, 0xffffff, 0x333333);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var shaderMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plane = new Plane(shaderMaterial,500,500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;上面是靜態讀圖的作法，但是若是透過 BitmapFileMaterial 動態即時讀圖檔，卻會失敗…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function foo():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var fileMaterial:BitmapFileMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /// after FileLoadEvent.LOAD_COMPLETE ....&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var light:PointLight3D = new PointLight3D();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var shader:FlatShader = new FlatShader(light, 0xFFFFFF, 0x333333);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var shaderMaterial:ShadedMaterial = new ShadedMaterial(&lt;span style="color: red;"&gt;fileMaterial&lt;/span&gt;, shader);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var plane:Plane = new Plane(shaderMaterial,500,500);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;因為 BitmapFileMaterial 並不是 BitmapMaterial 的子類別&amp;nbsp; ~"~，所以要稍微轉一下…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function foo():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fileMaterial:BitmapFileMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; /// after FileLoadEvent.LOAD_COMPLETE ....&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var light:PointLight3D = new PointLight3D();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var shader:FlatShader = new FlatShader(light, 0xFFFFFF, 0x333333);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: yellow;"&gt;var bitmapMaterial:BitmapMaterial = new BitmapMaterial( fileMaterial.bitmap );&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var shaderMaterial:ShadedMaterial = new ShadedMaterial(&lt;span style="color: blue;"&gt;bitmapMaterial&lt;/span&gt;, shader);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var plane:Plane = new Plane(shaderMaterial,500,500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;另外要注意，Cube 六面體若是要使用 ShadedMaterial 的話，六面都要 new 個新 shader 給它，否則會有三角形黑色塊產生 = ="，很麻煩，而且跑起來非常秏效能。&lt;br /&gt;&lt;br /&gt;org.papervision3d.materials.shader 底下還有很多種不同的 shader 可以使用，效果皆不同…&lt;br /&gt;FlatShader &lt;br /&gt;PhongShader&lt;br /&gt;CellShader&lt;br /&gt;EnvMapShader&lt;br /&gt;GouraudShader&lt;br /&gt;…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1356951285638605534?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1356951285638605534/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1356951285638605534' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1356951285638605534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1356951285638605534'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d_26.html' title='PV3D 練習-幾種加入光影材質的方式'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-298962571220258702</id><published>2009-11-24T22:34:00.000+08:00</published><updated>2009-12-08T09:51:42.950+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>多圖 BitmapFileMaterial 讀取方式</title><content type='html'>上次提到了 BitmapFileMaterial load 的時候使用一個 array，利用事件傳遞的方式來檢測什麼時候所有的圖片讀取完畢，好進行下一個有前後相依的步驟。&lt;br /&gt;&lt;br /&gt;結果，今天 trace 了一下 BitmapFileMaterial 這個類別，發現原來它早就有把類似的機制作在裡面了，在BitmapFileMaterial.as 的這行…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static public var callback :Function;&lt;br /&gt;&lt;br /&gt;於是，要讀取一連串的圖檔就變的更容易了…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function init():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;BitmapFileMaterial.callback = loadComplete;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; floorMaterial = new BitmapFileMaterial("assets/grassTexture.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bodyMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wheelMaterial = new BitmapFileMaterial("assets/FocusWheel.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boxMaterial = new BitmapFileMaterial("assets/box.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function loadComplete():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;BitmapFileMaterial.callback = null;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ///......&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;雖然如此，但使用上也要特別小心，因為 BitmapFileMaterial.callback 是 public static 的，意即所有其它程序也是有可能在你讀取一堆圖檔的時候，使用同樣的方式設定了 callback 的函式，那就會出錯嘍(潛藏的BUG)。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-298962571220258702?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/298962571220258702/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=298962571220258702' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/298962571220258702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/298962571220258702'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/bitmapfilematerial.html' title='多圖 BitmapFileMaterial 讀取方式'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1021287463232224107</id><published>2009-11-23T12:12:00.001+08:00</published><updated>2009-12-08T09:51:42.951+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>PV3D 防止破圖的幾種方法</title><content type='html'>一、使用 QuadrantRenderEngine…&lt;br /&gt;&lt;br /&gt;新版的 PV3D 可以使用 QuadrantRenderEngine 代替原來的 BasicRenderEngine&lt;br /&gt;&lt;br /&gt;renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS);&lt;br /&gt;&lt;br /&gt;但是效能很差，可能還需要細部的參數設定。&lt;br /&gt;&lt;br /&gt;二、自己手動作 ViewportLayer…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; objViewportLayer = new ViewportLayer(viewport, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; objViewportLayer.layerIndex = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewport.containerSprite.addLayer(objViewportLayer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; objViewportLayer.addDisplayObject3D(YOUR_OBJECT, true);&lt;br /&gt;&lt;br /&gt;同一層的物件依然存在破圖的問題，並且，上層物件絕對會遮蓋住下層物件，所以在分配上要自己作好控制，效能很好。&lt;br /&gt;&lt;br /&gt;三、在近距離的情況下，多邊形會被省略不畫而導致的缺面…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; renderer.clipping = new FrustumClipping(FrustumClipping.BOTTOM);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1021287463232224107?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1021287463232224107/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1021287463232224107' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1021287463232224107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1021287463232224107'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d_23.html' title='PV3D 防止破圖的幾種方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4248068457478466846</id><published>2009-11-21T01:49:00.008+08:00</published><updated>2009-12-08T09:51:42.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>PV3D 練習 - 開車</title><content type='html'>開車兜兜風… &lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/cardrive/cardrive.html"&gt;http://www.asn.com.tw/flex/cardrive/cardrive.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/cardrive/cardrive2.html"&gt;http://www.asn.com.tw/flex/cardrive/cardrive2.html&lt;/a&gt; with BOX2D &lt;br /&gt;&lt;br /&gt;程式參考…&lt;br /&gt;&lt;a href="http://pv3d.org/2009/01/23/springcamera3d-and-driving-a-car/"&gt;http://pv3d.org/2009/01/23/springcamera3d-and-driving-a-car/&lt;/a&gt;&lt;br /&gt;重點在 driveCar() 及 updateCar() 兩個函式。&lt;br /&gt;&lt;br /&gt;汽車控制幾乎都使用原作的，看別人的程式可以學到很多，沒想到原來不難，缺的大概就是經驗跟創意。&lt;br /&gt;&lt;br /&gt;另一個重點是汽車的模型，在建模的時候就要先規畫好，要能配合程式運作，包括物件軸心、面向、四個輪子的軸心跟方向、子物件的名稱…。&lt;br /&gt;&lt;br /&gt;圖檔及資源的讀取部份改寫如下…&lt;br /&gt;&lt;br /&gt;使用一個陣列 push 所有需要讀取資源的 loader，並加入事件監聽，在收到完成的事件後再移出陣例，最後判斷是否己全數讀取完成，再進行其它的初始化工作。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var loadAssets:Array = new Array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function initAssets():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; removeEventListener(Event.ADDED_TO_STAGE, initAssets);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; floorMaterial = new BitmapFileMaterial("assets/grassTexture.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; floorMaterial.addEventListener(FileLoadEvent.LOAD_COMPLETE,onLoadAssets);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: yellow;"&gt; loadAssets.push(floorMaterial);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bodyMaterial = new BitmapFileMaterial("assets/FocusBody.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bodyMaterial.addEventListener(FileLoadEvent.LOAD_COMPLETE,onLoadAssets);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: yellow;"&gt; loadAssets.push(bodyMaterial);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wheelMaterial = new BitmapFileMaterial("assets/FocusWheel.jpg");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wheelMaterial.addEventListener(FileLoadEvent.LOAD_COMPLETE,onLoadAssets);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: yellow;"&gt; loadAssets.push(wheelMaterial);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function onLoadAssets(e:FileLoadEvent):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var idx:Number = loadAssets.indexOf(e.target);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( idx != -1 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; if( e.target is BitmapFileMaterial )&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; (e.target as BitmapFileMaterial).removeEventListener(FileLoadEvent.LOAD_COMPLETE,onLoadAssets);&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; &lt;span style="color: yellow;"&gt;loadAssets.splice( idx, 1 );&lt;/span&gt;&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; if( loadAssets.length == 0 )&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; initOther();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4248068457478466846?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4248068457478466846/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4248068457478466846' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4248068457478466846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4248068457478466846'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d.html' title='PV3D 練習 - 開車'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8187400747161767071</id><published>2009-11-20T00:55:00.001+08:00</published><updated>2009-12-08T09:51:42.953+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>PV3D DAEMC2 練習</title><content type='html'>&lt;a href="http://code.google.com/p/daeanim/"&gt;DAEMC2 &lt;/a&gt;是一個讓 &lt;a href="http://pv3d.org/"&gt;PV3D&lt;/a&gt; 可以讀取 dae 動作模型的組件，藉由它，可以讓你在 PV3D 中控制撥放預先制作好的動作。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.asn.com.tw/flex/BoxMan/BoxMan.html"&gt;http://www.asn.com.tw/flex/BoxMan/BoxMan.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;程式參考 &lt;a href="http://waterxbread.blogspot.com/2009/04/pv3d.html"&gt;這裡&lt;/a&gt;，但改成了 DAEMC2 版 frame 的新的操作方式。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/daeanim/"&gt;DAEMC2&lt;/a&gt; 教學可以參考 &lt;a href="http://www.youtube.com/watch?v=80U3bsQkLag&amp;amp;feature=PlayList&amp;amp;p=DC06F53A3AA56289&amp;amp;index=0&amp;amp;playnext=1"&gt;影片&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8187400747161767071?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8187400747161767071/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8187400747161767071' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8187400747161767071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8187400747161767071'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/pv3d-daemc2.html' title='PV3D DAEMC2 練習'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7471961116412735415</id><published>2009-11-11T00:09:00.005+08:00</published><updated>2009-12-08T09:51:42.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Paper Vision 3D 正確 destory 物件的方法</title><content type='html'>由於 AS3 有 garbage collection 的機制，這樣的機制有好有壞，但千萬別以為有  garbage collection 就不用去在意 memory 的議題，因為不管  garbage collection 運作的原理是什麼，它總還是有一套運作的規則，不去依循這個規則的話，仍然會造成 memory leaks。&lt;br /&gt;&lt;br /&gt;garbage collection 主要的扮演角色的是在程式背後的「管理程式」，記錄、管理使用者(這裡指程式設計師) 記憶體的使用狀況，它底層的意義就是在記錄某段記憶體是不是有物件(指標、參考…)指向它，若沒的話，便能進行釋放。&lt;br /&gt;&lt;br /&gt;可以想像的到，一個環狀的參考一定會造成 garbage collection 的困擾，因此，在具備 garbage collection 的系統下寫程式，有些地方便要特別注意，才不會造成問題。&lt;br /&gt;&lt;br /&gt;以前在 C++，常常會使用指標將自己 allocate 到的 memory 記錄下來，以便在物件 destroy 時一併釋放，但在 garbage collection 系統，這樣的習慣卻會造成「過多的」或「意外的」參考到了沒用到的記憶體，反而造成 garbage collection 無法正確運作。&lt;br /&gt;&lt;br /&gt;因此在寫 AS3 時，儘量在要用到時才去 new 一個物件，而不需要在初始化時就把一切 new 出來放在私有變數裡去作準備，當然，這也不是通則，期待更好的  garbage collection 系統出現。&lt;br /&gt;&lt;br /&gt;回歸正題，Paper Vision 3D 物件的創建跟刪除便出現了類似上述的問題，當你用「動態」的產生物件 (譬如 sphere 或 cube) 時，由於物件需要參考到 Material 材質，而材質又會記錄著使用這個 Material 的物件 list，於是當你刪除物件( 從 scene 移除並設為 null ) 卻發現 garbage collection 起不了作用，memory 依然被佔用住，這樣的 memory leaks 造成的後果會非常嚴重，memory 用量會不斷攀升，最後效能直線下降。&lt;br /&gt;&lt;br /&gt;在 Paper Vision 3D 團隊還沒修正這段(bug?)或 改用更好的作法之前…&lt;br /&gt;解決方法：&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function destory3DObject():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var objArray:Array = new Array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var obj:DisplayObject3D;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for each ( obj in this.scene.objects )&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; objArray.push(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for ( obj=objArray.pop(); obj; obj=objArray.pop() )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; var mmArray:Array = new Array();&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; var mm:MaterialObject3D;&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; for each ( mm in obj.materials )&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; mmArray.push(mm);&lt;br /&gt;&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; for ( mm=mmArray.pop(); mm; mm=mmArray.pop() )&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; {&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; mm.interactive = false;&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; mm.unregisterObject(obj);&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; obj.materials.removeMaterial(mm);&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; mm.destroy();&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; }&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; obj.materials = null;&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; //obj.material.animated = false;&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; obj.material.interactive = false;&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; obj.material.unregisterObject(obj);&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; &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; this.scene.removeChild( obj );&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; obj.material.destroy()&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; obj.material = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;每個步驟的先後順序很重要，次序相反有可能還是沒清楚跟 garbage collection 系統交待好你不要這段 memory 了，你會發現，最後參考到這段 memory 的會是區域變數 var obj，如此才能保證在離開 scope 後沒有任何參考指標與該物件有關聯。&lt;br /&gt;&lt;br /&gt;這個函式是一次清除所有的&amp;nbsp; DisplayObject3D物件，若只想清除物定物件，那可以使用 array 來裝你的 DisplayObject3D 物件即可，程式雷同。&lt;br /&gt;&lt;br /&gt;所以其實 garbage collection 好壞見仁見智吧，好像只不過換了方式去管理你創出來的物件/記憶體罷了，恐怕還是需要瞭解黑箱下的作業方式，才能真正去掌握你所有的資源。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7471961116412735415?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7471961116412735415/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7471961116412735415' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7471961116412735415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7471961116412735415'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/paper-vision-3d-destory.html' title='Paper Vision 3D 正確 destory 物件的方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5634741389266852411</id><published>2009-11-10T09:17:00.005+08:00</published><updated>2009-12-08T09:51:42.955+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><title type='text'>BOX2D + PV3D 物理運動模擬-線上測試盒</title><content type='html'>網址 ：&lt;a href="http://www.asn.com.tw/flex/box2dpv3d_world.htm"&gt;http://www.asn.com.tw/flex/box2dpv3d_world.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;使用方法，在 creat 頁,填上整個 world 的 XML 描述檔，再按 creat 即可建立一個新的物理模擬世界，按 sample world 有範例可以參考。&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;這個程式是依據 boristhebrave Box2DWith 的 Box2D XML loader&lt;br /&gt;線上建立 Box2D 物件，同時轉換成 PV3D 物件對應( 目前支援 CUBE、SPHERE )&lt;br /&gt;支援 TAG 如下…(細節請參考 boristhebrave 的 b2XML.as 文件說明)&lt;br /&gt;&lt;br /&gt;world&lt;br /&gt;body&lt;br /&gt;circle&lt;br /&gt;box&lt;br /&gt;distance&lt;br /&gt;prismatic&lt;br /&gt;revolute&lt;br /&gt;gear&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;＜body userData="PV3D" position="200 100" id="head"＞&lt;br /&gt;＜circle radius="15" density="1" friction="0.4" restitution="0.3"＞&lt;br /&gt;＜／body＞&lt;br /&gt;&lt;br /&gt;即是在ＸＹ座標(200,100)的位置建立一個半徑15的圓,其密度=1,摩擦力=0.4,反彈=0.3&lt;br /&gt;其中 userData="PV3D" 代表要同時建立一個 PV3D 的對應3D物件-球。&lt;br /&gt;&lt;br /&gt;更新…&lt;br /&gt;2009/11/13-PV3D物件增加z軸初始及物件厚度的解析。(BOX適用)&lt;br /&gt;語法:userData="PV3D,Z,DEPTH"&lt;br /&gt;範例:userData="PV3D,50,20" - 在z軸50的位置上建立厚度20的PV3D物件(CUBE)&lt;br /&gt;*實際碰撞處理仍為BOX2D引擎。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5634741389266852411?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5634741389266852411/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5634741389266852411' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5634741389266852411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5634741389266852411'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/box2d-pv3d.html' title='BOX2D + PV3D 物理運動模擬-線上測試盒'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-9018799071172425680</id><published>2009-11-03T14:01:00.004+08:00</published><updated>2009-11-03T14:15:36.664+08:00</updated><title type='text'>FPPA教材</title><content type='html'>FPPA教材上線…&lt;br /&gt;&lt;br /&gt;實驗平台：&lt;br /&gt;&lt;a href="http://0rz.tw/Mepp9"&gt;http://0rz.tw/Mepp9&lt;/a&gt;&lt;br /&gt;全部教材共計12個單元。&lt;br /&gt;&lt;br /&gt;組合語言教材：&lt;br /&gt;&lt;a href="http://www.assembla.com/wiki/show/mcu"&gt;http://www.assembla.com/wiki/show/mcu&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-9018799071172425680?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/9018799071172425680/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=9018799071172425680' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9018799071172425680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9018799071172425680'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/11/fppa.html' title='FPPA教材'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8737462918802267620</id><published>2009-10-22T11:54:00.002+08:00</published><updated>2009-10-22T12:00:26.608+08:00</updated><title type='text'>繪圖型LCM模組當文字型輸出</title><content type='html'>繪圖型LCM模組 WG14432A 跟 文字型有相當程度的不同&lt;br /&gt;但一樣可以當成文字型來使用&lt;br /&gt;&lt;br /&gt;要注意RAM排列方式的不同，例如換行(設定DDRAM位址)指令…&lt;br /&gt;void LCM_line2( void )&lt;br /&gt;{&lt;br /&gt;///    a = 0xC0;            /// 文字型 LCM&lt;br /&gt;    a = 0x90;            /// 繪圖型 LCM&lt;br /&gt;    LCM_WriteCommand();       &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8737462918802267620?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8737462918802267620/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8737462918802267620' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8737462918802267620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8737462918802267620'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/10/lcm.html' title='繪圖型LCM模組當文字型輸出'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-463891946418586322</id><published>2009-10-19T21:17:00.002+08:00</published><updated>2009-10-19T21:22:19.276+08:00</updated><title type='text'>IntraWeb 如何使用 POST/GET 傳遞參數</title><content type='html'>IntraWeb 的 WebApplication 要透過以前表單 POST/GET 的方式來傳遞參數該如何實現?&lt;br /&gt;&lt;br /&gt;//// FROM METHOD="GET"&lt;br /&gt;usrParam:=WebApplication.Request.QueryFields.Values['usr'];&lt;br /&gt;pwdParam:=WebApplication.Request.QueryFields.Values['pwd'];&lt;br /&gt;&lt;br /&gt;//// FORM METHOD="POST"&lt;br /&gt;usrParam:=WebApplication.Request.ContentFields.Values['usr'];&lt;br /&gt;pwdParam:=WebApplication.Request.ContentFields.Values['pwd'];&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-463891946418586322?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/463891946418586322/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=463891946418586322' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/463891946418586322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/463891946418586322'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/10/intraweb-postget.html' title='IntraWeb 如何使用 POST/GET 傳遞參數'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2333252330727417098</id><published>2009-09-14T00:30:00.004+08:00</published><updated>2009-10-09T12:19:27.807+08:00</updated><title type='text'>IntraWeb Template 控制方法</title><content type='html'>來源網址：&lt;br /&gt;&lt;a href="http://hi.baidu.com/rarnu/blog/item/e9875d82dfce14a00df4d24b.html"&gt;http://hi.baidu.com/rarnu/blog/item/e9875d82dfce14a00df4d24b.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;一、創建 IntraWeb 工程&lt;br /&gt;新建一個 VCL Web Application，一切都用默認值創建。將 unit1.pas 重命名為 IWIndex.pas，主窗體的 Name 設為 FIndex。&lt;br /&gt;&lt;br /&gt;二、在工程中放置控件&lt;br /&gt;放置一個 IWTemplateProcessorHTML 和 6 個 IWButton，名稱分別改為 Button1~Button6，位置隨便放，放得很亂也行。&lt;br /&gt;&lt;br /&gt;三、建立文件夾&lt;br /&gt;在工程的保存目錄下建立一個名為 Template 的文件夾，然後設置 ServerController 的 TemplateDir 屬性為 Template 目錄。&lt;br /&gt;&lt;br /&gt;四、新建 Html 文件&lt;br /&gt;在 Delphi 中新建一個 Html 文件，Delphi2007 擁有 Html 的可視化設計功能，非常強大。&lt;br /&gt;如圖所示設計好 HTML，並保存在 Template 目錄下，文件名為 FIndex.html&lt;br /&gt;注意：下圖中右邊是 HTML 控件欄，可以將頁面控件直接拖到 HTML 中來完成設計。&lt;br /&gt;&lt;br /&gt;五、設置 IWTemplateProcessorHTML 控件的屬性&lt;br /&gt;將 Template 屬性展開，將下面所有的屬性都設為 FIndex.html&lt;br /&gt;將主窗體的 LayoutManager 屬性設為 IWTemplateProcessorHTML&lt;br /&gt;&lt;br /&gt;六、運行程序&lt;br /&gt;如圖所示，原本排列混亂的按鈕已經排得很整齊了。&lt;br /&gt;也許你會問，下面怎麼多出一個長條形的按鈕，那是我在 HTML 中寫入的。&lt;br /&gt;&lt;br /&gt;七、擴展&lt;br /&gt;通過使用 HTML 模板，可以方便的擴展 IntraWeb 的可用性，使其變得更強大，更美觀。&lt;br /&gt;由於 IntraWeb 本身不帶有 Table 一類的控件，因此要完成頁面佈局，使用 HTML 是必然的&lt;br /&gt;如果你覺得頁面不好看或是功能不夠強，也可以在 HTML 中加入 CSS 或 JavaScript，以完成更多的功能。&lt;br /&gt;&lt;br /&gt;==================================================&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;注意事項：&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;一、要在 IIS 上跑 IntraWeb 的 ISAPI 程式，需要把 Cache 資料夾目錄的權限打開(共享)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;二、ServerController 還有 HtmlHeader 這個屬性可以設定。&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;三、TemplateDir 清空即可使用預設目錄 template。&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;四、上面第五點的 Template 屬性，應為 Templates 屬性 (TIWTemplateFiles)，底下有對應不同瀏灠器應用的 template file，直接填檔名即可。&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,102,0)"&gt;五、在測試的時候，dllhost.exe 這個程序刪除才能重來。&lt;/span&gt; &lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#ff6600;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#ff6600;"&gt;附註 :&lt;br /&gt;IIS安裝後要把指令碼及執行檔的權限打開，還有目錄的使用權限設定。如下…&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_80QNBcr7cME/Ss65XXTL-_I/AAAAAAAADOI/egzrvua3y1E/s1600-h/%E5%89%AA%E8%B2%BC%E7%B0%BF-1.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 351px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5390449615051684850" border="0" alt="" src="http://1.bp.blogspot.com/_80QNBcr7cME/Ss65XXTL-_I/AAAAAAAADOI/egzrvua3y1E/s400/%E5%89%AA%E8%B2%BC%E7%B0%BF-1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_80QNBcr7cME/Ss65X83F0FI/AAAAAAAADOQ/_FJwiPNpoBk/s1600-h/%E5%89%AA%E8%B2%BC%E7%B0%BF-2.jpg"&gt;&lt;img style="WIDTH: 371px; HEIGHT: 394px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5390449625134387282" border="0" alt="" src="http://1.bp.blogspot.com/_80QNBcr7cME/Ss65X83F0FI/AAAAAAAADOQ/_FJwiPNpoBk/s400/%E5%89%AA%E8%B2%BC%E7%B0%BF-2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2333252330727417098?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2333252330727417098/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2333252330727417098' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2333252330727417098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2333252330727417098'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/09/intraweb-template.html' title='IntraWeb Template 控制方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_80QNBcr7cME/Ss65XXTL-_I/AAAAAAAADOI/egzrvua3y1E/s72-c/%E5%89%AA%E8%B2%BC%E7%B0%BF-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1601376415043205976</id><published>2009-08-20T10:31:00.001+08:00</published><updated>2009-08-20T10:39:54.885+08:00</updated><title type='text'>【廣告】觸控式LED水晶相框/典藏觸控冷光框畫/婚紗相框/攝影展/創意禮品/A2尺寸(29.5吋)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;b class="font-normal"&gt;&lt;a href="http://tw.page.bid.yahoo.com/tw/auction/f11189460?r=1274936276"&gt;觸控式LED水晶相框/典藏觸控冷光框畫/婚紗相框/攝影展/創意禮品/A2尺寸(29.5吋)&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;http://tw.page.bid.yahoo.com/tw/auction/f11189460?r=1274936276&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1601376415043205976?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1601376415043205976/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1601376415043205976' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1601376415043205976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1601376415043205976'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/08/leda2295.html' title='【廣告】觸控式LED水晶相框/典藏觸控冷光框畫/婚紗相框/攝影展/創意禮品/A2尺寸(29.5吋)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7102489806058470273</id><published>2009-08-17T10:21:00.002+08:00</published><updated>2009-08-17T10:24:37.874+08:00</updated><title type='text'>XOOPS無法登入解決辦法</title><content type='html'>狀況:xoops在登入後會顯示登入成功，但實際上仍處於未登入的狀況轉回首頁。&lt;br /&gt;原因:可能是session資料表損毀。(損毀原因未知)&lt;br /&gt;解決:&lt;br /&gt;將舊的xoops_session資料表刪除，重建。(xoops_是你的前置名)&lt;br /&gt;---------------------------------&lt;br /&gt;CREATE TABLE `xoops_session` (&lt;br /&gt;`sess_id` varchar(32) NOT NULL default '',&lt;br /&gt;`sess_updated` int(10) unsigned NOT NULL default '0',&lt;br /&gt;`sess_ip` varchar(15) NOT NULL default '',&lt;br /&gt;`sess_data` text NOT NULL,&lt;br /&gt;PRIMARY KEY (`sess_id`),&lt;br /&gt;KEY `updated` (`sess_updated`)&lt;br /&gt;) TYPE=MyISAM;&lt;br /&gt;---------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7102489806058470273?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7102489806058470273/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7102489806058470273' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7102489806058470273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7102489806058470273'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/08/xoops.html' title='XOOPS無法登入解決辦法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7613835581782178590</id><published>2009-04-16T16:30:00.003+08:00</published><updated>2009-04-16T17:03:00.062+08:00</updated><title type='text'>Dallas DS1307 應用心得</title><content type='html'>DS1307是一顆 REAL TIME CLOCK IC，內部有萬年曆的功能，腳位簡單，溝通操作是透過I2C界面，而且還有備援電池自動切換的功能，上面還有多餘的56BYTE可供外部MCU來使用。&lt;br /&gt;&lt;br /&gt;幾個重點要注意：&lt;br /&gt;一、DS1307 出廠後一定要初始化，把 ADDRESS 00h 的第7個BIT設成0 (CLOCK HALT)才會開始跑。&lt;br /&gt;&lt;br /&gt;二、DS1307 上電後有一段時間延時，這段時間內MCU切勿發送I2C指令，否則可能造成誤寫入時間暫存器。***這邊也可能是I2C傳遞有誤造成的問題。&lt;br /&gt;&lt;br /&gt;三、VDD要搭個電容會比較穩定。&lt;br /&gt;&lt;br /&gt;四、VBAT沒用到的話要接地。&lt;br /&gt;&lt;br /&gt;五、多餘的RAM可以拿來當成離線記憶體使用，正如同EEPROM一般。(VBAT有效的話)&lt;br /&gt;&lt;br /&gt;六、時間的精度取決於外掛 OSC (32768HZ) 的精度，而且要接地良好，否則很容易被干擾。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7613835581782178590?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7613835581782178590/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7613835581782178590' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7613835581782178590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7613835581782178590'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/04/dallas-ds1307.html' title='Dallas DS1307 應用心得'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8228770007579863382</id><published>2009-03-09T14:14:00.013+08:00</published><updated>2009-03-14T21:23:24.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>Ruby 1.9.1 &amp; Rails 2.3 on Debian 安裝筆記</title><content type='html'>安裝 ruby 1.9.1&lt;br /&gt;wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz&lt;br /&gt;tar xvf ruby-1.9.1-p0.tar.gz&lt;br /&gt;cd ruby-1.9.1-p0&lt;br /&gt;./configure&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;失敗&lt;br /&gt;C compiler cannot create executables&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝 libc6-dev&lt;br /&gt;apt-get install &lt;span class="postbody"&gt;libc6-dev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;重作-安裝 ruby&lt;br /&gt;./configure&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;失敗&lt;br /&gt;make: command not found&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;安裝 make&lt;br /&gt;apt-get install make&lt;br /&gt;&lt;br /&gt;重作-安裝 ruby&lt;br /&gt;./configure&lt;br /&gt;make&lt;br /&gt;make insatll&lt;br /&gt;&lt;br /&gt;ruby -v&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;完成安裝 ruby&lt;br /&gt;&lt;br /&gt;安裝 rake rack&lt;br /&gt;gem install rake rack&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;失敗&lt;br /&gt;/usr/local/lib/ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝 zlib ruby adaptor&lt;br /&gt;cd ruby-1.9.1-p0&lt;br /&gt;cd ext&lt;br /&gt;cd zlib&lt;br /&gt;ruby extconf.rb&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;失敗&lt;br /&gt;checking for deflateReset() in -lz... no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;checking for deflateReset() in -llibz... no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;checking for deflateReset() in -lzlib... no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*** extconf.rb failed ***&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝 zlib1g-dev&lt;br /&gt;apt-get install zlib1g-dev&lt;br /&gt;&lt;br /&gt;重作-安裝 zlib ruby adaptor&lt;br /&gt;ruby extconf.rb&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;重作-安裝 rake rack&lt;br /&gt;gem install rake rack&lt;br /&gt;&lt;br /&gt;安裝 rails 2.3.1&lt;br /&gt;gem install rails --source http://gems.rubyonrails.org&lt;br /&gt;&lt;br /&gt;gem list&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;*** LOCAL GEMS ***&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;actionmailer (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;actionpack (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;activerecord (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;activeresource (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;activesupport (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;rack (0.9.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;rails (2.3.1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;rake (0.8.4)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;完成安裝 rails&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;建新網站&lt;br /&gt;rails blog -d mysql&lt;br /&gt;cd blog&lt;br /&gt;啟動&lt;br /&gt;./script/server&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;失敗 /usr/local/lib/ruby/gems/1.9.1/gems/rails-2.3.1/lib/initializer.rb:269:in `rescue in require_frameworks': no such file to load -- openssl (RuntimeError)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝 openssl ruby adaptor&lt;br /&gt;cd ruby-1.9.1-p0&lt;br /&gt;cd ext&lt;br /&gt;cd openssl&lt;br /&gt;ruby extconf.rb&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;失敗&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;=== OpenSSL for Ruby configurator ===&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;=== Checking for system dependent stuff... ===&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;checking for t_open() in -lnsl... no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;checking for socket() in -lsocket... no&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;checking for assert.h... yes&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;=== Checking for required stuff... ===&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;checking for openssl/ssl.h... no&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;=== Checking for required stuff failed. ===&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;Makefile wasn't created. Fix the errors above.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;安裝 libssl-dev&lt;br /&gt;apt-get install libssl-dev&lt;br /&gt;&lt;br /&gt;重作-安裝 openssl ruby adaptor&lt;br /&gt;ruby extconf.rb&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;重新啟動網站&lt;br /&gt;./script/server&lt;br /&gt;&lt;br /&gt;網頁ok&lt;br /&gt;http://localhost:30000/&lt;br /&gt;&lt;br /&gt;About your aplication's environment&lt;br /&gt;&lt;h1  style="font-weight: normal;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Internal Server Error&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;undefined method `each' for #&lt;string:0x90d8e74&gt;&lt;/string:0x90d8e74&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;WEBrick/1.3.1 (Ruby/1.9.1/2009-01-30) at localhost:3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;console 顯示&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;/!\ FAILSAFE /!\  2009-03-09 10:27:58 -0700&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;  Status: 500 Internal Server Error&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;  no such file to load -- mysql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝 mysql ruby adaptor&lt;br /&gt;wget http://tmtm.org/downloads/mysql/ruby/mysql-ruby-2.8.1.tar.gz&lt;br /&gt;tar xvf mysql-ruby-2.8.1.tar.gz&lt;br /&gt;cd  mysql-ruby-2.8.1&lt;br /&gt;ruby extconf.rb&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;失敗&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;checking for mysql_query() in -lmysqlclient... no&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;*** extconf.rb failed ***&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝  libmysql++-dev&lt;br /&gt;apt-get install libmysql++-dev&lt;br /&gt;&lt;br /&gt;重新安裝 mysql ruby adaptor&lt;br /&gt;ruby extconf.rb&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;重新啟動網站&lt;br /&gt;./script/server&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  Status: 500 Internal Server Error&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;  Access denied for user 'root'@'localhost' (using password: NO)&lt;/span&gt;&lt;br /&gt;ok~正常，這是 database.yml 沒設定的關係&lt;br /&gt;改好後重啟網站&lt;br /&gt;./script/server&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_80QNBcr7cME/SbTmRuzi55I/AAAAAAAACF4/w99BSKCDY9M/s1600-h/ror.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 309px;" src="http://3.bp.blogspot.com/_80QNBcr7cME/SbTmRuzi55I/AAAAAAAACF4/w99BSKCDY9M/s400/ror.JPG" alt="" id="BLOGGER_PHOTO_ID_5311123052873050002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;完工^^;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8228770007579863382?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8228770007579863382/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8228770007579863382' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8228770007579863382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8228770007579863382'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/03/ruby-191-rails-23-on-debian.html' title='Ruby 1.9.1 &amp; Rails 2.3 on Debian 安裝筆記'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_80QNBcr7cME/SbTmRuzi55I/AAAAAAAACF4/w99BSKCDY9M/s72-c/ror.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-9078885626871075450</id><published>2009-03-04T09:33:00.003+08:00</published><updated>2009-03-04T09:53:58.708+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='韌體設計'/><title type='text'>MCU在ICE上開發與實際CHIP的差異</title><content type='html'>很多狀況會導致ICE開發時的結果正確，但是燒錄出來的實體CHIP卻有不同的結果…&lt;br /&gt;底下記錄實際發生過的經驗：&lt;br /&gt;&lt;br /&gt;一、使用內RC開發計時功能，燒錄出來卻發生時差誤差很大：&lt;br /&gt;　　大部份的MCU都己經有提供內RC的功能，但若ICE設計的有問題，或開發時的環境不同，年久失準…等等問題，就會有ICE內頻不準的狀況，而實際CHIP由於是相對比較量產的東西，所以實際的CHIP反而是應該要比較準確。&lt;br /&gt;　　系統開發的時間若是忽略這個問題，反而自作聰明的加入校正值的話，就會導致這個問題。&lt;br /&gt;&lt;br /&gt;二、ICE由於可以模擬多種型號的CHIP，因此在設計時必定使用了比較大的RAM容量來當作CODE及MEMORY的記憶體，若是編譯器不良無法針對不同型號作檢查，那就有可能出現STACK OV的問題而在ICE模擬時卻不自知。一般都會正確檢查CODE的大小是否超過ROM的大小，但不一定都會檢查RAM的問題。&lt;br /&gt;&lt;br /&gt;三、同樣上述的原因，不同的CHIP可能會對不同的指令集有不同程度的支援，若是編譯器無法適時檢查出這種錯誤，也會讓你DEBUG沒完沒了。&lt;br /&gt;&lt;br /&gt;四、AD轉換模組需要使用參考電壓，有的是外部參考電壓，但也有用內部參考電壓的，這時就要考量ICE的電壓要怎麼能跟實際主板電壓一樣，或怎加入校正程序。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-9078885626871075450?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/9078885626871075450/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=9078885626871075450' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9078885626871075450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/9078885626871075450'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/03/mcuicechip.html' title='MCU在ICE上開發與實際CHIP的差異'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8244525806403944424</id><published>2009-03-03T12:44:00.007+08:00</published><updated>2009-03-03T13:27:07.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>GMAIL建立標籤及篩選器的方法</title><content type='html'>GMAIL的標籤及篩選器搭配使用的方法…&lt;br /&gt;一、點「設定」&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_80QNBcr7cME/Say6x1vNUYI/AAAAAAAACFI/gq6HIz8Bkuo/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 73px;" src="http://3.bp.blogspot.com/_80QNBcr7cME/Say6x1vNUYI/AAAAAAAACFI/gq6HIz8Bkuo/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823426164412802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;二、點選標籤，建立一個新的標籤&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_80QNBcr7cME/Say6x-fCUqI/AAAAAAAACFQ/SxCekqkzwQM/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 73px;" src="http://4.bp.blogspot.com/_80QNBcr7cME/Say6x-fCUqI/AAAAAAAACFQ/SxCekqkzwQM/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823428512502434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;三、點選篩選器，建立新的篩選器&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_80QNBcr7cME/Say6yG2kJEI/AAAAAAAACFY/QtgGry2L-Ck/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 73px;" src="http://3.bp.blogspot.com/_80QNBcr7cME/Say6yG2kJEI/AAAAAAAACFY/QtgGry2L-Ck/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823430758671426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;四、在過瀘項目上填寫上條件&lt;br /&gt;例如：&lt;br /&gt;「&lt;span style="color: rgb(255, 102, 0);"&gt;mary&lt;/span&gt;」、「&lt;span style="color: rgb(255, 102, 0);"&gt;peter@yahoo.com.tw&lt;/span&gt;」、「&lt;span style="color: rgb(255, 102, 0);"&gt;小明&lt;/span&gt;」…&lt;br /&gt;亦可使用萬用字元「&lt;span style="color: rgb(51, 255, 51);"&gt;*&lt;/span&gt;」及「&lt;span style="color: rgb(51, 255, 255);"&gt;|&lt;/span&gt;」(或)來連結多個條件，例如：&lt;br /&gt;「&lt;span style="color: rgb(255, 102, 0);"&gt;mary&lt;span style="color: rgb(51, 255, 255);"&gt;|&lt;/span&gt;peter&lt;span style="color: rgb(51, 255, 255);"&gt;|&lt;/span&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;*&lt;/span&gt;@mycompany.com&lt;/span&gt;」&lt;br /&gt;&lt;br /&gt;填好條件可以先按下「測試搜尋」來測試一下對不對，再進行下一步。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_80QNBcr7cME/Say6yIMM-7I/AAAAAAAACFg/qa3rMKlG_kY/s1600-h/4.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 270px;" src="http://3.bp.blogspot.com/_80QNBcr7cME/Say6yIMM-7I/AAAAAAAACFg/qa3rMKlG_kY/s400/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823431117863858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;五、最後指定符合這個篩選條件的郵件要作何處理，這邊是幫它加上之前建好的標籤，記得勾選「同時套用到…」把以前的郵件也套用上這個篩選器，如此一來你的郵件就可以自動分好類了，。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_80QNBcr7cME/Say6yNIKdDI/AAAAAAAACFo/EtuRjZflUuw/s1600-h/5.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 270px;" src="http://1.bp.blogspot.com/_80QNBcr7cME/Say6yNIKdDI/AAAAAAAACFo/EtuRjZflUuw/s400/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823432443098162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;六、你還可以把不同的標籤設定成不同的顏色。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_80QNBcr7cME/Say67pWfw2I/AAAAAAAACFw/cEDWbW49ih8/s1600-h/6.jpg"&gt;&lt;img style="cursor: pointer; width: 302px; height: 172px;" src="http://4.bp.blogspot.com/_80QNBcr7cME/Say67pWfw2I/AAAAAAAACFw/cEDWbW49ih8/s400/6.jpg" alt="" id="BLOGGER_PHOTO_ID_5308823594638230370" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8244525806403944424?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8244525806403944424/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8244525806403944424' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8244525806403944424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8244525806403944424'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/03/gmail_03.html' title='GMAIL建立標籤及篩選器的方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_80QNBcr7cME/Say6x1vNUYI/AAAAAAAACFI/gq6HIz8Bkuo/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3226866587577329584</id><published>2009-03-03T09:03:00.006+08:00</published><updated>2009-03-03T09:51:59.195+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>GMAIL如何發信給一個群組</title><content type='html'>一、進入GMAIL通訊錄：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_80QNBcr7cME/SayDCcXlnMI/AAAAAAAACEY/hgA_GEEm21U/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer; width: 160px; height: 233px;" src="http://1.bp.blogspot.com/_80QNBcr7cME/SayDCcXlnMI/AAAAAAAACEY/hgA_GEEm21U/s320/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5308762138761075906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;二、勾選你要群組在一起的聯絡人：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_80QNBcr7cME/SayEyN5tl_I/AAAAAAAACEo/K8LvbruNLJM/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 201px;" src="http://4.bp.blogspot.com/_80QNBcr7cME/SayEyN5tl_I/AAAAAAAACEo/K8LvbruNLJM/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5308764059023022066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;三、為這個群組命名，注意，開頭第一個字請不要使用中文，有些中文沒辦法達到自動群發的效果，可以使用符號，譬如「+同事」：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_80QNBcr7cME/SayFyZ7c0dI/AAAAAAAACEw/SNhv1ECxiKw/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer; width: 355px; height: 138px;" src="http://4.bp.blogspot.com/_80QNBcr7cME/SayFyZ7c0dI/AAAAAAAACEw/SNhv1ECxiKw/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5308765161763164626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;四、這樣以後撰寫郵件時，只要在收件人那邊打上第一個字，就會跳出群組名單讓你挑選了，非常方便：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_80QNBcr7cME/SayG4MREaXI/AAAAAAAACFA/FsZN9SIAPnI/s1600-h/4.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 107px;" src="http://3.bp.blogspot.com/_80QNBcr7cME/SayG4MREaXI/AAAAAAAACFA/FsZN9SIAPnI/s400/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5308766360686586226" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3226866587577329584?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3226866587577329584/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3226866587577329584' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3226866587577329584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3226866587577329584'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/03/gmail.html' title='GMAIL如何發信給一個群組'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_80QNBcr7cME/SayDCcXlnMI/AAAAAAAACEY/hgA_GEEm21U/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3938253891240471029</id><published>2009-03-01T21:59:00.000+08:00</published><updated>2009-03-03T09:46:23.313+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Script'/><title type='text'>JAVA SCRIPT 判斷只能輸入中文的程式碼</title><content type='html'>&lt;code&gt;function isChinese(temp)&lt;br /&gt;{&lt;br /&gt;var re = /[^\u4e00-\u9fa5]/;&lt;br /&gt;if(re.test(temp)) return false;&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3938253891240471029?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3938253891240471029/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3938253891240471029' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3938253891240471029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3938253891240471029'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/03/java-script.html' title='JAVA SCRIPT 判斷只能輸入中文的程式碼'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1255522352401785753</id><published>2009-02-27T10:44:00.004+08:00</published><updated>2009-03-03T10:10:44.637+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>RoR試開筆記(五)</title><content type='html'>透過 generator 自動建立出的網頁框架固然很快速，但初學者可能會很難理解整個框架的運作流程。&lt;br /&gt;&lt;br /&gt;new 跟 edit 可以使用同一個 form 的樣式，但 rail 要如何得知要產生不同的 form action ?&lt;br /&gt;&lt;br /&gt;追一下連結跟control…&lt;br /&gt;new---&gt;create&lt;br /&gt;&lt;code&gt;&amp;lt;%= link_to 'New post', new_post_path %&amp;gt;&lt;/code&gt;&lt;br /&gt;會連到 post control 的 new&lt;br /&gt;&lt;code&gt;@post = Post.new&lt;/code&gt;&lt;br /&gt;才把 html 顯示出來&lt;br /&gt;&lt;br /&gt;edit---&gt;update&lt;br /&gt;&lt;code&gt;&amp;lt;%= link_to 'Edit', edit_post_path(post) %&amp;gt;&lt;/code&gt;&lt;br /&gt;會連到 post control 的 edit&lt;br /&gt;&lt;code&gt;@post = Post.find(params[:id])&lt;/code&gt;&lt;br /&gt;才把 html 顯示出來&lt;br /&gt;&lt;br /&gt;一個是新增的，一個是從資料庫找出來的，因此能判定要用哪種 form action，但是這部份可以去微調嗎? 需要再研究。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1255522352401785753?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1255522352401785753/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1255522352401785753' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1255522352401785753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1255522352401785753'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/02/ror_27.html' title='RoR試開筆記(五)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-609905426161127447</id><published>2009-02-26T23:57:00.022+08:00</published><updated>2009-03-03T09:35:00.132+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>RoR試開筆記(四)</title><content type='html'>&lt;code&gt;ruby script\generate scaffold Post name:string title:string content:text&lt;/code&gt;&lt;br /&gt;使用 scaffold 自動 generate 出一個名為 Post 的 model、controler、viewer，包含了一些基本的操作。&lt;br /&gt;&lt;br /&gt;&lt;code&gt;rake db:migrate&lt;/code&gt;&lt;br /&gt;把剛剛自動生成的 model (想像成 table) 資料表作更新。&lt;br /&gt;&lt;br /&gt;修改 \blog\app\views\home\index.html.erb&lt;br /&gt;加入這個 post controler 的連結&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;%= link_to "My Blog", posts_path %&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;如此就可以到 http://127.0.0.1:3000/posts 進入 post controler 了&lt;br /&gt;或到透過 home 首頁的 post 連結進入。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-609905426161127447?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/609905426161127447/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=609905426161127447' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/609905426161127447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/609905426161127447'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/02/ror_26.html' title='RoR試開筆記(四)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1490936347327287126</id><published>2009-02-26T23:45:00.002+08:00</published><updated>2009-03-03T09:35:00.133+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>RoR試開筆記(三)</title><content type='html'>config/routes.rb&lt;br /&gt;編輯「文件路由檔」&lt;br /&gt;&lt;br /&gt;適當位置加入這行…&lt;br /&gt;map.root :controller =&gt; "home"&lt;br /&gt;&lt;br /&gt;刪除預設的首頁&lt;br /&gt;\blog\public\index.html&lt;br /&gt;&lt;br /&gt;如此 &lt;a href="http://127.0.0.1:3000/"&gt;http://127.0.0.1:3000/&lt;/a&gt; 就會指到 home controler (預設viewer:index.html.erb)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1490936347327287126?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1490936347327287126/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1490936347327287126' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1490936347327287126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1490936347327287126'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/02/ror.html' title='RoR試開筆記(三)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4404621484966932970</id><published>2009-02-25T01:01:00.005+08:00</published><updated>2009-02-26T23:47:23.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>RoR試開筆記(二)</title><content type='html'>rails blog -d mysql&lt;br /&gt;建立一個名為 blog 的網站app，使用 mysql&lt;br /&gt;&lt;br /&gt;cd blog&lt;br /&gt;進去 gen 好的網站&lt;br /&gt;&lt;br /&gt;config/database.yml&lt;br /&gt;編輯資料庫設定&lt;br /&gt;&lt;br /&gt;rake db:create&lt;br /&gt;自動建立資料庫&lt;br /&gt;&lt;br /&gt;ruby script/generate controller home index&lt;br /&gt;建立一個包含 viewer:index 的 controller:home&lt;br /&gt;&lt;br /&gt;ruby script/server&lt;br /&gt;啟動 server&lt;br /&gt;&lt;br /&gt;http://localhost:3000/home/index&lt;br /&gt;網頁&lt;br /&gt;&lt;br /&gt;參考:&lt;a href="http://guides.rubyonrails.org/getting_started_with_rails.html"&gt;http://guides.rubyonrails.org/getting_started_with_rails.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4404621484966932970?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4404621484966932970/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4404621484966932970' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4404621484966932970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4404621484966932970'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/02/ror-1st-page.html' title='RoR試開筆記(二)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1046610318017791240</id><published>2009-02-23T20:35:00.009+08:00</published><updated>2009-02-26T23:47:54.945+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby on Rail'/><title type='text'>RoR試開筆記(一)</title><content type='html'>Windows 下安裝 ROR&lt;br /&gt;到…&lt;br /&gt;http://rubyinstaller.rubyforge.org/&lt;br /&gt;下載…&lt;br /&gt;rubyinstaller ruby186-27_rc2.exe&lt;br /&gt;安裝&lt;br /&gt;套件管理程式 gem 要勾選隨同安裝&lt;br /&gt;&lt;br /&gt;裝好後下指令安裝 mysql adaptor，才能用 mysql 作為資料庫…&lt;br /&gt;gem install mysql [--no-ri --no-rdoc]&lt;br /&gt;&lt;br /&gt;裝好後下指令…&lt;br /&gt;gem install rails [--no-ri --no-rdoc]&lt;br /&gt;&lt;br /&gt;開新專案(使用mysql，需先另外安裝好)…&lt;br /&gt;rails HelloWorld -d myaql&lt;br /&gt;&lt;br /&gt;啟動 server…&lt;br /&gt;cd HelloWorld&lt;br /&gt;ruby script\server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*要使用 mysql 也要將 libmysql.dll 拷貝到 ruby/bin 目錄下，才不會有錯誤訊息出現。&lt;br /&gt;*mysql需支援 InnoDB，要修改 my.ini 重啟 MYSQL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1046610318017791240?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1046610318017791240/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1046610318017791240' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1046610318017791240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1046610318017791240'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/02/ruby-on-rail.html' title='RoR試開筆記(一)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6317541915106037022</id><published>2009-01-05T16:04:00.007+08:00</published><updated>2009-01-06T08:45:34.111+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA教學簡報</title><content type='html'>FPPA基礎教學-使用組合語言…&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dfv6xn5d_129gm6q4nd2&amp;hl=zh_TW"&gt;第一章 FPPA簡介&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dfv6xn5d_141fgrps2fj&amp;hl=zh_TW"&gt;第二章 FPPA程式架構&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dfv6xn5d_238hsh3hbc2&amp;hl=zh_TW"&gt;第三章 FPPA程式初探&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dfv6xn5d_824fz8pqvhc&amp;hl=zh_TW"&gt;第四章 FPPA程式設計&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Present?docid=dfv6xn5d_1377hgjvvhhj&amp;hl=zh_TW"&gt;第五章 FPPA程式實習&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6317541915106037022?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6317541915106037022/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6317541915106037022' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6317541915106037022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6317541915106037022'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/01/fppa_5172.html' title='FPPA教學簡報'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-457881709764430125</id><published>2009-01-05T15:21:00.004+08:00</published><updated>2009-01-05T17:50:56.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA實驗平台教學教材</title><content type='html'>由於ASSEMBLA即將開始收費，因此要把所有的SVN進行大搬家，連帶的一些教學文件也跟著搬家了，看來還是GOOGLE的窩最舒適(重點是免費)&lt;br /&gt;&lt;br /&gt;FPPA實驗平台教學教材-使用C語言&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_121hs7k8vg7"&gt;FPPA實驗平台簡介&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_120gq2v7nfv"&gt;實驗(一) 8位元LED輸出單元 與 模組設計總論&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_122kthm94dp"&gt;實驗(二) 按鍵開關輸入單元 與 控制模組的設計&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_123f5jkg6qv"&gt;實驗(三) 飛梭編碼(帶開關)輸入單元&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_124f8c8r5fm"&gt;實驗(四) 6位數7字節顯示單元&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_125gnm5mhhr"&gt;實驗(五) RGB LED控制單元&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=dfv6xn5d_126vscds7g7"&gt;實驗(六) LCM 模組控制&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-457881709764430125?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/457881709764430125/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=457881709764430125' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/457881709764430125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/457881709764430125'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2009/01/fppa_05.html' title='FPPA實驗平台教學教材'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4616307724430633408</id><published>2008-09-15T15:55:00.002+08:00</published><updated>2008-09-15T16:22:36.609+08:00</updated><title type='text'>Windows 抓圖 API</title><content type='html'>&lt;div&gt;相關函式…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;HWND findChild = FindWindow( NULL, "視窗標題" );&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;HWND dc = ::GetWindowDC( findChild );&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;使用這個 DC HANDLE 來作圖形的拷貝動作&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但是由於 windows 有外框、標題列等問題，所以實際抓圖的位要作細部的調整&lt;/div&gt;&lt;div&gt;使用 GetSystemMetrics WIN API，例如…&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;    int nCaptionY = ::GetSystemMetrics(SM_CYCAPTION);         //dialog的標題列&lt;/div&gt;&lt;div&gt;    int nBorderX = ::GetSystemMetrics(SM_CXEDGE)+1;         //BORDERX&lt;/div&gt;&lt;div&gt;    int nBorderY = ::GetSystemMetrics(SM_CYEDGE)+1;         //BORDERY&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;才可以準確得知，CLIENT 畫布的位置。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4616307724430633408?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4616307724430633408/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4616307724430633408' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4616307724430633408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4616307724430633408'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/09/windows-api.html' title='Windows 抓圖 API'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8137129833892504825</id><published>2008-09-09T09:36:00.000+08:00</published><updated>2009-03-03T09:52:50.334+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Samba Server 新增使用者</title><content type='html'>&lt;pre&gt;adduser id&lt;/pre&gt;&lt;pre&gt;smbpasswd -a id&lt;/pre&gt;若有 &lt;span class="Text"&gt;libssl.so.2 找不到 可找找底下替代 lib&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Text"&gt;ln -s /usr/lib/libssl.so.0.9.6 /usr/lib/libssl.so.2&lt;br /&gt;&lt;br /&gt;ln -s /usr/lib/libcrypto.so.0.9.6 /usr/lib/libcrypto.so.2&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8137129833892504825?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8137129833892504825/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8137129833892504825' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8137129833892504825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8137129833892504825'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/09/samba-server.html' title='Samba Server 新增使用者'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2246281638663783996</id><published>2008-09-08T15:06:00.002+08:00</published><updated>2009-03-03T09:54:15.406+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>POSTFIX 增加郵件群組的功能</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;nano /etc/postfix/main.cf&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;===================================&lt;br /&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;alias_maps = hash:/etc/aliases&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;alias_database = hash:/etc/aliases&lt;br /&gt;===================================&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;nano aliases&lt;br /&gt;===================================&lt;br /&gt;maillist: aaa, bbb, ccc, ddd, eee&lt;br /&gt;===================================&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;postalias /etc/aliases&lt;br /&gt;postfix reload                    &lt;== 如果 main.cf 有改到的話則需要重啟&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 楷体_GB2312; font-size: 18px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2246281638663783996?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2246281638663783996/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2246281638663783996' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2246281638663783996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2246281638663783996'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/09/postfix.html' title='POSTFIX 增加郵件群組的功能'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6666834931763776267</id><published>2008-09-08T09:02:00.002+08:00</published><updated>2009-02-25T09:41:22.156+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBS'/><title type='text'>使用VBS修改電腦IP、DNS、電腦名稱、工作群組</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strComputer="."&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strmask="255.255.255.128" &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dim ipv,gateway,lan,pcname&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;gateway="220.229.105.129"&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ipv="220.229.105.123"&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;pcname="pc123"&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Set objWMIService=GetObject("winmgmts:\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Set colNetAdapters=objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strIPAddress=Array(ipv)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strSubnetMask=Array(strmask)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strGateway = Array(gateway) '修改預設閘道&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;strDNS=Array("61.56.211.185","211.78.130.2","168.95.1.1") '// 三組 DNS&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;For Each objNetAdapter in colNetAdapters &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;errEnable=objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)'ip，子網路遮罩&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;errGateways = objNetAdapter.SetGateways(strGateway) '預設閘道&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;errDns=objNetAdapter.SetDNSServerSearchOrder(strDNS)'dns&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Next&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Set objWMIService = GetObject("winmgmts:" _&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&amp;amp; "{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Set colComputers = objWMIService.ExecQuery _&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;    ("Select * from Win32_ComputerSystem")&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;For Each objComputer in colComputers&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;err = ObjComputer.Rename( pcname )'機器名稱&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ReturnValue = objComputer.JoinDomainOrWorkGroup("WORKGROUP")'工作群組&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Next&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6666834931763776267?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6666834931763776267/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6666834931763776267' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6666834931763776267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6666834931763776267'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/09/vbsipdns.html' title='使用VBS修改電腦IP、DNS、電腦名稱、工作群組'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8667605439653181653</id><published>2008-08-21T13:13:00.002+08:00</published><updated>2009-02-25T09:40:56.158+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MYSQL 支援 Transation</title><content type='html'>一、資料庫引擎要改成 InnoDB。&lt;br /&gt;&lt;br /&gt;二、流程…&lt;br /&gt;&lt;br /&gt;mysql_query('BEGIN TRANSACTION_NAME');&lt;br /&gt;&lt;br /&gt;mysql_query('SELECT * FROM whatever...')&lt;br /&gt;mysql_query('UPDATE blah blah...')&lt;br /&gt;&lt;br /&gt;if(check for errors) {&lt;br /&gt;mysql_query('ROLLBACK');&lt;br /&gt;} else {&lt;br /&gt;mysql_query('COMMIT');&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8667605439653181653?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8667605439653181653/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8667605439653181653' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8667605439653181653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8667605439653181653'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/08/mysql-transation.html' title='MYSQL 支援 Transation'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5781258438910209629</id><published>2008-08-13T10:13:00.003+08:00</published><updated>2008-08-13T10:59:52.565+08:00</updated><title type='text'>專案列表</title><content type='html'>找個時間把開發過的案子程式要點記下來…&lt;br /&gt;&lt;br /&gt;FPPA專案:&lt;br /&gt;BatteryCharge-充電裝置自動充放電控制&lt;br /&gt;BLDC-直流無刷馬達AD調速控制&lt;br /&gt;FanControl-超微風風扇控制含定時、IR&lt;br /&gt;GenFreq-方波頻率偵測即時計算&lt;br /&gt;LightFailAlert-汽車燈號故障警示器、RF&lt;br /&gt;PWM-RGB-Bar-三色PWM燈飾&lt;br /&gt;PWM燈控-LED燈亮度調節控制&lt;br /&gt;MP3Rider-MP3模組撥放音樂&lt;br /&gt;RGBLight-RGB LED燈控制&lt;br /&gt;RGBW-LED-四色LED燈控制&lt;br /&gt;SPWM吊扇-無段風扇控制&lt;br /&gt;VolControl-飛梭旋鈕訊號控制音量&lt;br /&gt;三合一車燈-三合一車燈&lt;br /&gt;立式16吋溫控無段風扇-無段溫控風扇控制&lt;br /&gt;風扇節能調速器-風扇控制器&lt;br /&gt;腳踏車警示燈-LED燈控制器&lt;br /&gt;檯燈燈控-LED亮度控制器&lt;br /&gt;雙頭風扇-風扇控制器&lt;br /&gt;雞尾酒機-刨冰、擾拌定時控制器&lt;br /&gt;TimerDevice-通用定時器&lt;br /&gt;&lt;br /&gt;PIC專案:&lt;br /&gt;sosLight-三合一車燈&lt;br /&gt;FreqGen-頻率產生器&lt;br /&gt;LedBar-LED燈控制器&lt;br /&gt;PowerControl-電源輸出控制器&lt;br /&gt;RFLightControl-RF號控制裝置&lt;br /&gt;spwm-SPWM風扇PIC版&lt;br /&gt;TimerDevice-通用定時器PIC版&lt;br /&gt;&lt;br /&gt;ELAN專案:&lt;br /&gt;PWMLED-RGB LED燈控制&lt;br /&gt;TimerDevice-通用定時器ELAN版&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5781258438910209629?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5781258438910209629/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5781258438910209629' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5781258438910209629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5781258438910209629'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/08/blog-post.html' title='專案列表'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-59002879922180667</id><published>2008-06-16T23:37:00.003+08:00</published><updated>2008-06-16T23:43:24.674+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3DSMAX'/><title type='text'>3ds窗外搭景的方法</title><content type='html'>一、用單一平面貼圖…&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_80QNBcr7cME/SFaJEZE2SzI/AAAAAAAAAng/k-599nAasGQ/s1600-h/ytk60.tmp.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5212504327271631666" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_80QNBcr7cME/SFaJEZE2SzI/AAAAAAAAAng/k-599nAasGQ/s320/ytk60.tmp.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;二、用環繞圓柱作貼圖&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_80QNBcr7cME/SFaJNe1e6qI/AAAAAAAAAno/grPMo2zmpSI/s1600-h/fu662.tmp.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5212504483436620450" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_80QNBcr7cME/SFaJNe1e6qI/AAAAAAAAAno/grPMo2zmpSI/s320/fu662.tmp.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;也可以只用一個小扇形貼圖，效果會更好。&lt;br /&gt;&lt;br /&gt;效果圖…&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_80QNBcr7cME/SFaJWogk0rI/AAAAAAAAAnw/RkJ7hwfc2u8/s1600-h/èè²å°é¢.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5212504640652104370" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_80QNBcr7cME/SFaJWogk0rI/AAAAAAAAAnw/RkJ7hwfc2u8/s320/%E8%91%97%E8%89%B2%E5%9C%B0%E9%9D%A2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;窗外的佈景，果真是搭出來的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-59002879922180667?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/59002879922180667/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=59002879922180667' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/59002879922180667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/59002879922180667'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/06/3ds.html' title='3ds窗外搭景的方法'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_80QNBcr7cME/SFaJEZE2SzI/AAAAAAAAAng/k-599nAasGQ/s72-c/ytk60.tmp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-801182316403091202</id><published>2008-06-13T10:15:00.002+08:00</published><updated>2008-06-16T23:43:48.672+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='資料備份'/><title type='text'>WinScp 傳輸 linux 檔案的錯誤</title><content type='html'>linux 檔原為一字換行的 php 檔案~原為正常&lt;br /&gt;但若經過 winscp 傳輸回來，會變成錯誤的格式&lt;br /&gt;若再傳回去 linux 就會造成原 php 碼錯誤了。&lt;br /&gt;&lt;br /&gt;解決方式:&lt;br /&gt;不透過 winscp 傳 文字檔，先在 linux 將 php 檔作 zip 壓縮，再傳回 windows 解開來編輯。&lt;br /&gt;編輯時最好用筆記本重新剪貼過一次，才不會同樣的錯誤產生。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-801182316403091202?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/801182316403091202/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=801182316403091202' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/801182316403091202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/801182316403091202'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/06/winscp-linux.html' title='WinScp 傳輸 linux 檔案的錯誤'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7477172123817995578</id><published>2008-06-11T00:55:00.007+08:00</published><updated>2009-03-03T09:47:48.536+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='資料備份'/><title type='text'>BIG5 資料庫的匯出匯入</title><content type='html'>big5 資料庫的匯出 匯入&lt;br /&gt;=================================================&lt;br /&gt;&lt;br /&gt;直接 dump…&lt;br /&gt;mysqldump -uroot -p database &gt; database.sql&lt;br /&gt;　--&gt;sql 檔看起來是亂碼&lt;br /&gt;&lt;br /&gt;匯回去用…&lt;br /&gt;mysql -uroot -p --default-character-set=utf8 &lt;br /&gt;　--&gt;sql 檔看起來是亂碼，但是匯回去不受影響。&lt;br /&gt;mysql -uroot -p --default-character-set=latin1&lt;br /&gt;　--&gt;錯誤&lt;br /&gt;mysql -uroot -p --default-character-set=big5&lt;br /&gt;　--&gt;錯誤&lt;br /&gt;&lt;br /&gt;=================================================&lt;br /&gt;&lt;br /&gt;用 latin1 dump…&lt;br /&gt;mysqldump -uroot -p --default-character-set=latin1 database &gt; database.sql&lt;br /&gt;　--&gt;sql檔可以看到正確中文碼。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;匯回去用…&lt;br /&gt;mysql -uroot -p --default-character-set=utf8&lt;br /&gt;mysql -uroot -p --default-character-set=latin1&lt;br /&gt;mysql -uroot -p --default-character-set=big5&lt;br /&gt;　--&gt;結果都正確。 (不知是否會有許蓋功的問題?)&lt;br /&gt;=================================================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7477172123817995578?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7477172123817995578/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7477172123817995578' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7477172123817995578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7477172123817995578'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/06/big5.html' title='BIG5 資料庫的匯出匯入'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1556664065151094901</id><published>2008-06-01T02:35:00.006+08:00</published><updated>2008-06-16T23:45:43.347+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3DSMAX'/><title type='text'>3DSMAX 光帶快速製作</title><content type='html'>做一個長方體，大小剛好是光帶的位置佔的空間，&lt;br /&gt;&lt;br /&gt;設置材質參數…&lt;br /&gt;&lt;br /&gt;漫反射:白色&lt;br /&gt;自發光:白色&lt;br /&gt;自發光貼圖:漸變坡度(長方體-緩入緩出)&lt;br /&gt;不透明度貼圖:漸變坡度(長方體-緩入緩出)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_80QNBcr7cME/SEGbS8kuPmI/AAAAAAAAAm4/yKhxAjqHnPQ/s1600-h/1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5206613394017107554" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_80QNBcr7cME/SEGbS8kuPmI/AAAAAAAAAm4/yKhxAjqHnPQ/s320/1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_80QNBcr7cME/SEGbYv0bWLI/AAAAAAAAAnA/OLt2UqgSRnw/s1600-h/2.jpg"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_80QNBcr7cME/SEGcs6sD-pI/AAAAAAAAAnQ/HTd982yy8hs/s1600-h/2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5206614939699247762" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_80QNBcr7cME/SEGcs6sD-pI/AAAAAAAAAnQ/HTd982yy8hs/s320/2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_80QNBcr7cME/SEGbfBu6W8I/AAAAAAAAAnI/jvwA_0vC30I/s1600-h/3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5206613601560452034" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_80QNBcr7cME/SEGbfBu6W8I/AAAAAAAAAnI/jvwA_0vC30I/s320/3.jpg" border="0" /&gt;&lt;/a&gt; &lt;div&gt; &lt;/div&gt;&lt;br /&gt;效果圖:要多試一些不同的漸層方式，才會看起來更自然些。&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_80QNBcr7cME/SEGdCp_F2_I/AAAAAAAAAnY/6rRKszto0BU/s1600-h/åå¸¶ææ.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5206615313172782066" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_80QNBcr7cME/SEGdCp_F2_I/AAAAAAAAAnY/6rRKszto0BU/s320/%E5%85%89%E5%B8%B6%E6%95%88%E6%9E%9C.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1556664065151094901?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1556664065151094901/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1556664065151094901' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1556664065151094901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1556664065151094901'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/06/3dsmax.html' title='3DSMAX 光帶快速製作'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_80QNBcr7cME/SEGbS8kuPmI/AAAAAAAAAm4/yKhxAjqHnPQ/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7269571307251293480</id><published>2008-05-29T20:43:00.008+08:00</published><updated>2008-05-30T14:59:46.698+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='資料備份'/><title type='text'>MySQL 即時備援</title><content type='html'>其實整個原理很簡單…&lt;br /&gt;master 端及 slave 端各維持一份二進制的 log 檔，並記錄各自的更新指標&lt;br /&gt;slave 時時去查看 master 的 log ，有變動的話就要求 master 把 log 檔傳過來進行同步。&lt;br /&gt;(說簡單其實也是搞了好久才弄懂~真是江湖一點訣)&lt;br /&gt;&lt;br /&gt;*MySQL 版本: 5.0.32&lt;br /&gt;=============================================================&lt;br /&gt;Master 端操作…&lt;br /&gt;Master ( main server )...&lt;br /&gt;ip: xxx.xxx.xxx.mmm&lt;br /&gt;&lt;br /&gt;設置 maser server id 及欲進行二進制 log 檔的資料庫作為同步用…&lt;br /&gt;nano /etc/mysql/my.cnf&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;[mysqld]&lt;br /&gt;# bind-address = 127.0.0.1&lt;br /&gt;server-id = 1&lt;br /&gt;log_bin = /var/log/mysql/mysql-bin.log&lt;br /&gt;binlog_do_db = db_name_to_backup&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*binlog_do_db 有多個資料庫就多用幾行來設置。&lt;br /&gt;&lt;br /&gt;重新啟動 mysql…&lt;br /&gt;/etc/init.d/mysql restart&lt;br /&gt;&lt;br /&gt;進入 mysql command…&lt;br /&gt;mysql -uroot -p&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;新增一個使用者 backup 給 slave 端用，需有 &lt;span style="color:#ff0000;"&gt;REPLICATION SLAVE&lt;/span&gt; 權限，作為同步用帳號…&lt;br /&gt;mysql&gt;GRANT &lt;span style="color:#ff0000;"&gt;REPLICATION SLAVE&lt;/span&gt; ON *.* TO backup@'xxx.xxx.xxx.sss' IDENTIFIED BY 'set_password';&lt;br /&gt;&lt;br /&gt;暫時鎖住資料庫…&lt;br /&gt;mysql&gt;FLUSH TABLES WITH READ LOCK;&lt;br /&gt;&lt;br /&gt;這邊要 dump 出你要同步的資料庫，請參考 mysqldump 使用方法或用 phpmyadmin 匯出…&lt;br /&gt;####################&lt;br /&gt;匯出出你要同步的資料庫…&lt;br /&gt;####################&lt;br /&gt;&lt;br /&gt;看一下目前 log 指標檔及其指標位置(要記住紅色部份)…&lt;br /&gt;mysql&gt;show master status\G&lt;br /&gt;--------------------------------------------&lt;br /&gt;File: &lt;span style="color:#ff0000;"&gt;mysql-bin.000073&lt;/span&gt;&lt;br /&gt;Position: &lt;span style="color:#ff0000;"&gt;98&lt;/span&gt;&lt;br /&gt;Binlog_Do_DB: db_name_to_backup&lt;br /&gt;Binlog_Ignore_DB:&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;解鎖資料庫…&lt;br /&gt;mysql&gt;UNLOCK TABLES;&lt;br /&gt;&lt;br /&gt;離開 mysql command…&lt;br /&gt;exit&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;=============================================================&lt;br /&gt;Slave 端操作…&lt;br /&gt;Slave ( backup server )&lt;br /&gt;ip:xxx.xxx.xxx.sss&lt;br /&gt;&lt;br /&gt;先刪除原有的 master 資訊(如果有的話)…&lt;br /&gt;rm /var/lib/mysql/master.info&lt;br /&gt;&lt;br /&gt;設置 maser host 相關資料及欲進行二進制 log 檔同步的資料庫…&lt;br /&gt;nano /etc/mysql/my.cnf&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;[mysqld]&lt;br /&gt;# bind-address = 127.0.0.1&lt;br /&gt;server-id = 2&lt;br /&gt;master-host = xxx.xxx.xxx.mmm&lt;br /&gt;master-user = backup&lt;br /&gt;master-password = set_password&lt;br /&gt;master-port = 3306&lt;br /&gt;master-connect-retry = 60&lt;br /&gt;replicate-do-db = db_name_to_backup&lt;br /&gt;log_bin = /var/log/mysql/mysql-bin.log&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;重新啟動 mysql…&lt;br /&gt;/etc/init.d/mysql restart&lt;br /&gt;&lt;br /&gt;進入 mysql command…&lt;br /&gt;mysql -uroot -p&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;先停止原有的同步作業…(因為 mysql restart 會自動重啟)&lt;br /&gt;mysql&gt;slave stop;&lt;br /&gt;&lt;br /&gt;####################&lt;br /&gt;匯入你要同步的資料庫…&lt;br /&gt;####################&lt;br /&gt;&lt;br /&gt;變更同步資訊及指標位置…&lt;br /&gt;mysql&gt;CHANGE MASTER TO&lt;br /&gt;MASTER_HOST='61.221.194.212',&lt;br /&gt;MASTER_USER='backup',&lt;br /&gt;MASTER_PASSWORD='set_password',&lt;br /&gt;MASTER_LOG_FILE='&lt;span style="color:#ff0000;"&gt;mysql-bin.000073&lt;/span&gt;',&lt;br /&gt;MASTER_LOG_POS=&lt;span style="color:#ff0000;"&gt;98&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;啟動同步程序…&lt;br /&gt;mysql&gt;slave start;&lt;br /&gt;&lt;br /&gt;查看一下同步狀態…(注意紅色部份要正確才是有在運行)&lt;br /&gt;mysql&gt;show master status\G;&lt;br /&gt;----------------------------------------------------&lt;br /&gt;Slave_IO_State: Waiting for master to send event&lt;br /&gt;Master_Host: xxx.xxx.xxx.mmm&lt;br /&gt;Master_User: backup&lt;br /&gt;Master_Port: 3306&lt;br /&gt;Connect_Retry: 60&lt;br /&gt;Master_Log_File: &lt;span style="color:#ff0000;"&gt;mysql-bin.000073&lt;/span&gt;&lt;br /&gt;Read_Master_Log_Pos: &lt;span style="color:#ff0000;"&gt;98&lt;/span&gt;&lt;br /&gt;Relay_Log_File: dns1-relay-bin.000002&lt;br /&gt;Relay_Log_Pos: 88631&lt;br /&gt;Relay_Master_Log_File: mysql-bin.000073&lt;br /&gt;Slave_IO_Running: &lt;span style="color:#ff0000;"&gt;Yes&lt;/span&gt;&lt;br /&gt;Slave_SQL_Running: &lt;span style="color:#ff0000;"&gt;Yes&lt;/span&gt;&lt;br /&gt;Replicate_Do_DB: db_name_to_backup&lt;br /&gt;Replicate_Ignore_DB:&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;----------------------------------------------------&lt;br /&gt;&lt;br /&gt;*參考筆記…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDSVoIgoQnomkvpYj"&gt;http://www.google.com/notebook/public/12398140405581905258/BDSVoIgoQnomkvpYj&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gra2.com/article.php/setting-up-database-replication-on-mysql"&gt;http://www.gra2.com/article.php/setting-up-database-replication-on-mysql&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7269571307251293480?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7269571307251293480/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7269571307251293480' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7269571307251293480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7269571307251293480'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/mysql.html' title='MySQL 即時備援'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-709284947130331542</id><published>2008-05-28T09:33:00.004+08:00</published><updated>2009-03-03T09:55:59.612+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux 時間調校</title><content type='html'>系統時間不使用 UTC(GMT)…&lt;br /&gt;nano /etc/default/rcS&lt;br /&gt;---------------------------------------------------&lt;br /&gt;UTC=no&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;重設時區…&lt;br /&gt;rm /etc/localtime&lt;br /&gt;&lt;br /&gt;cp -a /usr/share/zoneinfo/Asia/Taipei /etc/localtime&lt;br /&gt;&lt;br /&gt;手動校正時間MMDDhhmmYYYY…&lt;br /&gt;date 052808542008&lt;br /&gt;&lt;br /&gt;時間寫入 bios…&lt;br /&gt;hwclock -w&lt;br /&gt;&lt;br /&gt;安裝 ntp 網路時間同步…&lt;br /&gt;apt-get install ntpdate&lt;br /&gt;&lt;br /&gt;與 ntp server 同步時間…&lt;br /&gt;ntpdate time.stdtime.gov.tw&lt;br /&gt;&lt;br /&gt;時間寫入 bios…&lt;br /&gt;hwclock -w&lt;br /&gt;&lt;br /&gt;系統自動校時…&lt;br /&gt;nano /etc/crontab&lt;br /&gt;---------------------------------------------------&lt;br /&gt;10 5 * * * root /usr/sbin/ntpdate time.stdtime.gov.tw &amp;amp;&amp;amp; /sbin/hwclock -w&lt;br /&gt;---------------------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-709284947130331542?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/709284947130331542/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=709284947130331542' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/709284947130331542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/709284947130331542'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/linux_28.html' title='Linux 時間調校'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7994983388681681899</id><published>2008-05-27T22:50:00.011+08:00</published><updated>2010-06-11T00:25:14.694+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='資料備份'/><title type='text'>使用 rsync 備份、備援、鏡像</title><content type='html'>備份主機…&lt;br /&gt;server side ( backup server、mirror server )…&lt;br /&gt;=======================================&lt;br /&gt;安裝 rsync…&lt;br /&gt;apt-get install rsync&lt;br /&gt;&lt;br /&gt;設置 rsync…&lt;br /&gt;nano /etc/default/rsync&lt;br /&gt;-------------------------------------------&lt;br /&gt;RSYNC_ENABLE=true&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;設置 rsync client…&lt;br /&gt;nano /etc/rsyncd.conf&lt;br /&gt;-------------------------------------------&lt;br /&gt;[backup_home]&lt;br /&gt;hosts allow = xxx.xxx.xxx.xxx&lt;br /&gt;hosts deny = *&lt;br /&gt;path = /home&lt;br /&gt;auth users = backup_admin&lt;br /&gt;uid = root &lt;br /&gt;gid = root &lt;br /&gt;secrets file = /etc/rsyncd.secrets&lt;br /&gt;read only = no&lt;br /&gt;&lt;br /&gt;[backup_www]&lt;br /&gt;hosts allow = xxx.xxx.xxx.xxx&lt;br /&gt;hosts deny = *&lt;br /&gt;path = /var/www&lt;br /&gt;auth users = backup_admin&lt;br /&gt;uid = root&lt;br /&gt;gid = root&lt;br /&gt;secrets file = /etc/rsyncd.secrets&lt;br /&gt;read only = no&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;設置密碼…&lt;br /&gt;nano /etc/rsyncd.secrets&lt;br /&gt;-------------------------------------------&lt;br /&gt;backup_admin:password1234&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;變更權限…&lt;br /&gt;chown root:root /etc/rsyncd.secrets&lt;br /&gt;chmod 600 /etc/rsyncd.secrets&lt;br /&gt;&lt;br /&gt;啟動 rsync …&lt;br /&gt;/etc/init.d/rsync start or restart&lt;br /&gt;=======================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;待備份電腦…&lt;br /&gt;client side ( main server、www server )…&lt;br /&gt;=======================================&lt;br /&gt;安裝 rsync…&lt;br /&gt;apt-get install rsync&lt;br /&gt;&lt;br /&gt;設置密碼…&lt;br /&gt;nano /etc/rsyncd.passwd&lt;br /&gt;-------------------------------------------&lt;br /&gt;password1234&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;變更權限&lt;br /&gt;chmod 600 /etc/rsyncd.passwd&lt;br /&gt;chown root:root /etc/rsyncd.passwd&lt;br /&gt;&lt;br /&gt;shell 下執行備份(/home/)…&lt;br /&gt;rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /home/ backup_admin@xxx.xxx.xxx.xxx::backup_home&lt;br /&gt;(一行指令)&lt;br /&gt;&lt;br /&gt;shell 下執行備份(/var/www/)…&lt;br /&gt;rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /var/www/ backup_admin@xxx.xxx.xxx.xxx::backup_www&lt;br /&gt;(一行指令)&lt;br /&gt;&lt;br /&gt;定時啟動備份…&lt;br /&gt;nano /etc/crontab&lt;br /&gt;-------------------------------------------&lt;br /&gt;0 2 * * * root /usr/bin/rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /home/ backup_admin@xxx.xxx.xxx.xxx::backup_home&lt;br /&gt;0 4 * * * root /usr/bin/rsync -arHz --progress --delete --password-file=/etc/rsyncd.passwd /var/www/ backup_admin@xxx.xxx.xxx.xxx::backup_www&lt;br /&gt;-------------------------------------------&lt;br /&gt;(二行設置)&lt;br /&gt;=======================================&lt;br /&gt;&lt;br /&gt;參考來源…&lt;br /&gt;&lt;a href="http://www.howtoforge.com/mirroring_with_rsync"&gt;http://www.howtoforge.com/mirroring_with_rsync&lt;/a&gt;&lt;br /&gt;&lt;a href="http://linux.tnc.edu.tw/techdoc/rsync.htm"&gt;http://linux.tnc.edu.tw/techdoc/rsync.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html"&gt;http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://moto.debian.org.tw/viewtopic.php?t=6757"&gt;http://moto.debian.org.tw/viewtopic.php?t=6757&lt;/a&gt;&lt;br /&gt;&lt;a href="http://b2ddoc.tnc.edu.tw/yh/LinuxBase/m6_server_setup.html#mozTocId848674"&gt;http://b2ddoc.tnc.edu.tw/yh/LinuxBase/m6_server_setup.html#mozTocId848674&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7994983388681681899?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7994983388681681899/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7994983388681681899' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7994983388681681899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7994983388681681899'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/linux_27.html' title='使用 rsync 備份、備援、鏡像'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8427527886364947147</id><published>2008-05-21T21:02:00.001+08:00</published><updated>2008-06-16T23:44:11.096+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><title type='text'>魚</title><content type='html'>&lt;embed src="http://fishgadget.googlecode.com/svn/trunk/fish.swf" width="300" height="200" type="application/x-shockwave-flash" wmode="opaque" bgcolor="F0F7FF" flashvars="up_fishColor2=30A5FF&amp;amp;up_fishColor8=F45540&amp;amp;up_fishName=Fish&amp;amp;up_backgroundImage=http://&amp;amp;up_fishColor7=F45540&amp;amp;up_fishColor5=FF17FB&amp;amp;up_fishColor4=F9FF4A&amp;amp;up_backgroundColor=F0F7FF&amp;amp;up_foodColor=FCB347&amp;amp;up_fishColor9=F45540&amp;amp;up_fishColor1=F45540&amp;amp;up_fishColor6=FFC445&amp;amp;up_numFish=6&amp;amp;up_fishColor10=F45540&amp;amp;up_fishColor3=ADFF94&amp;amp;"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8427527886364947147?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8427527886364947147/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8427527886364947147' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8427527886364947147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8427527886364947147'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/blog-post_21.html' title='魚'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7645080016822718713</id><published>2008-05-19T16:13:00.002+08:00</published><updated>2008-05-20T17:10:29.819+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='韌體設計'/><title type='text'>24LC04B用I2C讀寫</title><content type='html'>&lt;p&gt;筆記:&lt;br /&gt;&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDQGMIgoQ3f676KAi"&gt;http://www.google.com/notebook/public/12398140405581905258/BDQGMIgoQ3f676KAi&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SCL可以到100KHZ但是寫入後要DELAY 10MS 左右，但一般都由MASTER控制，除非SLAVE端有 clock stretching 模式。&lt;/li&gt;&lt;li&gt;ACK、NOACK有兩種解釋，一個是MASTER發出的，一個是來自SLAVER(24LC04B)的，兩者SDA的方向是不同的。&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;硬體接腳~WP一定要接好，不可浮接，否則寫入會失常。&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;寫入的流程…&lt;br /&gt;Start();&lt;br /&gt;Write8Bit(WriteDeviceAddress);&lt;br /&gt;TestAck();&lt;br /&gt;Write8Bit(RomAddress);&lt;br /&gt;TestAck();&lt;br /&gt;Write8Bit(*Wdata);&lt;br /&gt;TestAck();&lt;br /&gt;Stop();&lt;br /&gt;DelayMs(10);&lt;/p&gt;&lt;p&gt;讀出的流程…&lt;br /&gt;Start();&lt;br /&gt;Write8Bit(WriteDeviceAddress);&lt;br /&gt;TestAck();&lt;br /&gt;Write8Bit(RomAddress);&lt;br /&gt;TestAck();&lt;br /&gt;Start();&lt;br /&gt;Write8Bit(ReadDviceAddress);&lt;br /&gt;TestAck()&lt;br /&gt;&lt;span style="color:#cccccc;"&gt;Read8Bit();&lt;br /&gt;Ack(); …&lt;br /&gt;&lt;/span&gt;Read8Bit();&lt;br /&gt;NoAck();&lt;br /&gt;Stop();&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7645080016822718713?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7645080016822718713/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7645080016822718713' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7645080016822718713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7645080016822718713'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/24lc04bi2c.html' title='24LC04B用I2C讀寫'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8526618933332910324</id><published>2008-05-17T10:57:00.004+08:00</published><updated>2009-03-03T09:49:10.827+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>VirtueMart 配置</title><content type='html'>修改送貨方式：&lt;br /&gt;預設只有 Standard Shipping&lt;br /&gt;到後台--&gt;管理--&gt;配置--&gt;送貨&lt;br /&gt;　只選「分別配置的運送者跟運費的標準送貨模組。推薦 ! 」即可&lt;br /&gt;再到…&lt;br /&gt;　運送&lt;br /&gt;　　增加運送者&lt;br /&gt;　　新增運送費率&lt;br /&gt;&lt;br /&gt;信用卡交易:&lt;br /&gt;　&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDRteIgoQj8OrqJ8j"&gt;參考筆記&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8526618933332910324?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8526618933332910324/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8526618933332910324' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8526618933332910324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8526618933332910324'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/virtuemart-standard-shipping.html' title='VirtueMart 配置'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2309191474094197714</id><published>2008-05-16T21:03:00.002+08:00</published><updated>2009-03-03T09:49:10.828+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>VirtueMart 安裝</title><content type='html'>下載 …&lt;br /&gt;　&lt;a href="https://dev.virtuemart.net/cb/displayDocument/VirtueMart_1.1.0-COMPLETE_PACKAGE.j15.zip?doc_id=2069" target="_top"&gt;VirtueMart_1.1.0-COMPLETE_PACKAGE.j15.zip&lt;/a&gt;&lt;br /&gt;　官網位置&lt;br /&gt;　　&lt;a href="https://dev.virtuemart.net/cb/proj/doc.do?proj_id=1"&gt;https://dev.virtuemart.net/cb/proj/doc.do?proj_id=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;解壓縮會看到 …&lt;br /&gt;　com_virtuemart_1.1.0.j15.zip&lt;br /&gt;　兩個資料夾 …&lt;br /&gt;　　modules&lt;br /&gt;　　plugins&lt;br /&gt;　及一份說明文件 …&lt;br /&gt;　　VirtueMart_1.1_Installation.pdf  (這份其實己經講的很詳細了)&lt;br /&gt;&lt;br /&gt;到 Joomla (1.5.x) 後台，選擇 擴充套件--&gt;安裝移除&lt;br /&gt;先安裝&lt;br /&gt;　com_virtuemart_1.1.0.j15.zip&lt;br /&gt;再安裝&lt;br /&gt;　modules 下的&lt;br /&gt;　　mod_virtuemart_1.1.0.j15.zip&lt;br /&gt;其它套件可以看需求要裝，這兩個是最基本的&lt;br /&gt;&lt;br /&gt;下載語言包…&lt;br /&gt;　&lt;a href="https://dev.virtuemart.net/cb/displayDocument/Language_Pack_for_VirtueMart_1.1.0.zip?doc_id=2068" target="_top"&gt;Language_Pack_for_VirtueMart_1.1.0.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;解開後刪去不必要的語系只留下&lt;br /&gt;　traditional_chinese&lt;br /&gt;&lt;br /&gt;注意，他檔案原本是 big 編碼，若使用 utf8 編碼 則要先…&lt;br /&gt;　1進行轉換。我是用 ConvertZ。&lt;br /&gt;　2每個檔案前面幾行，修改內容&lt;br /&gt;　　  'CHARSET' =&gt; 'BIG5' --&gt;  'CHARSET' =&gt; 'UTF8'&lt;br /&gt;　3有些字碼有誤要自行修改( 由於許、蓋、功…的問題)&lt;br /&gt;&lt;br /&gt;將語言包 languages 整個目錄上傳到&lt;br /&gt;　 Joomla 安裝目錄\administrator/components/com_viruemart&lt;br /&gt;&lt;br /&gt;至此算是安裝完成。&lt;br /&gt;&lt;br /&gt;最後記得要去後台模組管理中啟用 com_viruemart 模組。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2309191474094197714?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2309191474094197714/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2309191474094197714' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2309191474094197714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2309191474094197714'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/virtuemart.html' title='VirtueMart 安裝'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7382355538507227647</id><published>2008-05-16T20:48:00.002+08:00</published><updated>2008-05-20T17:11:16.245+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><title type='text'>3DS MAX 使用者設定檔</title><content type='html'>存放位置…&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\xxxxx\Local Settings\Application Data\Autodesk\3dsmax\9 - 32bit\enu&lt;br /&gt;&lt;br /&gt;由於是隱藏的，要打開隱藏。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;平常備份後，有問題再還原即可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7382355538507227647?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7382355538507227647/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7382355538507227647' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7382355538507227647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7382355538507227647'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/3ds-max.html' title='3DS MAX 使用者設定檔'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5632085712757962648</id><published>2008-05-16T11:35:00.004+08:00</published><updated>2009-03-03T09:49:10.829+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Joomla1.5.X 文章以 PDF 格式顯錯誤(未解決)</title><content type='html'>錯誤訊息…&lt;br /&gt;&lt;br /&gt;Warning: TCPDF::include(/var/www/joomla/language/pdf_fonts/fireflysung.php) [&lt;a href="http://www.asn.com.tw/joomla/function.TCPDF-include"&gt;function.TCPDF-include&lt;/a&gt;]: failed to open stream: No such file or directory in /var/www/joomla/libraries/tcpdf/tcpdf.php on line 1909Warning: TCPDF::include() [&lt;a href="http://www.asn.com.tw/joomla/function.include"&gt;function.include&lt;/a&gt;]: Failed opening '/var/www/joomla/language/pdf_fonts/fireflysung.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/joomla/libraries/tcpdf/tcpdf.php on line 1909TCPDF error: Could not include font definition file&lt;br /&gt;&lt;br /&gt;到 GOOL 搜索找到字型檔 FOR JOOMLA…&lt;br /&gt;&lt;a href="http://for7.org/ServerUpdate/browser/extra?rev=54"&gt;http://for7.org/ServerUpdate/browser/extra?rev=54&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上載後再試，出現錯誤…&lt;br /&gt;Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 4980736 bytes) in /var/www/joomla/language/pdf_fonts/fireflysung.php on line 1031&lt;br /&gt;&lt;br /&gt;修改 /etc/php5/apache2/php.ini&lt;br /&gt;加大 memory&lt;br /&gt;memory_limit = 64M&lt;br /&gt;&lt;br /&gt;程序會跑可是很慢~當是字型處理有問題。&lt;br /&gt;…尚未找到解決方法。&lt;br /&gt;&lt;br /&gt;暫時先從後台將 pdf 輸出的功能關掉&lt;br /&gt;因為也能透過列印的方式產生pdf檔，所以其實這個功能可以不用。&lt;br /&gt;&lt;br /&gt;後台--&gt;內容--&gt;文享管理--&gt;參數&lt;br /&gt;作設定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5632085712757962648?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5632085712757962648/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5632085712757962648' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5632085712757962648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5632085712757962648'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/joomla15x-pdf.html' title='Joomla1.5.X 文章以 PDF 格式顯錯誤(未解決)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6046544052792270319</id><published>2008-05-16T10:19:00.004+08:00</published><updated>2009-03-03T09:54:15.407+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Spamassassin 黑名單、白名單</title><content type='html'>手動=========================================&lt;br /&gt;nano /etc/mail/spamassassin/local.cf&lt;br /&gt;&lt;br /&gt;# whitelist:&lt;br /&gt;whitelist_from &lt;a href="mailto:d.cary@sparkingwire.com"&gt;d.cary@sparkingwire.com&lt;/a&gt;&lt;br /&gt;whitelist_from &lt;a href="mailto:*@sparkingwire.com"&gt;*@sparkingwire.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;# blacklist:&lt;br /&gt;blacklist_from &lt;a href="mailto:d.cary@sparkingwire.com"&gt;d.cary@sparkingwire.com&lt;/a&gt;&lt;br /&gt;blacklist_from *@sparkingwire.com&lt;br /&gt;&lt;br /&gt;自動=========================================&lt;br /&gt;#useradd -M black&lt;br /&gt;#useradd -M white&lt;br /&gt;&lt;br /&gt;以後如果收到垃圾信的話, 就把信 "以附加檔案方式轉寄" 給自己 Server 上的 black 信箱; 如果是被 Spamassassin 誤判為垃圾信的郵件, 就把它轉寄給 white. 也就是說, 讓這兩個信箱收集可以給 Spamassassin 學習的範本.&lt;br /&gt;&lt;br /&gt;學習的指令如下:&lt;br /&gt;學習黑名單:&lt;br /&gt;#sa-learn -D --showdots --spam --mbox /var/mail/black&lt;br /&gt;&lt;br /&gt;學習白名單:&lt;br /&gt;#sa-learn -D --showdots --ham --mbox /var/mail/white&lt;br /&gt;學習完成後, 即可將 black 與 white 信箱清空:&lt;br /&gt;#true &gt; /var/mail/black; true &gt; /var/mail/white&lt;br /&gt;&lt;br /&gt;讓系統每小時自動學習黑/白名單:&lt;br /&gt;於 /etc/cron.hourly 建立一個可執行的 shell 檔, 內容為:&lt;br /&gt;#!/bin/sh&lt;br /&gt;if [ -s /var/spool/mail/black ]; then&lt;br /&gt;sa-learn --spam --mbox /var/spool/mail/black &gt; /dev/null&lt;br /&gt;2&gt;&amp;amp;1&lt;br /&gt;true &gt; /var/spool/mail/black&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -s /var/spool/mail/white ]; then&lt;br /&gt;sa-learn --ham --mbox /var/spool/mail/white &gt; /dev/null&lt;br /&gt;2&gt;&amp;amp;1&lt;br /&gt;true &gt; /var/spool/mail/white&lt;br /&gt;fi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6046544052792270319?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6046544052792270319/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6046544052792270319' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6046544052792270319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6046544052792270319'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/spamassassin.html' title='Spamassassin 黑名單、白名單'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8689194829260908920</id><published>2008-05-15T17:08:00.005+08:00</published><updated>2009-03-03T09:54:15.408+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Clamav Spamassassin更新升級</title><content type='html'>更新 Clamav:&lt;br /&gt;nano /etc/apt/sources.list&lt;br /&gt;增修&lt;br /&gt;&lt;span style="color:#999999;"&gt;deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;apt-get update&lt;br /&gt;apt-get upgrade&lt;br /&gt;freshclam&lt;br /&gt;&lt;br /&gt;安裝 Spamassassin:&lt;br /&gt;參考…&lt;br /&gt;&lt;a href="http://www.debian.org.tw/index.php/SpamAssassin"&gt;http://www.debian.org.tw/index.php/SpamAssassin&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.debuntu.org/postfix-and-pamassassin-how-to-filter-spam"&gt;http://www.debuntu.org/postfix-and-pamassassin-how-to-filter-spam&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;apt-get install spamassassin spamc&lt;br /&gt;groupadd -g 5001 spamd&lt;br /&gt;useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd mkdir /var/lib/spamassassin&lt;br /&gt;chown spamd:spamd /var/lib/spamassassin&lt;br /&gt;nano /etc/default/spamassassin&lt;br /&gt;增修&lt;br /&gt;&lt;span style="color:#999999;"&gt;ENABLED=1&lt;br /&gt;SAHOME="/var/lib/spamassassin/" OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${S$PIDFILE="${SAHOME}spamd.pid"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;nano /etc/spamassassin/local.cf&lt;br /&gt;作適當的修改設定&lt;br /&gt;&lt;br /&gt;/etc/init.d/spamassassin restart&lt;br /&gt;&lt;br /&gt;nano /etc/postfix/master.cf&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;smtp inet n - - - - smtpd &lt;/span&gt;&lt;br /&gt;改為&lt;br /&gt;&lt;span style="color:#999999;"&gt;smtp inet n - n - - smtpd -o content_filter$=spamassassin &lt;/span&gt;&lt;br /&gt;若原本是在 chroot 模式則要記得保留，否則smtp驗證會失敗。&lt;br /&gt;最後加上&lt;br /&gt;&lt;span style="color:#999999;"&gt;spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/etc/init.d/postfix reload&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8689194829260908920?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8689194829260908920/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8689194829260908920' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8689194829260908920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8689194829260908920'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/clamav-spamassassin.html' title='Clamav Spamassassin更新升級'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4326434502916031517</id><published>2008-05-14T20:45:00.003+08:00</published><updated>2009-03-03T09:51:34.982+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google 地圖</title><content type='html'>&lt;div id="map" style="WIDTH: 400px; HEIGHT: 300px"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4326434502916031517?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4326434502916031517/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4326434502916031517' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4326434502916031517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4326434502916031517'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/google.html' title='Google 地圖'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7907198938305487905</id><published>2008-05-14T20:18:00.006+08:00</published><updated>2009-03-03T09:49:10.829+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Joomla1.5.X 安裝 google maps 模組</title><content type='html'>Joomla1.5.X 安裝 &lt;a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/"&gt;Plugin Googlemaps&lt;/a&gt; 模組&lt;br /&gt;一、首先下載 plugin&lt;br /&gt;&lt;a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/"&gt;http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;二、由於模組相容性，要將你的 joomla 改為 Legacy Mode ，到後台安裝 plugin 那邊找 System - Legacy 直接安裝。&lt;br /&gt;&lt;br /&gt;三、安裝 &lt;a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/"&gt;Plugin Googlemaps&lt;/a&gt; ，透過下載的壓縮檔案即可。&lt;br /&gt;&lt;br /&gt;四、到 google map 申請一組網站用的 api key，到這裡&lt;a href="http://code.google.com/apis/maps/signup.html"&gt;http://code.google.com/apis/maps/signup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;五、將 key 填到 &lt;a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/"&gt;Plugin Googlemaps&lt;/a&gt; 後台參數設定中，順便把一些參數設好。&lt;br /&gt;&lt;br /&gt;至此算 &lt;a href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1147/Itemid,35/"&gt;Plugin Googlemaps&lt;/a&gt; 安裝完成，再來就是在文章中秀出地圖的方法囉…&lt;br /&gt;&lt;br /&gt;一、新建文章&lt;br /&gt;二、加入 map 標籤，如下範例…(最好使用純html方式編輯)&lt;br /&gt;&lt;span style="color:#ff6666;"&gt;{mosmap width='500'height='400'lat='23.008558'lon='120.182888'zoom='12'zoomType='Large'zoomNew='0'mapType='Normal 'showMaptype='0'overview='0'text='這是哪裡'tooltip='文字說明'marker='1'align='center'}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;其中最重要的位置座標就是 lat 、lon 兩個參數~(到 google maps 找到你的點，再透過連結輸出的功能可以看的到 ll=xxxxx 的值就是了 ) ，或者到 &lt;a href="http://koti.mbnet.fi/ojalesa/tutor/design.html"&gt;http://koti.mbnet.fi/ojalesa/tutor/design.html&lt;/a&gt; 這裡來查座標。&lt;br /&gt;其它的參數可以自行參考的的說明文件。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;三、完成。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;效果如下…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_80QNBcr7cME/SCrdhn_s96I/AAAAAAAAAmY/WwCJQikcLeA/s1600-h/1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5200212289494251426" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_80QNBcr7cME/SCrdhn_s96I/AAAAAAAAAmY/WwCJQikcLeA/s320/1.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7907198938305487905?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7907198938305487905/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7907198938305487905' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7907198938305487905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7907198938305487905'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/joomla15x-google-maps.html' title='Joomla1.5.X 安裝 google maps 模組'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_80QNBcr7cME/SCrdhn_s96I/AAAAAAAAAmY/WwCJQikcLeA/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2481797084128488844</id><published>2008-05-14T13:55:00.008+08:00</published><updated>2009-03-03T09:52:50.335+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>架站學習之路</title><content type='html'>這兩天終於把公司DNS搞定~&lt;br /&gt;硬碟掛掉真慘…&lt;br /&gt;包括…&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux Debian…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDSD6IgoQ3NOI5pwj"&gt;筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Postfix Mail Server…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDQ7QIgoQkbuPxJsj"&gt;筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;DNS…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDQ6oIgoQu9mPup4j"&gt;筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mysql…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDSVoIgoQnomkvpYj"&gt;筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Apache…&lt;a href="http://www.google.com/notebook/public/12398140405581905258/BDSGpIgoQq7HDu50j"&gt;筆記&lt;/a&gt;&lt;/li&gt;&lt;li&gt;PHP&lt;/li&gt;&lt;li&gt;Joomla+GoogleMap+Expose4+JCE... &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;很累人，不過也學了不少。(http://rs.twnic.net.tw/cgi-bin/dns.cgi)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_80QNBcr7cME/SCp_Dn_s94I/AAAAAAAAAmI/wPR8eH58Fzs/s1600-h/DNS_OK.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5200108420005164930" style="" alt="" src="http://3.bp.blogspot.com/_80QNBcr7cME/SCp_Dn_s94I/AAAAAAAAAmI/wPR8eH58Fzs/s320/DNS_OK.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;看到零錯誤真是蠻感動的~&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_80QNBcr7cME/SCqAnX_s95I/AAAAAAAAAmQ/lbdWnI2wJJU/s1600-h/WEB_OK.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5200110133697116050" style="" alt="" src="http://2.bp.blogspot.com/_80QNBcr7cME/SCqAnX_s95I/AAAAAAAAAmQ/lbdWnI2wJJU/s320/WEB_OK.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;首頁也蠻有個樣子~將來要幫代客架站都沒問題了吧? 整站全包~&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2481797084128488844?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2481797084128488844/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2481797084128488844' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2481797084128488844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2481797084128488844'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/blog-post.html' title='架站學習之路'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_80QNBcr7cME/SCp_Dn_s94I/AAAAAAAAAmI/wPR8eH58Fzs/s72-c/DNS_OK.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1459426997400773822</id><published>2008-05-14T11:08:00.002+08:00</published><updated>2009-03-03T09:49:10.831+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>如何修改joomla 1.5頁尾的版權信息</title><content type='html'>在 /language/zh-CN/zh-CN.mod_footer.ini&lt;br /&gt;zh-CN=相應的語系&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1459426997400773822?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1459426997400773822/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1459426997400773822' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1459426997400773822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1459426997400773822'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/joomla-15.html' title='如何修改joomla 1.5頁尾的版權信息'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5971292164909263009</id><published>2008-05-14T08:45:00.006+08:00</published><updated>2010-10-19T00:51:44.707+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Debian 安裝筆記</title><content type='html'>Debian4 安裝&lt;br /&gt;&lt;br /&gt;OpenSSH-Server&lt;br /&gt;apt-get install openssh-server&lt;br /&gt;&lt;br /&gt;POSTFIX&lt;br /&gt;mail sever&lt;br /&gt;&lt;br /&gt;BIND9&lt;br /&gt;dns server&lt;br /&gt;&lt;br /&gt;MYSQL&lt;br /&gt;apt-get --purge remove mysql-common mysql-server mysql-client&lt;br /&gt;apt-get install mysql-common mysql-server mysql-client&lt;br /&gt;&lt;br /&gt;APACHE+PHP&lt;br /&gt;apt-get --purge remove apache2 php5 libapache2-mod-php5&lt;br /&gt;apt-get install apache2 php5 libapache2-mod-php5 php5-gd php5-mysql&lt;br /&gt;&lt;br /&gt;apache 預設語言問題&lt;br /&gt;/etc/apache2# nano httpd.conf&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;AddDefaultCharset Big5&lt;br /&gt;LanguagePriority tw en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;PHPMYADMIN&lt;br /&gt;apt-get --purge remove phpmyadmin&lt;br /&gt;apt-get install phpmyadmin&lt;br /&gt;&lt;br /&gt;PHPMYADMIN big5亂碼問題&lt;br /&gt;/usr/share/phpmyadmin/libraries# nano select_lang.lib.php&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;'big5' =&gt; 'big5', 更改 'big5' =&gt; 'latin1',&lt;br /&gt;'utf-8' =&gt; 'utf-8', 更改 'utf-8' =&gt; ' latin1',&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Joomla&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5971292164909263009?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5971292164909263009/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5971292164909263009' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5971292164909263009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5971292164909263009'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/debian.html' title='Debian 安裝筆記'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6794179099092562446</id><published>2008-05-08T14:32:00.006+08:00</published><updated>2008-05-14T20:05:53.876+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>另類電腦資料存放方式SVN</title><content type='html'>最近夏天到了~似乎又開始硬碟荒了，周遭的硬碟一個接一個掛掉&lt;br /&gt;這種事常常在發生，周而復始，不經讓人感概…&lt;br /&gt;這邊提出個人保存資料的方式，也是自己最近才這樣子作的(當然也是經過一番椎心之痛才有的覺悟)&lt;br /&gt;&lt;br /&gt;一般人用底下這些方式儲放資料…&lt;br /&gt;一、硬碟或作RAID(硬碟沒有比較硬，反而是極其脆弱)&lt;br /&gt;二、隨身碟(隨身帶著比較保險?)&lt;br /&gt;三、光碟(光碟更不是看起來那樣金光閃閃永遠動人)&lt;br /&gt;&lt;br /&gt;但是這三個都是實體的東西，總會有損壞的一天(這是必然的)&lt;br /&gt;除非你一直重覆作備份的動作，並且保證在備份時不會很湊巧的同時壞掉(總是會這麼的巧)&lt;br /&gt;而且這樣的備份方式往往有時效的問題，常常留的資料都是「舊」的。(不見的總是最新最後的心血)&lt;br /&gt;&lt;br /&gt;經過這麼長久的接觸電腦，發現電腦其實是很不可靠的東西&lt;br /&gt;平常依賴慣了，會以為什麼事也不會發生，以為電腦資料跟平常紙本的東西一樣可以保存，頂多只是變舊&lt;br /&gt;但電腦就是電腦，是0與1的世界，好跟壞只有一線之隔，一旦壞了那就沒有商量的餘地，一切歸零。&lt;br /&gt;於是現在我絕大部份的資料全都改存放在網路上…&lt;br /&gt;&lt;br /&gt;網路空間&lt;br /&gt;&lt;br /&gt;依賴在大網站或大企業底下(google、msn…)，由他們負責去保管，而且通常都保管的很完善，也不用擔心哪天壞掉不見。&lt;br /&gt;你唯一需要擔心的大概就是個人隱私之類的東西。&lt;br /&gt;以前多用網路硬碟，但麻煩的是要自己在那邊co來co去，很容易造成資料不同步，也很容易懶得得去對照什麼要備份什麼不要備份，資料量大的話，也是很麻煩的一件事。(尤其是在網路速度變慢時~會抓狂)&lt;br /&gt;&lt;br /&gt;我現在都借用提供免費版本控制SVN空間的網站來作資料備份。(怎聽起來像在打廣告XD)&lt;br /&gt;介紹個好網站…&lt;br /&gt;&lt;br /&gt;http://www.assembla.com/&lt;br /&gt;&lt;br /&gt;註冊後可以自己新增空間，一個空間據說有500MB，而且數量好像沒限制(目前我己加了十幾個空間了)&lt;br /&gt;新增好了之後就可以把自己的資料往那邊狂塞(當然，最好自己也分配好不同的分類傳到不同的空間)&lt;br /&gt;好處隨之而來…&lt;br /&gt;由於採用SVN版本控制&lt;br /&gt;一、資料有變更、新增、修改…在COMMIT後都會自動幫你作好上傳&lt;br /&gt;二、而且可以在不同的電腦隨時CHECKOUT出來(當然前提是要有網路)&lt;br /&gt;三、不同的地方作不同的修改也不會出問題，因為SVN的特性，有衝突的修改它會提示你(如果是拿來作資料備份而不是程式碼版本控制的話，衝突的機會應該很難會發生)&lt;br /&gt;四、而且還有歷史記錄，隨時還能回復到以前的版本狀態…&lt;br /&gt;&lt;br /&gt;就好像是化整為零，無招勝有招一樣…&lt;br /&gt;把資料散佈在浩瀚網路海，反而是最保險的作法。&lt;br /&gt;值得去學習這工具怎麼用。&lt;br /&gt;&lt;br /&gt;關於 SVN 的使用方式網路上很多，這邊就不將這些資訊重覆了。&lt;br /&gt;請務必善用網路搜索的功能&lt;br /&gt;http://www.google.com.tw&lt;br /&gt;這是目前所有網路知識的線頭。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6794179099092562446?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6794179099092562446/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6794179099092562446' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6794179099092562446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6794179099092562446'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/05/svn.html' title='另類電腦資料存放方式SVN'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-7625457578655595180</id><published>2008-04-22T22:12:00.006+08:00</published><updated>2008-05-20T17:11:16.246+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>FLASH 練習</title><content type='html'>&lt;center&gt;&lt;br /&gt;FLASH真的不錯玩&lt;br /&gt;&lt;/center&gt;&lt;center&gt;&lt;object id="logo3" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" height="320" width="440" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&gt;&lt;param name="_cx" value="11642"&gt;&lt;param name="_cy" value="8467"&gt;&lt;param name="FlashVars" value=""&gt;&lt;param name="Movie" value="http://johnny.workers.googlepages.com/logo3.swf"&gt;&lt;param name="Src" value="http://johnny.workers.googlepages.com/logo3.swf"&gt;&lt;param name="WMode" value="Window"&gt;&lt;param name="Play" value="-1"&gt;&lt;param name="Loop" value="-1"&gt;&lt;param name="Quality" value="High"&gt;&lt;param name="SAlign" value=""&gt;&lt;param name="Menu" value="-1"&gt;&lt;param name="Base" value=""&gt;&lt;param name="AllowScriptAccess" value="sameDomain"&gt;&lt;param name="Scale" value="ShowAll"&gt;&lt;param name="DeviceFont" value="0"&gt;&lt;param name="EmbedMovie" value="0"&gt;&lt;param name="BGColor" value="FFFFFF"&gt;&lt;param name="SWRemote" value=""&gt;&lt;param name="MovieData" value=""&gt;&lt;param name="SeamlessTabbing" value="1"&gt;&lt;param name="Profile" value="0"&gt;&lt;param name="ProfileAddress" value=""&gt;&lt;param name="ProfilePort" value="0"&gt;&lt;param name="AllowNetworking" value="all"&gt;&lt;param name="AllowFullScreen" value="false"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;embed src="http://johnny.workers.googlepages.com/logo3.swf" quality="high" bgcolor="#ffffff" width="440" height="320" name="logo3" align="middle" allowscriptaccess="sameDomain" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;br /&gt; &lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-7625457578655595180?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/7625457578655595180/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=7625457578655595180' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7625457578655595180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/7625457578655595180'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/flash.html' title='FLASH 練習'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6425660020426324797</id><published>2008-04-22T20:08:00.006+08:00</published><updated>2008-05-14T20:08:08.406+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mindmap'/><title type='text'>兩個不同網站的線上心智圖比較</title><content type='html'>連續 po 了兩個線上心智圖 (mindmap)，都是免費申請的…&lt;br /&gt;&lt;br /&gt;第一個是來自於 &lt;a href="http://www.bubbl.us/"&gt;http://www.bubbl.us/&lt;/a&gt;&lt;br /&gt;　優點是操作簡單～功能也不錯&lt;br /&gt;　缺點是不能用中文存檔、整體展現出來有點擠&lt;br /&gt;&lt;br /&gt;第二個是來自於 &lt;a href="http://www.mindomo.com/"&gt;http://www.mindomo.com/&lt;/a&gt;&lt;br /&gt;　優點是功能強大～有匯入匯出的功能～展現出來比較有條理&lt;br /&gt;&lt;br /&gt;個人比較喜歡 mindomo 的表現方式~~&lt;br /&gt;&lt;p&gt;注意：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;mindomo 申請時用 hotmail 會收不到認證碼&lt;/li&gt;&lt;li&gt;mindomo 的 embedd HTML Code 要嵌在 blogger 要稍作修改~ 只要載取&lt;br /&gt;[param]... [/embed] 區段就好了，不然顯示不出來。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6425660020426324797?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6425660020426324797/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6425660020426324797' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6425660020426324797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6425660020426324797'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/blog-post_8627.html' title='兩個不同網站的線上心智圖比較'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6396509393269022624</id><published>2008-04-22T19:54:00.008+08:00</published><updated>2008-05-14T20:08:28.553+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mindmap'/><title type='text'>定時器架構圖</title><content type='html'>&lt;param name="flashvars" value="mapId=97d0c6ea129e4c2db6bd56b4bd183f50&amp;amp;showTitleBar=1&amp;amp;showStatusBar=1&amp;amp;showScrollBar=0&amp;amp;showApplicationMenu=0&amp;amp;showAuthor=0&amp;amp;showModified=0&amp;amp;showViews=0&amp;amp;showRating=0&amp;amp;"&gt;&lt;br /&gt;&lt;embed pluginspage="http://www.adobe.com/go/getflashplayer" src="http://www.mindomo.com/MindomoViewer.swf" width="100%" height="100%" type="application/x-shockwave-flash" flashvars="mapId=97d0c6ea129e4c2db6bd56b4bd183f50&amp;amp;showTitleBar=1&amp;amp;showStatusBar=1&amp;amp;showScrollBar=0&amp;amp;showApplicationMenu=0&amp;amp;showAuthor=0&amp;amp;showModified=0&amp;amp;showViews=0&amp;amp;showRating=0&amp;amp;"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6396509393269022624?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6396509393269022624/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6396509393269022624' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6396509393269022624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6396509393269022624'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/blog-post_6204.html' title='定時器架構圖'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3898924295149550295</id><published>2008-04-22T16:22:00.003+08:00</published><updated>2008-05-14T20:08:46.217+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mindmap'/><title type='text'>晚餐的心智圖</title><content type='html'>&lt;p&gt;看來還真是沒什麼好選擇的~XD&lt;br /&gt;&lt;span style="font-size:85%;"&gt;重點是心智圖的應用。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;object id="bblviewer" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" height="340" width="450" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;&lt;param name="_cx" value="11906"&gt;&lt;param name="_cy" value="8996"&gt;&lt;param name="FlashVars" value=""&gt;&lt;param name="Movie" value="http://bubbl.us/sys/view.swf?sid=102890&amp;amp;pw=yaqYUaoRlhDMINjB5RlRGNEpqbTlsbw"&gt;&lt;param name="Src" value="http://bubbl.us/sys/view.swf?sid=102890&amp;amp;pw=yaqYUaoRlhDMINjB5RlRGNEpqbTlsbw"&gt;&lt;param name="WMode" value="Window"&gt;&lt;param name="Play" value="-1"&gt;&lt;param name="Loop" value="-1"&gt;&lt;param name="Quality" value="High"&gt;&lt;param name="SAlign" value="LT"&gt;&lt;param name="Menu" value="-1"&gt;&lt;param name="Base" value=""&gt;&lt;param name="AllowScriptAccess" value="always"&gt;&lt;param name="Scale" value="NoScale"&gt;&lt;param name="DeviceFont" value="0"&gt;&lt;param name="EmbedMovie" value="0"&gt;&lt;param name="BGColor" value=""&gt;&lt;param name="SWRemote" value=""&gt;&lt;param name="MovieData" value=""&gt;&lt;param name="SeamlessTabbing" value="0"&gt;&lt;param name="Profile" value="0"&gt;&lt;param name="ProfileAddress" value=""&gt;&lt;param name="ProfilePort" value="0"&gt;&lt;param name="AllowNetworking" value="all"&gt;&lt;param name="AllowFullScreen" value="false"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://bubbl.us/sys/view.swf?sid=102890&amp;pw=yaqYUaoRlhDMINjB5RlRGNEpqbTlsbw" flashvars="_sid=102890&amp;_title=dinner&amp;_z=75&amp;_pw=yaqYUaoRlhDMINjB5RlRGNEpqbTlsbw" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="450" height="340" allowscriptaccess="always" seamlesstabbing="false" name="bblviewer"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3898924295149550295?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3898924295149550295/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3898924295149550295' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3898924295149550295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3898924295149550295'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/blog-post_22.html' title='晚餐的心智圖'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3444358453153357619</id><published>2008-04-15T17:52:00.003+08:00</published><updated>2009-03-03T09:56:54.582+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><title type='text'>Photoshop 練習人像+頭髪</title><content type='html'>這張花了三小時左右~大約用了10幾個圖層~&lt;br /&gt;功力還要再加強~QQ&lt;br /&gt;想買個繪圖板~ 哈&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_80QNBcr7cME/SAR7cIW_0wI/AAAAAAAAAW4/2NusKtW8lIw/s1600-h/ç·´ç¿äººåæ·è².jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189408393848148738" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_80QNBcr7cME/SAR7cIW_0wI/AAAAAAAAAW4/2NusKtW8lIw/s320/%E7%B7%B4%E7%BF%92%E4%BA%BA%E5%83%8F%E6%8B%B7%E8%B2%9D.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3444358453153357619?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3444358453153357619/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3444358453153357619' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3444358453153357619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3444358453153357619'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/photoshop.html' title='Photoshop 練習人像+頭髪'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_80QNBcr7cME/SAR7cIW_0wI/AAAAAAAAAW4/2NusKtW8lIw/s72-c/%E7%B7%B4%E7%BF%92%E4%BA%BA%E5%83%8F%E6%8B%B7%E8%B2%9D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6673298020606378286</id><published>2008-04-15T00:56:00.001+08:00</published><updated>2009-03-03T09:56:54.583+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><title type='text'>名片設計</title><content type='html'>&lt;table style="WIDTH: 194px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="BACKGROUND: url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat left 50%; HEIGHT: 194px" align="middle"&gt;&lt;a href="http://picasaweb.google.com/fellong0307/zfJJbB"&gt;&lt;img style="MARGIN: 1px 0px 0px 4px" height="160" src="http://lh4.ggpht.com/fellong0307/SAOJyoW_0dE/AAAAAAAAAW0/cHAL8NCS3c0/s160-c/zfJJbB.jpg" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif; TEXT-ALIGN: center"&gt;&lt;a style="FONT-WEIGHT: bold; COLOR: #4d4d4d; TEXT-DECORATION: none" href="http://picasaweb.google.com/fellong0307/zfJJbB"&gt;名片設計&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6673298020606378286?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6673298020606378286/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6673298020606378286' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6673298020606378286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6673298020606378286'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/blog-post.html' title='名片設計'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/fellong0307/SAOJyoW_0dE/AAAAAAAAAW0/cHAL8NCS3c0/s72-c/zfJJbB.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5088684024863831618</id><published>2008-04-14T23:18:00.002+08:00</published><updated>2008-05-20T17:11:16.247+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='多媒體'/><category scheme='http://www.blogger.com/atom/ns#' term='3DSMAX'/><title type='text'>3DS MAX 學習</title><content type='html'>&lt;table style="WIDTH: 194px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="BACKGROUND: url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat left 50%; HEIGHT: 194px" align="middle"&gt;&lt;a href="http://picasaweb.google.com/fellong0307/dubrPC"&gt;&lt;img style="MARGIN: 1px 0px 0px 4px" height="160" src="http://lh5.ggpht.com/fellong0307/R9ofbA9vT1E/AAAAAAAAASI/iMvkwPEJh3E/s160-c/dubrPC.jpg" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif; TEXT-ALIGN: center"&gt;&lt;a style="FONT-WEIGHT: bold; COLOR: #4d4d4d; TEXT-DECORATION: none" href="http://picasaweb.google.com/fellong0307/dubrPC"&gt;湯公館&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5088684024863831618?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5088684024863831618/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5088684024863831618' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5088684024863831618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5088684024863831618'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2008/04/3ds-max.html' title='3DS MAX 學習'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/fellong0307/R9ofbA9vT1E/AAAAAAAAASI/iMvkwPEJh3E/s72-c/dubrPC.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-5426422411536730076</id><published>2007-09-09T23:16:00.001+08:00</published><updated>2008-05-20T17:10:29.819+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='韌體設計'/><title type='text'>74164串接線路</title><content type='html'>74164是很好用的元件，可以拿來擴充I/O，還能串接起來使用，非常方便&lt;br /&gt;程式碼實現也非常容易。(但需注意評估 bit shift 造成周邊硬體元件的影響)&lt;br /&gt;底下是基本的串接線路圖。&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_80QNBcr7cME/RuQOcxHdmlI/AAAAAAAAAMY/rY7P_c8-vcE/s1600-h/74164ä¸²æ¥.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108223764728748626" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_80QNBcr7cME/RuQOcxHdmlI/AAAAAAAAAMY/rY7P_c8-vcE/s320/74164%E4%B8%B2%E6%8E%A5.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-5426422411536730076?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/5426422411536730076/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=5426422411536730076' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5426422411536730076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/5426422411536730076'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/09/74164.html' title='74164串接線路'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_80QNBcr7cME/RuQOcxHdmlI/AAAAAAAAAMY/rY7P_c8-vcE/s72-c/74164%E4%B8%B2%E6%8E%A5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1128068549550281263</id><published>2007-08-08T13:09:00.001+08:00</published><updated>2008-05-14T20:11:17.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>多核的幾個方便用途</title><content type='html'>FPPA 八核常常只用到4-5個就很夠了，下的 CPU 可以拿來作別的用途~蠻方便的…&lt;br /&gt;一、當成硬體訊號輸入模擬&lt;br /&gt;　例如～模擬回授信號，一個純的無雜訊信號，方便驗證其它核心程式的正確性。&lt;br /&gt;二、當成系統監測 CPU&lt;br /&gt;　隨時監看系統狀況，必要時透過 RS232 即時傳回系統狀態。&lt;br /&gt;三、拿來校正系統時脈&lt;br /&gt;四、拿來唱歌&lt;br /&gt;…有想到再補充&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1128068549550281263?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1128068549550281263/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1128068549550281263' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1128068549550281263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1128068549550281263'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/08/blog-post.html' title='多核的幾個方便用途'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3076044209602373783</id><published>2007-08-02T22:53:00.001+08:00</published><updated>2008-05-14T20:11:00.323+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>Melody 音調</title><content type='html'>昨天我在已經跑了 6 個核的 FPPA 上多加了可以反應按鍵並發聲的程式~&lt;br /&gt;只用了不到一分鐘，結果非常滿意，不止聲音好、即時、還能在背景執行(形容成這樣蠻貼切的)~&lt;br /&gt;&lt;br /&gt;底下各音階個音符的頻率：&lt;br /&gt;音階 Do Re Mi Fa So La Si&lt;br /&gt;低音 頻率&lt;br /&gt;(Hz) 131 147 165 175 196 220 247&lt;br /&gt;中音 頻率&lt;br /&gt;(Hz) 262 294 330 349 392 440 494&lt;br /&gt;高音 頻率&lt;br /&gt;(Hz) 522 587 659 700 784 880 988&lt;br /&gt;&lt;br /&gt;讓MCU發聲，這讓我想到了之前寫 PIC 程式的一些心得…&lt;br /&gt;以前寫慣了 Windows 程式，總是習慣於用事件的處理方式來寫作，當某個條件觸發時才會去作處理。&lt;br /&gt;有點類似 MCU 的 interrupt 處理方式~中斷來了或 timer 到了才去作特定的事。&lt;br /&gt;事實上這樣子寫作也確實比較條理分明，有的負責處理狀態的變化、有的負責處理該作的事、有的負責時序的變化，CPU在不同的狀態之間飛舞，一切都在你的預料之中…&lt;br /&gt;初寫 PIC 也是用這樣子的方式來寫程式~寫起來很快~難只難在一些時序的計算光用腦袋想像是不夠的~(這時有個示波器什麼都能迎刃而解)~再怎麼寫跑起來也是八九不離十，比起複雜的AP程式，某些地方來講 MCU 的程式確實是非常簡單~(呵~當然是在不考慮硬體的情況下)&lt;br /&gt;但是這樣子的情況在卻被一個簡單的嗶嗶聲給崩解~&lt;br /&gt;問題關鍵點是:&lt;br /&gt;1.我需要定時用掃描的方式去作輸出(例如掃LED DISPLAY數字出來)&lt;br /&gt;2.我還要在有按鍵按住時持續發出嗶~~~的音調&lt;br /&gt;在PIC，我用TIMER中斷來製造1，我用POOLING的方式來偵測按鈕的動作，同時在按住時，持續發聲。&lt;br /&gt;程式看起來沒問題~跑起來卻完全不是想像那樣美妙= ="&lt;br /&gt;發出來的聲音是破破的~聽的出來有斷斷續續~LED也看的到閃閃動人= =&lt;br /&gt;搞了 N 種方法~努力嚐式去均擔、固定住兩邊的時序~而過程跟結果卻都是非常惱人~"~&lt;br /&gt;顧了這邊掉了那邊~時序怎麼橋就是橋不順~&lt;br /&gt;最後是妥協了~為了發出正常的聲音，在按鍵時只得將LED先關掉~(結果證明聲音比較重要，搞不好還沒人意識到LED燈不見了)&lt;br /&gt;回想起來~也算是一場惡夢了= =" (還不是自己功力太差才這樣 = =" )&lt;br /&gt;&lt;br /&gt;現在覺得~有多核可以用還真是幸福~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3076044209602373783?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3076044209602373783/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3076044209602373783' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3076044209602373783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3076044209602373783'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/08/melody.html' title='Melody 音調'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-1647675070973198154</id><published>2007-07-26T23:40:00.000+08:00</published><updated>2007-07-28T23:53:56.485+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 多執行緒?</title><content type='html'>這兩天看到這篇文章 &lt;a href="http://godspeedlee.myweb.hinet.net/coroutine.html"&gt;Coroutine in FPPA&lt;/a&gt;，寫有關於用同一顆 CPU 來跑不同 TASK 的問題。&lt;br /&gt;突然也靈機一動，想來試試這樣子的機制可以用在哪邊~&lt;br /&gt;&lt;br /&gt;答案是~多執行緒~Time Sharing&lt;br /&gt;&lt;br /&gt;把一個CPU當成四個來用，靠TIMER中斷來控制PC頁的切換~&lt;br /&gt;可惜由於中斷只有FPP0能產生，所以只能作用在FPP0~&lt;br /&gt;不過，要切成幾個分時的TASK基本上都沒有問題~嘿~有趣了。&lt;br /&gt;&lt;br /&gt;測試的中間也發現一個有趣的問題，delay 這個指令由於不是一個指令周期就能完成(同時 acc 遞減)，導致有可能delay到一半被 swap out，再回來時 PC 又重回到了delay上(acc又重置)，結果就是 delay 不完。&lt;br /&gt;解決的方法目前想到的就是暫時把中斷關掉嘍。(安全起見)&lt;br /&gt;&lt;br /&gt;另一個問題，萬一 time slice 小於一個指令周期的話，會造成類似上面的情形，指令尚未完成，PC還沒來的及往後加，就被 swap out，再回來又回到了原點，結果就是一個指令永遠也跑不完。&lt;br /&gt;&lt;br /&gt;這樣子的狀況代表的意義很值得深入去探討，也就是關係到 fppa 核心硬體設計上的特性~&lt;br /&gt;於是會不會有一種可能，太快的 timer interrupt 或 time slice 的大小~造成「不正常的」swap out?&lt;br /&gt;&lt;br /&gt;解決的方式可能還有待進行各種不同的試驗才會知道，應當是可以調整到切出固定的 time slice 出來(正確來講是分配到同樣多的指令周期)，當然如果你的要求不是很嚴苛的話，那只要確保能往下跑也就ok了。&lt;br /&gt;&lt;br /&gt;另外一種解決方式，就是用 internal interrupt 的方式來由各 task 控制把自己的執行權讓出來，這也是可行，不過好像就少了那種味道了。&lt;br /&gt;&lt;br /&gt;至於是不是還有其它更多問題? 我想要實際拿來用才知道了。&lt;br /&gt;&lt;br /&gt;不過話說回來，也蠻懷疑這樣大費周張的效益倒底有多大，因為畢竟八核己經很夠用了，而且除非要寫的程式要控制的事項非常的煩多，才會突顯出它的便利性吧?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// ======== START RAM Define ========&lt;br /&gt;.ramadr 0x00&lt;br /&gt;word nousePC;&lt;br /&gt;word task0PC;&lt;br /&gt;word task1PC;&lt;br /&gt;word task2PC;&lt;br /&gt;word task3PC;&lt;br /&gt;word t16index;&lt;br /&gt;int  taskno;&lt;br /&gt;// ======== END RAM Define ========&lt;br /&gt;&lt;br /&gt;// ======== START FPPA ========&lt;br /&gt;.romadr 0x0000 &lt;br /&gt; goto fpp0Boot;&lt;br /&gt; goto fpp1Boot;&lt;br /&gt; goto fpp2Boot;&lt;br /&gt; goto fpp3Boot;&lt;br /&gt; goto fpp4Boot;&lt;br /&gt; goto fpp5Boot;&lt;br /&gt; goto fpp6Boot;&lt;br /&gt; goto fpp7Boot;&lt;br /&gt;// ======== END FPPA ========&lt;br /&gt;&lt;br /&gt;// ======== START Interrpt Service Routine ========&lt;br /&gt;.romadr 0x0010 &lt;br /&gt; mov a, 0xFF; /// 第一次產生中斷，stack裡的pc是無用的&lt;br /&gt; ceqsn taskno, a;&lt;br /&gt; goto switch01;&lt;br /&gt; popw nousePC;&lt;br /&gt; pushw task0PC; /// 準備切到task0 pc&lt;br /&gt; goto switchOk;&lt;br /&gt;switch01:&lt;br /&gt; mov a, 0;&lt;br /&gt; ceqsn taskno, a;&lt;br /&gt; goto switch12;&lt;br /&gt; popw task0PC; /// 保存好task0 PC&lt;br /&gt; pushw task1PC; /// 準備切到task1&lt;br /&gt; goto switchOk;&lt;br /&gt;switch12:&lt;br /&gt; mov a, 1;&lt;br /&gt; ceqsn taskno, a;&lt;br /&gt; goto switch23;&lt;br /&gt; popw task1PC; /// 保存好task1 PC&lt;br /&gt; pushw task2PC; /// 準備切到task2&lt;br /&gt; goto switchOk;&lt;br /&gt;switch23:&lt;br /&gt; mov a, 2;&lt;br /&gt; ceqsn taskno, a;&lt;br /&gt; goto switch30;&lt;br /&gt; popw task2PC; /// 保存好task2 PC&lt;br /&gt; pushw task3PC; /// 準備切到task3&lt;br /&gt; goto switchOk;&lt;br /&gt;switch30:&lt;br /&gt; mov a, 3;&lt;br /&gt; ceqsn taskno, a;&lt;br /&gt; goto switchOk;&lt;br /&gt; popw task3PC; /// 保存好task3 PC&lt;br /&gt; pushw task0PC; // /準備切到task0&lt;br /&gt;switchOk:&lt;br /&gt; inc taskno;  /// 記錄目前task編號-遞增循環&lt;br /&gt; mov a, 0b00000011;&lt;br /&gt; and taskno, a;&lt;br /&gt; stt16 t16index ; /// 重置 Time Slice&lt;br /&gt; set0 intrq.2;&lt;br /&gt; reti;&lt;br /&gt;// ======== END Interrpt Service Routine ========&lt;br /&gt;fpp0boot:&lt;br /&gt;// -------- START FPPA Boot Setting --------&lt;br /&gt;///...略&lt;br /&gt;// -------- END FPPA Boot Setting --------&lt;br /&gt;// -------- START Interrupt initial setup --------&lt;br /&gt; mov a, 0x00;&lt;br /&gt; mov intrq, a; /// clear interrpt reqest register&lt;br /&gt; mov a, 0b00000100;&lt;br /&gt; mov inten, a; /// enable Timer16 interrupt&lt;br /&gt;// -------- END Interrupt initial setup --------&lt;br /&gt; &lt;br /&gt;// -------- START Timer16 initial setup --------&lt;br /&gt; mov a, 0x00;   /// timer 16 is up-count&lt;br /&gt; mov lb@t16index, a ;  ///Time Slice&lt;br /&gt; mov a, 0x00;&lt;br /&gt; mov hb@t16index, a ;&lt;br /&gt; &lt;br /&gt; mov a, 0b10010000 ;&lt;br /&gt; mov t16m, a ;   /// Set OSC/Prescale&lt;br /&gt;// -------- END Timer16 initial setup --------&lt;br /&gt;&lt;br /&gt;// -------- START variables initialize --------&lt;br /&gt; mov a, la@Task0;&lt;br /&gt; mov lb@task0PC, a;&lt;br /&gt; mov a, ha@Task0;&lt;br /&gt; mov hb@task0PC, a;&lt;br /&gt;      &lt;br /&gt; mov a, la@Task1;&lt;br /&gt; mov lb@task1PC, a;&lt;br /&gt; mov a, ha@Task1;&lt;br /&gt; mov hb@task1PC, a;&lt;br /&gt;      &lt;br /&gt; mov a, la@Task2;&lt;br /&gt; mov lb@task2PC, a;&lt;br /&gt; mov a, ha@Task2;&lt;br /&gt; mov hb@task2PC, a;&lt;br /&gt;      &lt;br /&gt; mov a, la@Task3;&lt;br /&gt; mov lb@task3PC, a;&lt;br /&gt; mov a, ha@Task3;&lt;br /&gt; mov hb@task3PC, a;&lt;br /&gt;      &lt;br /&gt; mov a, 0xFF;&lt;br /&gt; mov taskno, a;&lt;br /&gt;// -------- END variables initialize --------&lt;br /&gt;&lt;br /&gt; /// Enable ALL FPP !!&lt;br /&gt; mov a, 0b11111111;&lt;br /&gt; mov fppen, a ; &lt;br /&gt;&lt;br /&gt; /// Stack Pointer Setting for fpp0&lt;br /&gt; mov a, 0x60;&lt;br /&gt; mov sp, a;&lt;br /&gt;&lt;br /&gt; stt16 t16index ; &lt;br /&gt; engint;&lt;br /&gt; goto $;   /// Idle... waitting first interrupt&lt;br /&gt;Task0:&lt;br /&gt; tog LED0;&lt;br /&gt; goto Task0;&lt;br /&gt;Task1:&lt;br /&gt; tog LED1;&lt;br /&gt; goto Task1;&lt;br /&gt;Task2:&lt;br /&gt; tog LED2;&lt;br /&gt; goto Task2;&lt;br /&gt;Task3:&lt;br /&gt; tog LED3;&lt;br /&gt; goto Task3;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-1647675070973198154?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/1647675070973198154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=1647675070973198154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1647675070973198154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/1647675070973198154'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_26.html' title='FPPA 多執行緒?'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3869177880793557219</id><published>2007-07-26T10:00:00.000+08:00</published><updated>2007-07-26T10:04:26.761+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>不同速度各 CPU 同步的問題</title><content type='html'>在不同時脈下工作的 CPU，例如在 pmode=0 的模式 fpp0(/2) fpp1(/8）&lt;br /&gt;假設 fpp0 的 1T=1us、那麼 fpp1 的 1T=4us…&lt;br /&gt;&lt;br /&gt;程式碼A:&lt;br /&gt;fpp0:&lt;br /&gt;    delay        unknown_cycles&lt;br /&gt;    set0        signal&lt;br /&gt;    goto       fpp0&lt;br /&gt;fpp1:&lt;br /&gt;    wait0    signal&lt;br /&gt;    set1        signal&lt;br /&gt;    goto fpp1&lt;br /&gt;&lt;br /&gt;問題:fpp1 在 wait 的時候是每 4us 去檢查一次 signal 或者是每 1us 就會檢查一次(或更即時?) 並且往下跑 ? (這影響到 fpp1 頻率固定的問題)&lt;br /&gt;&lt;br /&gt;實際測試結果==&gt;&lt;br /&gt;&lt;br /&gt;使用 ICE 單步追蹤的結果是 wiat 指令是按當時 CPU 的指令周期來算的，fppa1每 4us 才會檢查一次signal ~(真正的晶片應該也是?)&lt;br /&gt;&lt;br /&gt;於是底下程式碼就有可能變成 fpp1 always waitting。(因為每次去檢查都不巧被設為1)&lt;br /&gt;&lt;br /&gt;程式碼B:&lt;br /&gt;fpp0Loop:&lt;br /&gt;    set0 signal;&lt;br /&gt;    set0 signal;&lt;br /&gt;    set1 signal;&lt;br /&gt;    goto fpp0Loop;&lt;br /&gt;&lt;br /&gt;fpp1Loop:&lt;br /&gt;    wait0 signal;&lt;br /&gt;    // do something&lt;br /&gt;    goto fpp1Loop;&lt;br /&gt;&lt;br /&gt;再回頭看原來的程式碼A…&lt;br /&gt;程式碼A的 fpp1 有可能在檢查 signal 之前剛好 signal 被設為 0&lt;br /&gt;也可能在檢查 signal 之後的 3us 之內 signal 才被設為 0，於是有了誤差。&lt;br /&gt;&lt;br /&gt;相反的，若是快的 cpu 等慢的 cpu 也會有搶到拍子的情況發生。&lt;br /&gt;&lt;br /&gt;結論==&gt;&lt;br /&gt;　這應該是屬於 fppa 硬體上的特性，程式設計師自己要小心留意到的一個問題。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3869177880793557219?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3869177880793557219/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3869177880793557219' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3869177880793557219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3869177880793557219'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/cpu.html' title='不同速度各 CPU 同步的問題'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2083288192172135545</id><published>2007-07-22T16:07:00.000+08:00</published><updated>2007-07-22T16:10:07.349+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>簡單的按鈕防彈跳程式碼</title><content type='html'>&lt;pre&gt; wait1 BTN0;&lt;br /&gt; call Delay;&lt;br /&gt; t1sn BTN0;&lt;br /&gt; goto $-3;&lt;br /&gt; // TODO: button down&lt;br /&gt; wait0 BTN0;&lt;br /&gt; call Delay;&lt;br /&gt; t0sn BTN0;&lt;br /&gt; goto $-3;&lt;br /&gt; // TODO: button release&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2083288192172135545?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2083288192172135545/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2083288192172135545' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2083288192172135545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2083288192172135545'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/blog-post_22.html' title='簡單的按鈕防彈跳程式碼'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-8070981900446882136</id><published>2007-07-21T12:10:00.000+08:00</published><updated>2008-05-14T20:14:50.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 副程式區城變數的問題(結語)</title><content type='html'>&lt;p&gt;這樣子的結果，感覺還不錯&lt;/p&gt;&lt;p&gt;雖然還不確定在實際應用面能起多大作用&lt;/p&gt;&lt;p&gt;但是，至少在多了一種控制多 cpu 的方式&lt;/p&gt;&lt;p&gt;可以預見，在一些場合，會須要有類似這樣子的(先後)機制&lt;/p&gt;&lt;p&gt;譬如，一個專司 LCM 模組的 cpu，就不能隨機的接受輸出，不然輸出會不成樣…&lt;/p&gt;&lt;p&gt;當然，這些是必須要花一些 cpu 成本的，(大約7-8個指令周期)&lt;/p&gt;&lt;p&gt;而且，可能會有不確定性~(的等待時間)&lt;/p&gt;&lt;p&gt;再者，這也只是自己試的一個方法，還沒有完整的驗證過(包括硬體層面)&lt;/p&gt;&lt;p&gt;說不一定在怎樣的情況下會造成打死結的情況~!?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-8070981900446882136?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/8070981900446882136/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=8070981900446882136' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8070981900446882136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/8070981900446882136'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_7592.html' title='FPPA 副程式區城變數的問題(結語)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-6956959964764189123</id><published>2007-07-20T00:11:00.001+08:00</published><updated>2008-05-14T20:14:50.577+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 副程式區城變數的問題(正解…?)</title><content type='html'>延續上一次的架構…&lt;br /&gt;多加了一個鎖，來讓等待中的cpu同步進入要求 share 變數的階段…&lt;br /&gt;&lt;br /&gt;現在手邊 ICE 正在跑 8 個 CPU 同步在執行同一段 delay 副程式，執行次數可以說完全一樣。&lt;br /&gt;也試過 8 個 CPU 不同步( 幾乎隨機 )，跑同一段 delay 程式，沒有明顯互相鎖死的情況發生，也確實都有在跑。&lt;br /&gt;再來， 8 個 cpu 不同步，也不同速( mode 0 )，跑同一段 delay 程式，沒有明顯互相鎖死的情況發生，也確實都有在跑。&lt;br /&gt;&lt;br /&gt;嘿~看來真的可行~&lt;br /&gt;&lt;span style="color:#009900;"&gt;一個 share 變數( 或一段程式 ) exclusive 執行。&lt;br /&gt;意即~一段程式可以( 安全 )共享執行。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;重點在這兩行&lt;br /&gt;   inc share_token;&lt;br /&gt;   dzsn share_token;&lt;br /&gt;8核同時執行，但是share_token狀態唯一的特性使得只有一個核心得到0的結果。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;WaitToken macro // min cost 8 i-cycle&lt;br /&gt;   wait0 wait_look;&lt;br /&gt;   inc share_token;&lt;br /&gt;   dzsn share_token;&lt;br /&gt;   goto $-3;&lt;br /&gt;   inc share_token;&lt;br /&gt;   set1 wait_look;&lt;br /&gt;   endm&lt;br /&gt;&lt;br /&gt;FreeToken macro&lt;br /&gt;   dec share_token;&lt;br /&gt;   set0 wait_look;&lt;br /&gt;   endm&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-6956959964764189123?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/6956959964764189123/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=6956959964764189123' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6956959964764189123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/6956959964764189123'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_20.html' title='FPPA 副程式區城變數的問題(正解…?)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-2365285211572642252</id><published>2007-07-19T21:10:00.000+08:00</published><updated>2008-05-14T20:14:50.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 副程式區城變數的問題(意想不到的問題)</title><content type='html'>// 取得 share 變數使用權:&lt;br /&gt;inc share_token; // 要求取得 share 變數使用權&lt;br /&gt;dzsn share_token; // 由於保證 ram 內容一次只有一個 fppa 能動~所以能保證只有一個 fppa 能過這關&lt;br /&gt;goto $-2; // 其它 fppa 進入等待的循環&lt;br /&gt;inc share_token; // fppa 取得 share 變數使用權&lt;br /&gt;&lt;br /&gt;// 釋放 share 變數使用權 :&lt;br /&gt;dec share_token; // fppa 釋放 share 變數使用權&lt;br /&gt;&lt;br /&gt;當cpu都同步同速時~幾乎沒有問題~&lt;br /&gt;反之，各cpu就有可能在1-2間打結，造成 share_token 永不為零的狀況，死當。&lt;br /&gt;&lt;br /&gt;這個問題很有可能不被發現~要看你這段程式的使用頻率狀況而定~在隨機的情況下，發生的機率應該很大。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-2365285211572642252?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/2365285211572642252/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=2365285211572642252' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2365285211572642252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/2365285211572642252'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_19.html' title='FPPA 副程式區城變數的問題(意想不到的問題)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-3631545552728387469</id><published>2007-07-17T22:51:00.000+08:00</published><updated>2008-05-14T20:14:50.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 副程式區城變數的問題(解法)</title><content type='html'>這個方法~看起來好像很不錯~嘿&lt;br /&gt;簡單好用，稍加修改還可以用 share 作雙迴圈&lt;br /&gt;但是萬萬沒想到有個嚴重的缺點~是什麼?&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;.ramadr 0x00&lt;br /&gt;word share;&lt;br /&gt;int  share_token;&lt;br /&gt;&lt;br /&gt;WaitToken macro&lt;br /&gt; inc share_token;&lt;br /&gt; dzsn share_token;&lt;br /&gt; goto $-2;&lt;br /&gt; inc share_token;&lt;br /&gt;  endm&lt;br /&gt;   &lt;br /&gt;FreeToken macro&lt;br /&gt; dec share_token;&lt;br /&gt;  endm&lt;br /&gt;&lt;br /&gt;Delay:&lt;br /&gt; WaitToken; &lt;br /&gt; mov a, 50;&lt;br /&gt; mov lb@share, a;&lt;br /&gt;DelayLoop:&lt;br /&gt; pushw share;&lt;br /&gt; FreeToken;&lt;br /&gt; &lt;br /&gt; delay 200; // do some thing here&lt;br /&gt;&lt;br /&gt; WaitToken; &lt;br /&gt; popw share;&lt;br /&gt; dzsn lb@share;&lt;br /&gt; goto DelayLoop;&lt;br /&gt; &lt;br /&gt; FreeToken;&lt;br /&gt;&lt;br /&gt; ret;&lt;br /&gt;&lt;br /&gt;&lt;/PRE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-3631545552728387469?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/3631545552728387469/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=3631545552728387469' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3631545552728387469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/3631545552728387469'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_17.html' title='FPPA 副程式區城變數的問題(解法)'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6882176456751413730.post-4832224961658979706</id><published>2007-07-15T00:30:00.000+08:00</published><updated>2008-05-14T20:14:50.579+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPPA'/><title type='text'>FPPA 副程式區城變數的問題</title><content type='html'>FPPA 由於各 CPU 沒有各自獨立的 RAM SPACE，8-CPU RAM 都是共用的，所以在呼叫副程式時有可能會造成變數干擾的情況發生，例如一個DELAY的副程式…&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Delay:&lt;br /&gt; mov a, 50;&lt;br /&gt; mov  count, a;&lt;br /&gt;DelayLoop:&lt;br /&gt; delay 200;&lt;br /&gt; dzsn count;&lt;br /&gt; goto DelayLoop;&lt;br /&gt; ret;&lt;/pre&gt;&lt;pre&gt;外迴圈要用到一個變數 count，如果多 cpu 同時來呼叫這個副程式，那必定會大亂。&lt;br /&gt;當然，同樣的狀況也可能發生在主程式，我想這也是多核心程式撰上要很小心的一個問題。(最好 complier 有辦法預先檢驗出來? )&lt;/pre&gt;&lt;pre&gt;何解?&lt;/pre&gt;&lt;pre&gt;首先想到的是要規畫一段記憶體給這個副程式用，而且當不同的 CPU 進來的時候，副程式要能「知道」&lt;br /&gt;最先想到的是 stack space，因為每個 cpu sp 不一樣，所以可以拿來利用。&lt;/pre&gt;&lt;pre&gt;問題是 FPPA 沒有類似 idzsn [index] 的指令，不可以直接操作 sp 指到的記憶體內容。&lt;br /&gt;pushw [sp]?&lt;br /&gt;POPW [SP]?&lt;br /&gt;idzsn [index]?&lt;br /&gt;&lt;br /&gt;或者如果能在硬體上多一個可以拿來作 ram index 的 暫存器 問題就都解決了。&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;於是要多一個變數來暫存，問題又回到原點嘍~同變數名一定會被不同 cpu 干擾(或說 thread 比較恰當)&lt;/pre&gt;&lt;pre&gt;再想想?&lt;/pre&gt;&lt;pre&gt;嗯~沒錯，要 lock，用 lock、unlock 的概念來控制這個變數的存取試試…&lt;/pre&gt;&lt;pre&gt;wait0 SIGNAL; // or any other signal.&lt;br /&gt;set1 SIGNAL;  // lock signal&lt;br /&gt;…使用變數…&lt;br /&gt;&lt;br /&gt;set0 SIGNAL; // unlock signal&lt;/pre&gt;&lt;pre&gt;結果，失敗，8-CPU同時等在 wait0 SIGNAL 時，又會同時跑到 set1 SIGNAL。&lt;br /&gt;所以除非 CPU 有錯開，否則一樣會錯亂。&lt;br /&gt;但程式在隨機呼叫的情況下又不可能保證不會同時呼叫到。&lt;/pre&gt;&lt;pre&gt;還有什麼好方法?&lt;/pre&gt;&lt;pre&gt;下回分解…&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6882176456751413730-4832224961658979706?l=fellong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fellong.blogspot.com/feeds/4832224961658979706/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6882176456751413730&amp;postID=4832224961658979706' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4832224961658979706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6882176456751413730/posts/default/4832224961658979706'/><link rel='alternate' type='text/html' href='http://fellong.blogspot.com/2007/07/fppa_15.html' title='FPPA 副程式區城變數的問題'/><author><name>Longfellow's Blog</name><uri>http://www.blogger.com/profile/15564330200004806478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
