2006/12/31

[+/-] : Server 架構更新

comments
前一陣子從傳藝中心寄來了一台Server
是IBM xSeries 346 2U的伺服器
(Xeon 3.2Gx2 + 1G Ram + 萬轉Scsi硬碟x6 組RAID5)
因此馬上將他改為兩台Server的架構
將原本的Server(只是一般的電腦...)只做為WebHost
負責一般網頁 Flash跟錄音檔的下載上傳動作
將新的Server在重灌之後(重灌就要一天@@)
只做為SQL Server跟 Game Server...
不過實際測試後 效果還是不理想...
尖峰人數在15-40人之間....距離目標還是很遠
經過幾次的測試後...
發現實際上得效能瓶頸 竟然是在XML格式的編碼解碼上
這受限到Client端是Flash的關係...沒辦法做更動
不過Server的演算法還有在更改的空間...
網路架構也做了修改,要先取的Token之後 才能送封包
演算法部份在老闆跟阿盛討論之後 似乎有快上一點點
目前我還想到是利用Client端先幫Server端算好要廣播的封包
以及縮短XML的Tag長度 來降低網路使用量及CPU計算量
再來 就是等待壓力測試...確定效能提昇的量

不過問了同學(曾經是業界開發過online game的)
他們的一個伺服器(一個世界) 是由10台Server所組成
理論上線8000人 沒道理我們的Server這麼爛阿XD
應該是Server還有很大的改進空間吧...

在昨天開會之後....目前是確定將兩台架構在拆成三台架構
將SQL跟Game Server分開
只是這計畫要跟金主 就是傳藝簡報過後
才會開始採買跟測試 所以實際上線人數還有的瞧
2006/12/30

[+/-] : 簡單 SVN (Subversion , TortoiseSVN)應用及設定

7 comments
SVN (Subversion) 是一套非常好用的 檔案 版本控制(Revision control) 系統
除了可以很方便的追蹤,交換,合併,比對檔案外,
更能保護檔案不會受到一些意外而讓心血的結晶損毀,
也可以讓團隊合作時,更加有效率。

以下簡單介紹 Subversion (Server端) 及TortoiseSVN (Client端)
在單人工作,及多人工作時的一些設定及用法,希望能幫助更多人上手

1.
在完全個人的環境下,在沒有多人共用及網路的需求下
其實不需要Subversion 去架設Server ,僅僅使用 TortoiseSVN 即可
可以在自己電腦上進行檔案版本的控制,
不過建議至少要兩顆以上硬碟,並將檔案庫及工作目錄分開放置
假設工作目錄為 C:\MyDocuments ,檔案庫目錄為 D:\SVN
首先先到 TortoiseSVN 的官方網站下載最新版軟體 並且安裝
建立好目錄後,在檔案總管 D:\SVN 當中 按下滑鼠右鍵
選擇 TortoiseSVN ->在此建立檔案庫 選擇原生檔案系統 按下確定
再來到 C:\MyDocuments 按下滑鼠右鍵選擇 SVN取出 (SVN Check Out)
在檔案庫URL中輸入 "file:///D:/SVN" (或是點擊 "..."按鈕直接選取)
按下確定完成第一次的Check Out
之後就可以在 C:\MyDocuments 目錄下進行工作
另外 記得 D:\SVN目錄要備份定時備份

2.
在多人工作或是在公司內、實驗室內做檔案管理時
架一台Server就是必要的工作了
以Windows為例 要架設Server實在是非常簡單
首先先下載 Subversion 並且安裝他 (預設路徑 C:\Program Files\Subversion)
在命令列環境下 下達命令
sc create "svnservice" binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service --listen-port 5678 --listen-host 0.0.0.0 -r D:\SVN" displayname= "SVN Service" depend= Tcpip
可以將 SVN 設為 Windows 的 Service 讓他每次開機自動執行
並且指定 D:\SVN 為預設的檔案路徑
以及指定 5678 為網路連線的Port (請自行更換)
到 控制台 -> 系統管理工具 ->服務 當中 找到"SVN Service"
把他設為自動 並且啟動之後 就可以開始使用 (請確定防火牆是否開啟)
如果 D:\SVN 還沒建立檔案庫 請使用 (1) 的方式
或是在命令列鍵入以下指令來建立檔案庫
svnadmin create D:\SVN --fs-type fsfs
而Client端的設定一樣 要先下載 TortoiseSVN 並安裝後
在你所選擇的工作目錄中 按下滑鼠右鍵選擇 SVN取出 (SVN Check Out)
並在檔案庫URL中輸入 svn://ServerIp:5678/
其中 ServerIP 為 你所架設SVN Server的IP (或是Domain Name)

