初探HTML5的WebSockets

我是參照這個教程下去學習的

Start Using HTML5 WebSockets Today
http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

 

【Server設定方法】

1. 先下載WebSockets Server端的程式
http://nettuts.s3.amazonaws.com/751_webSocketsStarter/websocket_source_files.zip

2. 下載最新版的xampp
http://www.apachefriends.org/zh_tw/xampp.html
在這邊我下載的是XAMPP Windows 1.8.0的版本,其相關的細項版本如下:
Apache 2.4.2, MySQL 5.5.25a, PHP 5.4.4, OpenSSL 1.0.1c, phpMyAdmin 3.5.2, XAMPP Control Panel 3.0.12, Webalizer 2.23-04, Mercury Mail Transport System v4.62, FileZilla FTP Server 0.9.41, Tomcat 7.0.28 (with mod_proxy_ajp as connector), Strawberry Perl 5.16.0.1 Portable
For Windows 2000, XP, Vista, 7.
不過最主要的還是

3. 執行shell

輸入php -c php\php.ini htdocs\socket\server\startDaemon.php

不過我試了半天 是試不起來的=口=!

會出現錯誤 或是瞬間又關掉socket連線

SERVER端訊息如下

# php -c php\php.ini htdocs\socket\server\startDaemon.php
2012-10-04 08:08:20 System: Socket Resource id #7 created.
2012-10-04 08:08:21 System: Socket bound to localhost:8000.
2012-10-04 08:08:21 System: Start listening on Socket.
2012-10-04 08:08:41 WebSocket: Resource id #8 CONNECTED!
2012-10-04 08:08:41 WebSocket: Resource id #9 CONNECTED!
2012-10-04 08:08:41 WebSocket: Requesting handshake…
2012-10-04 08:08:41 WebSocket: Handshaking…
2012-10-04 08:08:41 WebSocket: Done handshaking…
2012-10-04 08:08:42 WebSocket: Resource id #10 CONNECTED!
2012-10-04 08:08:42 WebSocket: Resource id #11 CONNECTED!
2012-10-04 08:08:43 WebSocket: Resource id #12 CONNECTED!

然後網頁則是從零直接跳到三

Socket Status: 0
Socket Status: 3 (Closed)

比較奇特的是,網頁部份我必需改動成這樣

否則會沒有半點反應。
但改成那樣之後,也是會連接失敗瞬間關掉,不知道是出什麼問題。

如果有大德們知道問題點希望可以留言告知,我再繼續試試~~XD

外行人也能學會的App企劃法

最近買了這本書:
http://buy.yahoo.com.tw/gdsale/gdbksale.asp?gdid=3639539

這本書在第一張的地方,先說出App與一般的電腦程式最大差異點在於『行動性』。
因此好的APP應具備下面幾個特質:

1. 簡單上手
2. 目的單純(一次做一件事)
3. 流暢度和穩定度

在做APP之前要先問自己下面幾個問題:

1. 為什麼要做APP而不是網站,找出做APP的意義。
2. 然後找出APP要扮演的角色,是附屬在某個服務如dropbox,或是一個獨立的服務如Line、或者是一個行銷、廣告的工具。
3. 預期這支APP可以解決什麼問題?
4. 鎖定目標族群
5. 產品所能帶來的效益

在企劃自己的APP之前,應要多去看別人的APP,以下面幾項去切入剖析

1. 是否有善用行動裝置的特性,提供一般網站無法滿足的訴求
2. 這隻APP鎖定的是那一些族群? 提供了那些主要資訊或活動?是否可以一眼吸引目標族群?所提供的功能是否符合族群功能?
3. UI是否清楚明瞭? 操作動線是否流暢?
4. 製作邏輯剖析

我們應該要多去了解市場現有的APP的狀況,或是排行榜上榜的APP遊戲,並學習用上面的觀點去剖析該APP,培養自己對於這個市場的敏銳度,從觀察中找創意。並且應善用情境想像和角色模擬,找出問題點。

在UI與動線規劃上,要了解手機動線是3D的,並且在設計上許多內容是在套入程式之後才會套入,因此程式師必須與美術設計者有較密切的溝通,才能確保美編產生的東西可以使用在程式內。在美術設計上,應該以『好用』為主要訴求。

