<?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>Fri, 30 Jul 2010 13:41:48 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <atom:link rel='hub' href='http://blog.frost.tw/?pushpress=hub'/> <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...]]></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 /> （每次一開始研究我就停不下來……）</p><div class="linkwithin_hook" id="http://blog.frost.tw/life/poston-2010-07-09/postid-580"></div>]]></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 控制屬於高難度。 我使用的是...]]></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>說實在的，其實技能系統只是一個基礎系統，實際上沒有太大的意義。</p><div class="linkwithin_hook" id="http://blog.frost.tw/web-project/poston-2010-03-22/postid-458"></div>]]></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...]]></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 的認識，是否更深入了呢？</p><div class="linkwithin_hook" id="http://blog.frost.tw/code/poston-2010-02-19/postid-402"></div>]]></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 的免費服務來達成，又因為「免費」...]]></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 /> 「可別讓我『苦苦等待』大家的心得喔！」</p><div class="linkwithin_hook" id="http://blog.frost.tw/life/poston-2010-02-18/postid-399"></div>]]></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來做改良。 成品除了能夠儲存資料之外，還可以顯示出連結。...]]></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 /> 就會發現原本不會列出檔案以及上傳檔案的功能，進化了！</p><div class="linkwithin_hook" id="http://blog.frost.tw/code/poston-2010-02-08/postid-380"></div>]]></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>