3.
對於檔案庫 可以對他進行權限的控管
首先打開檔案庫中 conf目錄下的 svnserve.conf檔案
拿掉命令前的 # 結果為以下所視
[general]
anon-access = none #表示匿名者存取不能 若改為read表示可讀不可寫入
auth-access = write #表示登入者可以存取
password-db = passwd #存放帳號密碼的檔案
authz-db = authz #可對使用者分群組 以及對檔案庫中的目錄進行控管(非必要)


再開啟 檔案 passwd
並且依照 "帳號" = "密碼" 的原則輸入即可
請注意 這裡的密碼是明文 (和Apache的不一樣)

如要分群組 如要分群組請再打開 檔案 authz
以類似以下的方式進行設定 (請不要使用中文 XD)
[groups]
群組 = 使用者
群組1 = 使用者1,使用者2
群組2 = 使用者1,使用者3
群組3 = 使用者3,使用者4

[/]
@群組 = rw #群組擁有整個資料庫的存取權限
* = #其他人不能存取

[/目錄]
@群組1 = rw
使用者3 =
使用者4 = rw
* = r


4.
以上介紹的是所謂的單一檔案庫的方式
其實也可以共存多個檔案庫
例如 將 D:\SVN設為SVN Server的跟目錄 不過不在這裡建立檔案庫
在 他的子目錄建立檔案庫 例如 D:\SVN\Proj1
在客戶端存取時一樣只要加上路徑Proj1即可
建立多個檔案庫的優點是可以分散風險 避免當檔案庫損毀的危險
另外也可以使的檔案版本編號成長的慢一些 ^^
缺點就是 設定跟權限都要各自維護

5.
這是我使用SVN幾年來的一點點心得
不要將一些不該存的檔案放到檔案庫中
以程式設計為例 不要將*.o *.obj *.dll *.exe *.tmp等檔案上傳
這些除了有些是暫存檔外 有些可以利用其他檔案 經由簡單步驟所產生(編譯)
但是 相對的 *.sln *.vcproj (Visual Studio的專案檔)或是其他專案檔 就一定要保留
才能讓其他人也利用檔案庫中有的檔案 快速的產生結果
另外 也不需要將檔案壓縮起來之後 在放入檔案庫
檔案庫會自動幫你做檔案的壓縮
壓縮起來反而不利做版本之間的比對

要大幅度修改文件內容 或是要將原文件修改到另外一個用途
不需要先將原文件複製到另一個文件夾或是加一個.bak做區隔
反而浪費容量 也不易管理
直接使用SVN提供的 分支(branch) 或是 標記(tag) 功能即可

如果有一個文件會有多人要修改 尤其是 Word , Excel 這種文件
(存成二進位檔 非明文 的文件)
在開始修改前 要先將他鎖定 等修改完之後在解除
因為這類檔案 不像程式碼 或是一般txt 存成明文的文件
可以簡易的進行比對 分析差異 當你在修改時 有其他人已經修改並上傳
就會非常麻煩....

修改前最好先進行 更新 (Update)的動作 讓自己要修改的版本是最新的
修改完成後(測試後)也要馬上進行 上傳修改(Commit)的動作


6.
SVN本身還可以搭配Apache使用http / https 的協定
或是搭配 SSH 軟體 使用安全的加密通道來存取
不過這屬進階設定 就不在這裡討論
Subversion官方網站 http://subversion.tigris.org/
TortoiseSVN官方網站 http://tortoisesvn.tigris.org/
SVN Book(英文) http://svnbook.red-bean.com/nightly/en/index.html
SVN Book(中譯) http://svn.stu.edu.tw/svnbook/book.html