在上架前我們則需要準備下列東西:

1. 名稱:在Iphone裡最長六個字、app store最長10個字
2. 主icon:應醒目、可表現主題
3. 截圖:以五張為限,應盡量抓可凸顯APP特色的圖
4. 文案:建議用條列式的將內容和主要功能強調出來,並加強特色介紹,讓使用者一目了然。
5. 關鍵字:盡可能把所有的關鍵字都列出來,或者也可以參考競品的APP介紹,將有用的關鍵字納入,增加APP被搜尋到的機會
6. 上架日期:若送審過後要出現在APP Store的日期

沒有銀彈 – 軟體工程的本質性與附屬性工作

在人月神話裡,花了兩章的篇幅說明在軟體開發上,
不會有類似銀彈這種,可以快速解決開發時程延誤或發生重大錯誤的捷徑

他們提出了三個原因:

(1) 複雜性

軟體開發的複雜度與規模大小並非線性的關係,整個複雜度增加情況也會遠遠超過線性預估的結果。也因為結構上的複雜性,當軟體在擴充新功能時,難保不會產生新的副作用。程式裡的狀態難以一一列舉,也更加難以明瞭整個產品也會變的更不可靠。另外因為複雜性關係,開發時也容易遇到溝通困難、時程落後、成本超支的困難。

(2) 配合性

軟體必須配合其他的領域,例如電腦、不同語言、不同介面等等….。

(3) 易變性

1. 時常面臨修改,因為軟體是純思考的產物,有無限延展性,修改容易,也因此特別容易面臨修改
2. 成功的軟體生命周期會比硬體來的長,因此時常會需要配合硬體環境上去修改。

(4) 隱匿性:過於抽象、難以理解。

在這邊他們也提出了幾項過去曾讓軟體界有所突破的重大發展,但這些突破都是屬於附屬性的,沒辦法突破軟體工程本質上的複雜性:

(1) 高階語言:高階語言的發行的確是最強而有力的一次突破,對生產力而言至少有五倍以上的提升。並伴隨得到可靠度、簡潔性、理解力上的增益。它把和程式內涵一點關係都沒有的那一整層複雜性給去除了。

(2) 分時技術:分時技術對於程式設計師的生產力及產品品質有了重大的提升。因為分時確保了即時性,使我們得以持續保持住腦子裡對複雜的概觀。但緩慢的回復時間是附屬難題。

ps: 分時系統:作夜系統依中央處理器排程(CPU Scheduling),將中央處理器的時間切割為極小的時間片段(Time Slice)

(3) 統一的軟體開發環境:Unix和Interlisp是第一個得到廣泛使用的整合開發環境,藉由提供完整的程式庫、統一的檔案格式、管道和過濾器,以促成軟體的共用。

(4) 物件導向程式設計:抽象資料型別和階層式型別的使用。允許介面可以用次一層級的型別去做進一步的細緻化,隱藏類別裡面的實際操作,讓開發者可以在開發時專注於設計該類別的邏輯,排除掉許多附屬性困難

(5) 人工智慧:ex語音辨識、圖形辨識

(6) 專家系統:一支具有廣義推理引擎與知識庫的軟體程式,被設計成可接收輸入資料和假設條件的軟體程式,然後藉由知識庫來推導出邏輯上的結果。這項技術所帶來最重要的進步,是將應用領域的複雜性從程式中區隔出來

(7) 『自動化』程式設計:換句話說是用更高階的語言來編寫程式。未來可能我們會是用『建構』的方式來寫程式,也就是更完備的函式庫,可以讓寫程式的複雜度更加的降低。

(8)  圖形化程式設計(graphical programming):一個博班論文提出的新想法,但本書覺得要有成果應有些困難。

(9) 軟體的驗證:編輯軟體自動驗證程式的某些錯誤。例如比對資料型態、變數是否已宣告等等。

(10) 環境與工具:用來除錯、或是搜尋該類別曾被用在那些地方的開發工具。

(11) 工作站:也就是編輯所消耗的時間,若是機器的編譯時間減少,程式師能花在思考上的時間就會變多。