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

<channel>
	<title>貳夢の弦 &#187; JavaScript</title>
	<atom:link href="http://blog.frost.tw/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.frost.tw</link>
	<description>夢醒之時，驚覺一切都是虛幻。前行吧！迷途者。</description>
	<lastBuildDate>Wed, 26 Oct 2011 13:28:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://blog.frost.tw/?pushpress=hub'/>
		<item>
		<title>邪門Google運用 &#8211; JavaScript 留言板</title>
		<link>http://blog.frost.tw/code/poston-2011-05-29/postid-1199</link>
		<comments>http://blog.frost.tw/code/poston-2011-05-29/postid-1199#comments</comments>
		<pubDate>Sun, 29 May 2011 11:16:06 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程式]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=1199</guid>
		<description><![CDATA[各位還記得之前分享的 Dropbox 應用 DropPages 嗎？ 之前網友說他一週就不能用，我就無視很久，不過今天檢查卻發現是可以免費使用的喔！ 不過，不能放PHP等程式上去一直是弦也頭痛的問題。 但今天弦也看到了一篇用 jQuery + YQL (Yahoo Query Language) + Google Spreadsheet 的應用教學，得到萌發啟發了？ 先看一下我們邪門的參考資料： http://tutorialzine.com/2010/08/dynamic-faq-jquery-yql-google-docs/ &#8211; YQL + Google Docs via jQuery 製作動態 FAQ （亂翻譯） http://p2pu.org/webcraft/node/27443/document/27520 &#8211; 就算是Google Spreadsheet 的 Form 我也有辦法讓他卡到陰（根本不是這麼一回事！） 光靠以上兩篇，我們就可以做出邪門的 純JavaScript 留言板摟！ &#8230; <a href="http://blog.frost.tw/code/poston-2011-05-29/postid-1199">Continue reading <span class="meta-nav">&#8594;</span></a><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜歡：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.frost.tw%2Flife%2Fposton-2010-02-18%2Fpostid-399&from=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2011-05-29%2Fpostid-1199">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Push4Free – JavaScript 方法(初次嘗試)</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2010-11-08%2Fpostid-820&from=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2011-05-29%2Fpostid-1199">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">才…才不會讓你看全部呢！</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2010-02-19%2Fpostid-402&from=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2011-05-29%2Fpostid-1199">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Push4Free – 簡易聊天室實作</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fblog.frost.tw%2Flife%2Fposton-2010-06-26%2Fpostid-560&from=http%3A%2F%2Fblog.frost.tw%2Fcode%2Fposton-2011-05-29%2Fpostid-1199">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">拿到Google Voice 後的遺憾</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>各位還記得之前分享的 Dropbox 應用 DropPages 嗎？<br />
之前網友說他一週就不能用，我就無視很久，不過今天檢查卻發現是可以免費使用的喔！</p>
<p>不過，不能放PHP等程式上去一直是弦也頭痛的問題。<br />
但今天弦也看到了一篇用 jQuery + YQL (Yahoo Query Language) + Google Spreadsheet 的應用教學，得到<span style="color: #000000;"><del>萌發</del></span>啟發了？<br />
<span id="more-1199"></span>先看一下我們邪門的參考資料：<br />
<a href="http://tutorialzine.com/2010/08/dynamic-faq-jquery-yql-google-docs/" target="_blank">http://tutorialzine.com/2010/08/dynamic-faq-jquery-yql-google-docs/</a> &#8211; YQL + Google Docs via jQuery 製作動態 FAQ （亂翻譯）<br />
<a href="http://p2pu.org/webcraft/node/27443/document/27520" target="_blank">http://p2pu.org/webcraft/node/27443/document/27520</a> &#8211; 就算是Google Spreadsheet 的 Form 我也有辦法讓他卡到陰（根本不是這麼一回事！）</p>
<p>光靠以上兩篇，我們就可以做出邪門的 純JavaScript 留言板摟！</p>
<p>步驟一：</p>
<p>到你的 Google Docs 新增邪門的表單（和試算表一組的那個！？）<br />
然後設定一下欄位（本範例只有暱稱和留言兩個項目）</p>
<p><a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-50-55.png" rel="lightbox[1199]" title="2011-05-29 18 50 55"><img class="alignnone size-medium wp-image-1200" title="2011-05-29 18 50 55" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-50-55-300x110.png" alt="" width="300" height="110" /></a></p>
<p>步驟二：</p>
<p>取得表單的網址（Google 會給你一段 iframe 的 HTML 語法，用那段找出來～）</p>
<p><a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-51-07.png" rel="lightbox[1199]" title="2011-05-29 18 51 07"><img class="alignnone size-full wp-image-1201" title="2011-05-29 18 51 07" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-51-07.png" alt="" width="166" height="102" /></a></p>
<p><a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-51-33.png" rel="lightbox[1199]" title="2011-05-29 18 51 33"><img class="alignnone size-medium wp-image-1202" title="2011-05-29 18 51 33" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-51-33-300x87.png" alt="" width="300" height="87" /></a><br />
（網址是 src="網址" 的部份）</p>
<p>步驟三：</p>
<p>從表單找出送出的位置，還有各個欄位的 name 是多少。<br />
<a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-52-07.png" rel="lightbox[1199]" title="2011-05-29 18 52 07"><img class="alignnone size-medium wp-image-1203" title="2011-05-29 18 52 07" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-52-07-300x244.png" alt="" width="300" height="244" /></a></p>
<p><a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-52-47.png" rel="lightbox[1199]" title="2011-05-29 18 52 47"><img class="alignnone size-medium wp-image-1204" title="2011-05-29 18 52 47" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-52-47-300x95.png" alt="" width="300" height="95" /></a></p>
<p>如果有 Firebug 或者使用較新版的Chrome/Safari可以點選右鍵&gt;觀察元素，比較好找。<br />
（action="表單送出位置" 還有各欄位的 name 值）</p>
<p>步驟四：</p>
<p>轉換成HTML頁面（美工請自己負責喔～）</p>
<p>引用 jQuery 程式庫，這邊使用 1.4 是因為教學的版本，各位可以自行選用新版。</p>
<p><a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-54-17.png" rel="lightbox[1199]" title="2011-05-29 18 54 17"><img class="alignnone size-medium wp-image-1205" title="2011-05-29 18 54 17" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-54-17-300x9.png" alt="" width="300" height="9" /></a></p>
<p>建構前端介面（表單、留言區塊）<br />
<a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-54-47.png" rel="lightbox[1199]" title="2011-05-29 18 54 47"><img class="alignnone size-medium wp-image-1206" title="2011-05-29 18 54 47" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-54-47-300x63.png" alt="" width="300" height="63" /></a></p>
<p>撰寫 JavaScript 部份（使用YQL輔助）<br />
<a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-55-05.png" rel="lightbox[1199]" title="2011-05-29 18 55 05"><img class="alignnone size-medium wp-image-1207" title="2011-05-29 18 55 05" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-55-05-300x149.png" alt="" width="300" height="149" /></a></p>
<p>上面的 csvURL 是從發布表單的地方取得：<br />
<a href="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-58-32.png" rel="lightbox[1199]" title="2011-05-29 18 58 32"><img class="alignnone size-medium wp-image-1209" title="2011-05-29 18 58 32" src="http://blog.frost.tw/wp-content/uploads/2011/05/2011-05-29-18-58-32-300x159.png" alt="" width="300" height="159" /></a><br />
（選用 csv格式）</p>
<p>接著設定 YQL 的查詢網址。<br />
?q= 之後是查詢語法，這邊使用的是<br />
SELECT * FROM csv WHERE url = &#8216;csvURL(有經過 urlEncode)&#8217; AND column = &#8216;time, nickname, content&#8217;<br />
這樣就代表我用 csv 格式查詢，從我傳入的 URL 位置，並且依序設定欄位名稱為 time, nickname, content</p>
<p>最後用 jQuery 的 Ajax 功能取得 JSON 傳回，並且用 $.each 依序處理傳回值。<br />
（用FireFox可以觀察到物件在 msg.query.result.row 裡面，不過只有一筆資料會發生錯誤就是了……）</p>
<p>註：在 each 的處理函式讓他傳入 key 檢查是否 == 0 來把 Google Spreadsheet 預設的欄位跳過。</p>
<p>最後做偵測處理。<br />
1. 送出表單會跑到 Google 頁面，所以讓 form 指向設定的框架（隱藏）<br />
2. 用 jQuery 偵測 onsubmit 事件，送出後設定 submitted 為 true<br />
3. 此時隱藏的 iframe 會因為送出表單觸發，接著發現 submitted 為 true 於是重新整理頁面。<br />
4. 留言板流程運作完畢</p>
<p>這樣一來就可以留言了，中間有一些部份需要多加思考。<br />
註：使用 YQL 會無法即時，而 jQuery Plugin 的 jSpreadheet 版本過舊，各位可能要自己處理 CSV 格式化。</p>
<p>範例：<a href="http://dl.dropbox.com/u/4023935/Web%20Showcase/evil-Google-Guestbook.html" target="_blank">http://dl.dropbox.com/u/4023935/Web%20Showcase/evil-Google-Guestbook.html</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2011-05-29/postid-1199/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>才…才不會讓你看全部呢！</title>
		<link>http://blog.frost.tw/code/poston-2010-11-08/postid-820</link>
		<comments>http://blog.frost.tw/code/poston-2010-11-08/postid-820#comments</comments>
		<pubDate>Mon, 08 Nov 2010 10:55:48 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[程式]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=820</guid>
		<description><![CDATA[無奸不成商，不會掰不是部落客！ 很好，經過昨天邪惡、強大的實驗，今天也要來唬唬大家（咦 難得學校補假天氣好，好日子不配上好程式怎行呢？ 網友贊助主機當運行平台，不好好開發怎麼行呢？ 所以，今天的 Node.js 寫得特別順！ （以上純屬想像……） 今天的開發有點類似將 Node.js 從一般的聊天室應用，改良成大型聊天室。 要形容的話，就是增加了 Room 的概念。 只要經過 addRoom 方法，指定一個 Room Name 傳入。 那麼，你就可以創建一個聊天室了！ 當然，運行速度有V8保證，絕對不慢。 （說真的用JavaScript運行起來真的「快」阿！） 不過，這個開發果然「瘋狂」 因為這是一整個「物件導向」式的做法。 雖然這家伙根本沒有在認真用物件導向…… 待會看了程式碼，你會怎麼想？ 不過，使用物件確實有點高難度。 而且身為神奇的開發者，竟然在今天才發現加上 new 修飾後，就是個物件…… （果然是基本功沒練好就上場的瘋子……） 廢話不多說，來看看程式碼吧！ 但是，我才…才…才不會讓你看完整哩！ 你們看看，好長一條阿！ 沒錯，兇手就是他！！ 這是將聊天室模組化的成果，充滿了奇蹟（誤 使用方法也很簡單，先是用 Node.js 的 &#8230; <a href="http://blog.frost.tw/code/poston-2010-11-08/postid-820">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>無奸不成商，不會掰不是部落客！<br />
很好，經過昨天邪惡、強大的實驗，今天也要來唬唬大家（咦</p>
<p>難得學校補假天氣好，好日子不配上好程式怎行呢？<br />
網友贊助主機當運行平台，不好好開發怎麼行呢？</p>
<p>所以，今天的 Node.js 寫得特別順！<br />
（以上純屬想像……）<br />
<span id="more-820"></span><br />
今天的開發有點類似將 Node.js 從一般的聊天室應用，改良成大型聊天室。<br />
要形容的話，就是增加了 Room 的概念。<br />
只要經過 addRoom 方法，指定一個 Room Name 傳入。<br />
那麼，你就可以創建一個聊天室了！</p>
<p>當然，運行速度有V8保證，絕對不慢。<br />
（說真的用JavaScript運行起來真的「快」阿！）</p>
<p>不過，這個開發果然「瘋狂」<br />
因為這是一整個「物件導向」式的做法。<br />
雖然這家伙根本沒有在認真用物件導向……<br />
待會看了程式碼，你會怎麼想？</p>
<p>不過，使用物件確實有點高難度。<br />
而且身為神奇的開發者，竟然在今天才發現加上 new 修飾後，就是個物件……<br />
（果然是基本功沒練好就上場的瘋子……）</p>
<p>廢話不多說，來看看程式碼吧！<br />
但是，我才…才…才不會讓你看完整哩！<br />
<a href="http://blog.frost.tw/wp-content/uploads/2010/11/2010-11-08-18-24-38.png" rel="lightbox[820]" title="Node.js - nChat.js"><img class="alignnone size-medium wp-image-821" title="Node.js - nChat.js" src="http://blog.frost.tw/wp-content/uploads/2010/11/2010-11-08-18-24-38-59x300.png" alt="" width="59" height="300" /></a></p>
<p>你們看看，好長一條阿！<br />
沒錯，兇手就是他！！</p>
<p>這是將聊天室模組化的成果，充滿了奇蹟（誤</p>
<p>使用方法也很簡單，先是用 Node.js 的 require 把他引入。</p>
<pre class="brush: js">var chat = require("./chat.js");
chat.addRoom("general");
chat.listen(80);
</pre>
<p>接著，神奇的事情就發生拉！！！<br />
那就是，你打不開網頁……</p>
<p>為什麼？<br />
因為沒有寫 Client 端阿！<br />
現在邪惡的開發者竟然用當年測試Node.js的簡易Client接收訊息。<br />
（到底是怎麼將兩個完全不合的程式組起來，也是很神秘的……當年似乎是幾個月前……）</p>
<p>那麼，你準備好試用了嗎？<br />
當開發者心血來潮之時，你就可以用了！</p>
<p>期待嗎？<br />
請關注「才…才不會讓你看（羞）」系列！<br />
（喔！沒有這東西……）</p>
<p>如果想知道更多，請關注本網誌很糟糕的標題，因為很糟糕，所以看到內容會很失望。<br />
讓你最失望的，一定就是網址。<br />
「所以，請關注下一張圖片！？」<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-11-08/postid-820/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comet 的世界</title>
		<link>http://blog.frost.tw/life/poston-2010-07-09/postid-580</link>
		<comments>http://blog.frost.tw/life/poston-2010-07-09/postid-580#comments</comments>
		<pubDate>Fri, 09 Jul 2010 11:17:23 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[生活雜記]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=580</guid>
		<description><![CDATA[昨晚裝好 Ajax Push Engine  之後，就開始研讀開發文件啦！ 這類 Comet 伺服器似乎都能讓 JavaScrtip 跑在 Server Side&#8230; (因為我不太瞭解 Comet, 所以稱這些叫做 Comet伺服器) 在 Ajax Push Engine 官方網站上，有一個 MMORPG 的 Demos 我看了之後，二話不說，馬上決定選用 Ajax Push Engine 當作我接觸 Comet 的管道。 不過，經過自己實際撰寫之後，才發現這根本不可能阿（誤 為什麼不可能呢？ 1. 官方文件沒說 Server Side 的檔案怎樣用才會動起來 2. 雖然寫好了JavaScript也debug了，但是測試時還是發生錯誤。 &#8230; <a href="http://blog.frost.tw/life/poston-2010-07-09/postid-580">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>昨晚裝好 Ajax Push Engine  之後，就開始研讀開發文件啦！<br />
這類 Comet 伺服器似乎都能讓 JavaScrtip 跑在 Server Side&#8230;<br />
(因為我不太瞭解 Comet, 所以稱這些叫做 Comet伺服器)<br />
<span id="more-580"></span></p>
<p>在 Ajax Push Engine 官方網站上，有一個 MMORPG 的 Demos<br />
我看了之後，二話不說，馬上決定選用 Ajax Push Engine 當作我接觸 Comet 的管道。</p>
<p>不過，經過自己實際撰寫之後，才發現這根本不可能阿（誤<br />
為什麼不可能呢？<br />
1. 官方文件沒說 Server Side 的檔案怎樣用才會動起來<br />
2. 雖然寫好了JavaScript也debug了，但是測試時還是發生錯誤。</p>
<p>也許我該選用 node.js 這款最被推薦的 Comet 伺服器呢！</p>
<p>不過，我想今天就暫時先將就 Ajax Push Engine 吧！<br />
畢竟，有始有終，我這個失敗的作品，多少也得要把他除錯完！</p>
<p>明天再來挑戰 node.js<br />
不過 Comet 讓我如此興奮的原因，不外乎是「可以製作MMORPG」<br />
如果多年前有玩WebGame的朋友，想必會知道一款叫做「創世之光」的遊戲。<br />
可惜現在台服關了，跑去中國開……</p>
<p>我想，我會如此熱衷這個，就是因為那款遊戲！<br />
那麼，我要繼續研究啦！<br />
（每次一開始研究我就停不下來……）<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/life/poston-2010-07-09/postid-580/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discuz 7.2 插件開發筆記 &#8211; 技能系統(1)</title>
		<link>http://blog.frost.tw/web-project/poston-2010-03-22/postid-458</link>
		<comments>http://blog.frost.tw/web-project/poston-2010-03-22/postid-458#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:47:06 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[網站專案]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[網站]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=458</guid>
		<description><![CDATA[最近在開發論壇插件，說真的，這個系統挺有意義的。 一般人會認為這是「娛樂插件」不過，錯了！！ 這是一個「能力指標」的插件喔！ 其實我的技能系統，並非「遊戲娛樂」的使用。 技能，如果在現實世界中，可以說是「會使用的技巧與擁有的能力」 那麼，我的技能系統就是用來「紀錄」的系統。 不過，仰賴 7.2 的強大插件擴充，讓我開發上非常順手。 目前系統共兩個資料檔案：「技能資訊」與「修煉資訊」 會這樣做其實很簡單，因為要避免「隨意的升級」 每項技能想要升級，就得通過「修煉選項」的達成，才可以進行升級。 整體來看，可以說是不錯的系統了！ 下面就簡單分享使用到的「技巧」 不過說真的，有使用到的就只有 Discuz 上的 Ajax 控制屬於高難度。 我使用的是 Ajax 視窗，因此用 showWindow() 的 JavaScript函式呼叫。 &#60;a href="plugin.php?id=dofskill:upskill&#38;skillid=$key" onclick="javascript:showWindow('upskill', this.href);return false;" title="升級技能"&#62;升級技能！&#60;/a&#62; 整體上為模仿 Discuz 的作法，而 showWindow 的參數共四個： 1. id 名稱(方便控制) 2. &#8230; <a href="http://blog.frost.tw/web-project/poston-2010-03-22/postid-458">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近在開發論壇插件，說真的，這個系統挺有意義的。<br />
一般人會認為這是「娛樂插件」不過，錯了！！<br />
這是一個「能力指標」的插件喔！<br />
<span id="more-458"></span><br />
其實我的技能系統，並非「遊戲娛樂」的使用。</p>
<p>技能，如果在現實世界中，可以說是「會使用的技巧與擁有的能力」<br />
那麼，我的技能系統就是用來「紀錄」的系統。</p>
<p>不過，仰賴 7.2 的強大插件擴充，讓我開發上非常順手。</p>
<p>目前系統共兩個資料檔案：「技能資訊」與「修煉資訊」<br />
會這樣做其實很簡單，因為要避免「隨意的升級」</p>
<p>每項技能想要升級，就得通過「修煉選項」的達成，才可以進行升級。<br />
整體來看，可以說是不錯的系統了！</p>
<p>下面就簡單分享使用到的「技巧」<br />
不過說真的，有使用到的就只有 Discuz 上的 Ajax 控制屬於高難度。</p>
<p>我使用的是 Ajax 視窗，因此用 showWindow() 的 JavaScript函式呼叫。</p>
<pre class="brush: html">&lt;a href="plugin.php?id=dofskill:upskill&amp;skillid=$key" onclick="javascript:showWindow('upskill', this.href);return false;" title="升級技能"&gt;升級技能！&lt;/a&gt;</pre>
<p>整體上為模仿 Discuz 的作法，而 showWindow 的參數共四個：<br />
1. id 名稱(方便控制)<br />
2. 目標位子<br />
3. 傳遞資料方式，預設get (post用法我其實不會)<br />
4. 是否緩存預設似乎是開啟的</p>
<p>而目標位子的頁面，就很講究了！<br />
Discuz 設計成「直接讀取正常版模」的設計。</p>
<p>所以設計版模時，要照常加入 {template header} 與 {template footer}<br />
否則，就會看空白畫面！</p>
<p>其餘大多是使用 PHP 達成的控制，其實也沒有什麼特別。</p>
<p>說實在的，其實技能系統只是一個基礎系統，實際上沒有太大的意義。<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/web-project/poston-2010-03-22/postid-458/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Push4Free &#8211; 簡易聊天室實作</title>
		<link>http://blog.frost.tw/code/poston-2010-02-19/postid-402</link>
		<comments>http://blog.frost.tw/code/poston-2010-02-19/postid-402#comments</comments>
		<pubDate>Fri, 19 Feb 2010 10:39:07 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[程式]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=402</guid>
		<description><![CDATA[今天要把昨晚嘗試製作的「聊天室」和大家分享一下。 不過因為Application還未通過審核，所以只好用官方測試帳號。 不過，還是能看出即時變化喔！ 今天要請大家先看一下影片，再繼續閱讀。 一樣，看完之後請別忘記回覆一下喔！ 首先，大家想必都看到一開始出現了一堆英文訊息吧！ 其實那些我還不確定該怎麼去除，除了 ready 是確定的。 不過，重點當然不在此。 當右手邊的視窗切入聊天室之後，左手邊會跳出「有新訪客進入聊天室」等訊息。 其實這是寫在進入的那位訪客的頁面。 原理 &#62; 基本為 Client &#62; Server &#38; Server &#62; Client 而 Client 要 Send Message 給 Server 需要透過 User 的輸入。 但是現在將 API 中定義的 Status == 200 狀態觸發事件，設定 Send &#8230; <a href="http://blog.frost.tw/code/poston-2010-02-19/postid-402">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天要把昨晚嘗試製作的「聊天室」和大家分享一下。<br />
不過因為Application還未通過審核，所以只好用官方測試帳號。<br />
不過，還是能看出即時變化喔！<br />
<span id="more-402"></span></p>
<p>今天要請大家先看一下影片，再繼續閱讀。<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/D_6RLJfAAt8&amp;hl=zh&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/D_6RLJfAAt8&amp;hl=zh&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>一樣，看完之後請別忘記回覆一下喔！</p>
<p>首先，大家想必都看到一開始出現了一堆英文訊息吧！<br />
其實那些我還不確定該怎麼去除，除了 ready 是確定的。</p>
<p>不過，重點當然不在此。<br />
當右手邊的視窗切入聊天室之後，左手邊會跳出「有新訪客進入聊天室」等訊息。</p>
<p>其實這是寫在進入的那位訪客的頁面。<br />
原理 &gt; 基本為 Client &gt; Server &amp; Server &gt; Client<br />
而 Client 要 Send Message 給 Server 需要透過 User 的輸入。<br />
但是現在將 API 中定義的 Status == 200 狀態觸發事件，設定 Send 動作。<br />
發送到 Server 之後，會立即傳給所有 User 此時，效果就達到了！<br />
(但是進入的 User 因為還沒啟動接受功能，所以不會發現訊息出現變化。)</p>
<p>而要做到這種程度的聊天室，到底會花多少時間呢？<br />
不瞞各位，只要一小時。</p>
<p>扣掉美化或者其他動作，只是單純的讓聊天室成型。<br />
完完全全只要花上一小時，也許你的動作更快，可以在幾時分鐘內完成。</p>
<p>整個聊天室無需任何框架，只需要一點點的 JavaScript 就能做到。<br />
「這是 Push4Free 的功能，也是基礎」</p>
<p>雖然我很想利用這種功能做成 Web Game<br />
不過，玩家資料的儲存卻成為了障礙。<br />
現在就只能好好想辦法了！</p>
<p>各位對於 Push4Free 的認識，是否更深入了呢？<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-02-19/postid-402/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push4Free &#8211; JavaScript 方法(初次嘗試)</title>
		<link>http://blog.frost.tw/life/poston-2010-02-18/postid-399</link>
		<comments>http://blog.frost.tw/life/poston-2010-02-18/postid-399#comments</comments>
		<pubDate>Thu, 18 Feb 2010 10:29:35 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[生活雜記]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[程式]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=399</guid>
		<description><![CDATA[今天開始決定用新的方法來「寫網誌」 將採用更多「分享」的方式，並且希望每一位讀者都能「參與」 那麼，開始今天的文章吧！ 今天要分享的是一個名為 Push4Free 的網站。 網址：http://www.push4free.com/ 功能是什麼呢？ 他提供的功能是「免費聊天室伺服器」 不過這樣說，其實也不能完全「正確」 根據我的了解，實際上有 Socket 伺服器的功能。 那麼，如果說我想製作一款 Web Game (如寵物森林這種) 就能夠利用 Push4Free 的免費服務來達成，又因為「免費」 而且不需要將這種消耗資源的程式放在伺服器，對於開發者來說是非常有益的！ 不過礙於各種怪事(？) 所以今天只能把 JavaScript 的 API &#8211; PJAX 下載下來測試。 一照官方的測試設定，確實確定是「同步更新」 以往的聊天室都利用「刷新頁面」來即時顯示訊息。 但是 Push4Free 則是利用 JavaScript 引用 Flash 來做出效果。 在很多方面，可以算是一種「突破」 各位可以在網路上找看看 &#8230; <a href="http://blog.frost.tw/life/poston-2010-02-18/postid-399">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天開始決定用新的方法來「寫網誌」<br />
將採用更多「分享」的方式，並且希望每一位讀者都能「參與」<br />
那麼，開始今天的文章吧！<br />
<span id="more-399"></span><br />
今天要分享的是一個名為 Push4Free 的網站。<br />
網址：<a href="http://www.push4free.com" target="_blank">http://www.push4free.com/</a></p>
<p>功能是什麼呢？<br />
他提供的功能是「免費聊天室伺服器」</p>
<p>不過這樣說，其實也不能完全「正確」<br />
根據我的了解，實際上有 Socket 伺服器的功能。</p>
<p>那麼，如果說我想製作一款 Web Game (如寵物森林這種)<br />
就能夠利用 Push4Free 的免費服務來達成，又因為「免費」<br />
而且不需要將這種消耗資源的程式放在伺服器，對於開發者來說是非常有益的！</p>
<p>不過礙於各種怪事(？)<br />
所以今天只能把 JavaScript 的 API &#8211; PJAX 下載下來測試。<br />
一照官方的測試設定，確實確定是「同步更新」</p>
<p>以往的聊天室都利用「刷新頁面」來即時顯示訊息。<br />
但是 Push4Free 則是利用 JavaScript 引用 Flash 來做出效果。</p>
<p>在很多方面，可以算是一種「突破」<br />
各位可以在網路上找看看 JavaScript &amp; Socket 的相關資料，都有搭配 Flash<br />
不過，因為我使用 Linux 無法製作 Flash 所以只好用 JavaScript 拉！</p>
<p>那麼，就各位請觀看我錄製的測試短片。<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/NQ64Oq7p3eA&amp;hl=zh&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/NQ64Oq7p3eA&amp;hl=zh&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>看完之後，別忘記用留言告訴我心得。<br />
「可別讓我『苦苦等待』大家的心得喔！」<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/life/poston-2010-02-18/postid-399/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SWFUpload 讓上傳可以選個檔案</title>
		<link>http://blog.frost.tw/code/poston-2010-02-08/postid-380</link>
		<comments>http://blog.frost.tw/code/poston-2010-02-08/postid-380#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:46:38 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[網站]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=380</guid>
		<description><![CDATA[昨天在初心者站長論壇看到討論，因為是免費上傳圖片，因此我就有了興趣。 經過討論之後，我詢問提供「服務」者，取得交換條件。 我負責撰寫系統，而我可以取得一個廣告欄位以及放置網站連結的權利。 經過簡易的搜尋後，選定 SWF Upload 這款工具。 使用起來感覺不錯，功能也已經趨於完善。 今天下午則是做了實作，情況也非常不錯。 那麼簡單了解一下 SWF Upload 吧！ 下載 Sample 版本後上傳，就有多種範例可用。 不過都是範例上傳，不會有實際作用。 而我使用的是Speed Demo來做改良。 成品除了能夠儲存資料之外，還可以顯示出連結。 首先，我們要來了解一下結構(核心部份在/而Speed Demo則在/speeddemo資料夾) index.php &#8211; 頁面主體 upload.php &#8211; 負責處理上傳 /js/handlers.js &#8211; 客制化處理 /js/swfupload.queue.js &#8211; 查尋序列的JavaScript /js/swfupload.speed.js &#8211; 統計上傳速度的 JavaScript /images &#8211; &#8230; <a href="http://blog.frost.tw/code/poston-2010-02-08/postid-380">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>昨天在初心者站長論壇看到討論，因為是免費上傳圖片，因此我就有了興趣。<br />
經過討論之後，我詢問提供「服務」者，取得交換條件。<br />
我負責撰寫系統，而我可以取得一個廣告欄位以及放置網站連結的權利。<br />
<span id="more-380"></span><br />
經過簡易的搜尋後，選定 <a href="http://swfupload.org/">SWF Upload</a> 這款工具。<br />
使用起來感覺不錯，功能也已經趨於完善。</p>
<p>今天下午則是做了實作，情況也非常不錯。</p>
<p>那麼簡單了解一下 <a href="http://swfupload.org/">SWF Upload</a> 吧！<br />
下載 Sample 版本後上傳，就有多種範例可用。</p>
<p>不過都是範例上傳，不會有實際作用。</p>
<p>而我使用的是Speed Demo來做改良。<br />
成品除了能夠儲存資料之外，還可以顯示出連結。</p>
<p>首先，我們要來了解一下結構(核心部份在/而Speed Demo則在/speeddemo資料夾)<br />
index.php &#8211; 頁面主體<br />
upload.php &#8211; 負責處理上傳<br />
/js/handlers.js &#8211; 客制化處理<br />
/js/swfupload.queue.js &#8211; 查尋序列的JavaScript<br />
/js/swfupload.speed.js &#8211; 統計上傳速度的 JavaScript<br />
/images &#8211; 上傳按鈕的資料夾</p>
<p>首先調整index.php的表格，我是加在右方的表格：</p>
<pre class="brush:html">&lt;tr&gt;&lt;td&gt;上傳的檔案：&lt;/td&gt;&lt;td id="fileup"&gt;&lt;/td&gt;&lt;/tr&gt;</pre>
<p>還有加入一項客製化訊息(在custom{} 中)：</p>
<pre class="brush:js">
fileup : document.getElementById("fileup");
</pre>
<p>之後編輯 upload.php 加入上傳檔案的功能。</p>
<pre class="brush:php">&lt;?php

 function imgtype($name){
 $arr = explode('.', $name);
 return '.'.$arr[1];        
 }

 // Work-around for setting up a session because Flash Player doesn't send the cookies
 if (isset($_POST["PHPSESSID"])) {
 session_id($_POST["PHPSESSID"]);
 }
 session_start(); 

 // The Demos don't save files 

 if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
 echo "上傳時出現了錯誤 - 無法取得檔名。";
 } 

 $img = $_FILES["Filedata"]["tmp_name"];
 $imgname = substr(md5(time().$_FILES["Filedata"]["name"]),0,16).imgtype($_FILES["Filedata"]["name"]);
 $path = './upload/'.$imgname;
 if(@move_uploaded_file($img, $path))
 echo '&lt;a href="http://'.$_SERVER['HTTP_HOST'].'/swfupload/beta/upload/'.$imgname.'" target="_blank"&gt;'.$_FILES['Filedata']['name'].'&lt;/a&gt;';
 else
 echo '這張圖片上傳發生錯誤 - 無法複製檔案。';
?&gt;</pre>
<p>接著修改 /js/handlers.js 加入更新上傳列表的設定：<br />
修改 fileDialogComplete() 函式初使化上傳檔案列表：</p>
<pre class="brush:js">
function fileDialogComplete() {

	this.startUpload();
	this.customSettings.fileup.innerHTML = "";

}
</pre>
<p>接著修改 uploadSuccess() 函式自動加入新上傳的檔案連結：</p>
<pre class="brush:js">
function uploadSuccess(file, serverData) {

	try {

		updateDisplay.call(this, file);
		this.customSettings.fileup.innerHTML += "" + serverData;

	} catch (ex) {

		this.debug(ex);

	}

}
</pre>
<p>最後，選取多個檔案測試上傳。<br />
就會發現原本不會列出檔案以及上傳檔案的功能，進化了！<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-02-08/postid-380/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