jedi.org 旅行必備、居家良伴、送禮自用兩相宜的「版本控制系統」http://jedi.org/blog/archives/004784.html
Jserv's blog 淺談版本控制系統 http://blog.linux.org.tw/~jserv/archives/001148.html
Seety 利用 SVN 進行版本控制 http://www.seety.org/technote/programming/svn_intro

7.
以上文章歡迎轉載 請保留文章完整並註明出處 JoStudio
有任何錯誤歡迎指正 感謝
2006/12/28

[+/-] : 計畫排到明年底去了?!

comments
昨天 跟老闆meeting談一談... 竟然把計畫一直排到明年去了
現在的Flash online game 做好後 (上新聞囉)
先把其他老師的課給結束掉 作業寫一寫...拼完期末考後
開始做專科的計畫 是一個3D的小遊戲 做食衣住行跟生活的應用
希望可以在農曆過年前寫完 好好放個假
過完年放完假後(想必今年的假一定又只有6天@@)之後
除了一樣有三門主科 還要加修老闆Shader的課 去幫忙寫Code
另外還要去修英文寫作 練英文 做寫論文的準備
重點是老闆很想要寫一個賽馬的遊戲...(最近他很哈賭博電玩)
要拿來作為技術展示的平台 也順便作為一個可以商業化的軟體
除了畢業時可以用他展示論文中的技術
也要順便找廠商合作來賣錢(其實這才是他的重點吧XD)
然後接著很有可能會繼續做傳藝兒童網的二期計畫
在前幾天記者會上傳藝中心已經正式公開了
只是目前要不要做 要怎樣做 都還在談 就看看囉.
而這些都要在下個學期 或是暑假放完前搞定...
絕對不能在讓他拖到二上... 因為要開始寫論文了...
想必又是一個做廉價勞工快被壓榨到死的一個學期吧

[+/-] : 人人都有的樂透夢...

comments
剛剛開出了台灣樂透史上的最高獎金....
我當然也是興沖沖的的去買了...
也興沖沖的去對了... 開那什麼鳥數字...
簽了 兩組12個號碼只中一個...連400塊也沒有...
果真沒有這個命... 樂透 還是當作做功德吧


其實人人都有個樂透夢
夢想著中了樂透後,可以環遊世界(老套XD)
可以救濟世人,可以遠離現在的一切...
或是秘而不宣 繼續做著原來的工作 每天來上班
不過不管怎樣 想想就好...
真的等到中了再來考慮吧...
反正 我沒這個命啦 (泣....)
2006/12/13

[+/-] : 我太高估伺服器的能耐了...= =

comments
上一篇提到的Flash online game
最近正在如火如荼的測試當中
原本一直以為效能的瓶頸會是在 Flash 的 Client 端
是沒錯 當同一場景人物超過20人時候 會有一些lag的感覺
不過都是在可以接受的範圍....
不過真正嚴重是 Server 完全撐不住....= =
當20人同時動作時... Server CPU 會吃到滿持續快半分鐘...
因為 Server 是 Windows + SQL Server + Java + asp + iis
通通都是又慢又吃資源的怪物....= =
不要問我為甚麼要選擇這樣的平台... 不是我能決定的@@

寫 Server 端的目前改的快趴下去了
目前已經將 SQL Server 全部做了 Cache
java 中也做了一堆快取....
用的演算法跟資料結構也都最佳化了...
網路封包及設定的調整也都做了...
Server 的 Loading 還是降不下來...

接下來就是要拆 Server 的架構了
不能把東西全部放在一台電腦上...
等明天另一台電腦來...
第一件事就是先把檔案 跟Connect Server分開
一台電腦負責檔案( Flash 跟 音效 圖檔 等)的下載(用Apache)
同時負責 asp 的部份,用於檔案上傳跟一部分的SQL Command(用IIS)
這兩部份放在原來的電腦上 這樣改最少 程式幾乎不用動
另外把 DataBase 跟 Java 的 Server 搬到另一台電腦
專門做資料的處理...
把負載分開 估計可以增加1.5倍的效能吧...
至少可以解決檔案讀不到的問題

再來是備案...
把 Server 端換成 linux + MySQL
再來就是架多個 Server
並且在連線時可以選擇要加入台伺服器
每台連線到的 Server 都有兩台電腦 分別做前景跟背景運算
不過這是二期再來考慮吧 現在想辦法結案就是了

越來越有寫online game的感覺了...
2006/12/09

[+/-] : 結案前的測試

comments
傳統藝術中心-兒童數位學習網 Flash 線上 RPG
跟前幾次專案 我們一樣是做所有程式的部份,也一樣是二次轉包
也就是屬於被壓榨的勞工階級.... ==

目前測試的量大概是一天600人次
因為Client端是Flash 效能有點差
同一場景最大人數大於20人就有一點Lag了
另外Server的授權關係 使得同時連線數過低 超過20人很可能讓
人物在載入時 有東西沒載入而斷頭斷腳的XD
整體Server可承受的總線上人物大概在100人到150人吧 我猜
畢竟Server只是一般的桌上型電腦...

就快要記者發表會了 希望不要出什麼問題才好= =
然後薪水趕快來.... 做快半年了薪水還沒拿到= =

有興趣的已經可以去註冊 並上線玩玩看了


不過整個遊戲是以數位學習為主
做了這麼多數位學習的專案 還是脫離不了問答的方式來進行任務
整體的遊戲架構就是以解任務 累積經驗值及衣服為主
任務的內容就是會以Flash動畫的形式 教導一些傳統藝術的觀念
在輔以一些簡單的互動及應用 像是找寶物 找圖騰 連連看 批拼看等
然後每一個事件會由場景上一個 npc所觸發 由許多事件聯成一個任務
完成任務之後 可以獲得經驗值跟道具等...
另外玩家之間也可以藉由場經當中的聊天 跟遊戲互動
玩遊戲可以獲得金錢 然後拿金錢去購買衣服 讓自己可以裝飾的比較華麗
當然 會出現的衣服都是跟傳統藝術有關系的...
然後 還有一個小劇場 可以自己編輯依小段動畫 蠻有趣的

最後心得.....
我再也不想寫Flash了 專案結案後 第一件事情就是把Flash移除
ActionScript 實在是很莫名其妙的語言....
還有 我們明明就是繪圖學實驗室 怎麼老是有人找我們寫Flash
不然就是寫網頁....奇怪了

[+/-] : Note: InvSqrt

comments
前幾天在Solidot看到這一篇新聞 有快速的InvSqrt (開根號倒數)方法
還有人大費周章去追這段Code是誰寫的,甚至有人寫了一篇Paper去分析這段Code
然後今天在這也看到了一些討論 以及有人以前用SSE指令寫的另一種加速方式

說實在話 能寫出這種Code真的是要有一點天份吧...
下面有一個神奇的數字 0x5f3759df 在Paper中有分析並解釋這數字如何求得
並且導出 0x5f375a86可以得到更好的近似值...
馬上把他加到自己的Code當中 XD
float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f375a86- (i>>1);
x = *(float*)&i;
x = x*(1.5f-xhalf*x*x);
return x;
}
2006/12/03

[+/-] : 快垮了...

comments
這禮拜三有 Data Mining作業要交
禮拜四有 PCA 作人臉識別的作業要交
然後繪圖學的Ray Tracing已經Delay一個星期了 不過是自己老闆的 可以緩一下
下禮拜一 MediaLab 要報Paper 底下有三個教授 不能亂報 也不能延期
然後還要準備記者會跟研習會要DEMO專案的進度
最近一直在修修改改弄不完[email protected]@
然後學期剩下一個多月 自己Lab跟修課 還剩下5篇Paper要報
覺得我會死吧..............
 
Back to Top
This Site Power by JoStudio. Some Rights Reserved.