2008/05/30

[+/-] : 開始計畫寫一個 Google App Engine的程式

comments
最近有一個生活上的需要 希望有一個應用程式來達成目的
剛好很適合做在 Google App Engine (GAE)上面 也可以作為一個社群化的服務
(idea暫時先保密啦 等真的做不出來再公開... 也誠徵好友一起來寫)

目前GAE也已經正式對公眾開放 不需要再等待 可以直接開通(需要手機認證)
有興趣的人也可以去申請一個來玩玩.... (其他介紹請看另一篇介紹)
在正式公開之後 有新增了兩個API 分別是Image的處理MemCache
因此發環境也升級到1.1.0 之前有下載的記得要去升級一下

目前開發環境就是 Google App Engine SDK
加上 Google Map APIGoogle Visualization API 的使用
其他部分可能會再加上 jQuery 來處理 AJAX 或是使用 YUI來處理介面及AJAX
目前最大的問題是 什麼都不會 而且也沒啥時間
Python不會 所以從頭學起
網頁已經超過8年沒寫 也大概是從頭學起 再加上現在流行AJAX
雖然知道原理 不過完全不會用 還是從頭學起...XD
而且現在沒啥時間搞著個 所以大概要兩個月的時間來學習跟架構
目前已經把資料表的設計跟程式流程大致規劃好了...
不過要正式開始寫 還真的不知道該如何下手

所以目前先從簡單的開始學習 把Demo中的Guestbook修改一下
加入完整的帳號管理功能 可以有個人頭像跟簽名檔
學習使用Templates跟CSS來編排版面 以及上面提到的API跟libs等
然後希望可以每個人申請自己的留言版 跟提供多種UI及feeds來輸出
(不知道有沒有辦法支援 domain/username 然後在同一支程式中知道是哪一個user)
之後就可以作一個像twitter一樣的東西在GAE上面 看來這又要花我很多時間了

[+/-] : 夢境 20080529

comments
一直以來 幾乎每日都會做夢 至少在醒來那一瞬間 還知道自己剛剛做的夢
不過爬起床來 坐到電腦前要記錄下來時 就都已經忘了一大半了...
因為在爬起來前 通常會被鬧鐘吵的很煩 然後一直賴床 早就把要記住的夢給忘了

最近幾天做的夢 都還蠻像動作遊戲 在場景中冒險 (真的是生活太煩悶了嗎@@)
昨天一開始是 動作解謎 要去尋找寶物(忘了要找啥) 中途還有怪怪的壞人
會一直拿槍射我 因此要東躲西藏的前進(我沒有武器嗎...)
到了後期又變成是 一個奇怪的玩具射手 拿著一把弓 對著架子上的物品一直射
要把物品打下來得分 還要考慮擦版得分等等問題... 很怪 不過玩的很有趣就是了

但是一起床之後 夢中的樂趣其實也忘了差不多了 只想著三件事
好熱阿 (冷氣定時關機了....)
好餓 (大概15個鐘頭沒進食了...)
我的程式阿 到底怎麼寫阿... 天阿
2008/05/12

[+/-] : 利用 網路 分享 Mercurial

2 comments
上一篇文章介紹了分散式的版本控制系統 我選擇了 Mercurial 作為目前使用的方案
接下來就是要建立Server來讓專案可以多人協同作業
Mercurial(HG)提供了多種不同方式例如藉由SSH, HTTP server或是他本身內建的Server來運作

最簡單快速的方式就是使用HG內建的Server
只要在工作路徑所在的命令列輸入
hg serve
或是使用 TortoiseHg 在工作目錄上按右鍵選擇Web Server再按下Start
就可以開始使用http的分享服務
如果要修改port或是listen address可以使用-p或-a參數修改
如果有不只一個工作目錄 可以使用參數--webdir-conf加上設定檔案來控制路徑
設定檔有兩種方式 如果工作目錄都在同一個目錄下 使用
[collections]
/prefix/to/strip/off = /root/of/tree/full/of/repos

如果都不在同一個目錄下 分在在各處的話使用
[paths]
virtual/path = /real/path
virtual/path = /real/path

其他參數可以參考這裡 或是下指令
hg -v help serve
使用內建Server的最大問題是還不提供使用者管理的機制
只能選擇開放或關閉push指令 (設定在hgrc中 在最後介紹)
然後也不提供SSL的通道 雖然參數已經有了 不過目前還沒實做完成 等下一改版吧

接下來是使用SSH來分享 這部份比較簡單 直接使用系統中的SSH Server如OpenSSH
只要登入的使用者對工作目錄有存取權限即可 其設定方式就請參考網路上的SSH設定方式
在Client端連接的路徑就是
ssh://[email protected]:port/path
要注意路徑中的path如果要使用絕對路徑 必須為兩個//
例如工作路徑在/var/hgroot/proj1 而登入代碼則為
ssh://[email protected]:port//var/hgroot/proj1/
而使用相對路徑的話則是會跟使用者的家目錄相關
例如使用josh登入 home路徑在 /home/josh 而工作路徑 /home/hg 連結路徑就要打
ssh://[email protected]:port/../hg
如果要使用非對稱金鑰認證來取代密碼 可以使用putty ageant之類的代理
或是修改Mercurial.ini設定檔中的ssh項目加入-i參數 如
ssh = "C:\path\TortoisePlink.exe" -ssh -2 -i "D:\path\key"

最後一種是使用現有的http server來實做 以下我會針對使用apachelighttpd來介紹
會分成兩種是因為實驗室的Server兩種平台 不過設定起來都很簡單
首先要確定已經安裝好Server 以及 都可以執行cgi及python的script
接下來只要利用hg所提共的hgwebdir.cgi依照以下步驟即可
在Apache的設定檔中加入以下設定 (我是放在<VirtualHost *:443>之中 只允許安全通道)
ScriptAliasMatch ^/mercurial(.*) /path/to/web/hgwebdir.cgi$1
<Location /mercurial>
Allow from all
Options ExecCGI
AuthType Digest
AuthName "Mercurial Repository"
AuthUserFile /path/to/web/passwd
Require valid-user
</Location>

在lighttpd的設定檔中加入以下設定
(一樣只允許SSL 所以我放在$SERVER["socket"] == "0.0.0.0:443"之中)
alias.url += ( "/mercurial" => "/path/to/web/hgwebdir.cgi" )
$HTTP["url"] =~ "/mercurial" {
cgi.assign = ( ".cgi" => "/usr/bin/python" )
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/path/to/web/passwd"
auth.require = ("/mercurial" => (
"method" => "digest",
"realm" => "Mercurial Repository",
"require" => "valid-user"
))
}

然後利用htdigest建立帳號密碼放到/path/to/web/passwd
最後在hgwebdir.cgi的目錄下建立檔案hgweb.config
設定工作目錄的所在(跟最上方使用內建server一樣的設定檔)
以上是不允許匿名pull 僅允許登入使用者pull
如果要開放匿名pull 可以將 Require valid-user用 <Limit GET POST PUT>包住

現在基本上完成了 接下來是針對每一個檔案庫做設定
設定檔通常為 .hg/hgrc 或是Mercurial.ini等
跟分享服務有關的欄位為 [web] 一般會放置以下內容
style = gitweb //更改顯示的style
allow_archive = bz2 gz zip //提共下載的格式
contact = Josh //聯絡人資訊
push_ssl = true //是否使用SSL
description = Josh's Shadow Research Project
allow_push = josh //允許push的使用者 (如要開放所有人請使用 *)
hidden = false 是否在網頁中列表中隱形

設定完到這裡就大功告成啦
最後在Client端執行
hg clone path
或是在瀏覽器中輸入 https://host/mercurial
來測試結果啦

目前使用Mercurial上最大的問題 還是在TortoiseHg
對中文環境的支援度很差 如果新增檔案的檔名有非英文字母
需要先Add再Commit,不能像只有英文字母的檔案只要Commit自動幫你Add
在Commit視窗中 所有中文檔案一律變成亂碼(這也是不能自動新增的原因吧)
另外註解不能打中文 否則只能在本機端上看到 在網頁上就都會變成"?"
還有Mercurial不支援目錄的版本控制 因此不能新增一個空目錄上去
這點相當不好用

再來就是使用上的習慣問題 修改檔案前都要先執行Sync中的Pull檢查是否有新版
在寫程式當中 記得到一段段落就要Commit一次
在程式寫完一個部份之後 還要執行Sync中的Push到Server上
不像TortoiseSVN一樣 只要Update然後Commit就做完所有事項
多了很多步驟 用起來麻煩很多很多....

不過使用Mercurial有我上一篇提到的一個不錯的優點 他完全支援P2P的運作
只要每一個Client都有分享目錄出去 不需要有真正的中央Server來控管
可以完全在自己的Client端中來運作

參考資料
Collaborating with other people
Publishing Repositories with hgwebdir.cgi
PublishingRepositories
Setting up the Hg http interface
hg(1) hgrc(5)
Apache Docs
Lighttpd Docs Alias
2008/05/11

[+/-] : 分散式版本控制系統 DVCS

comments

最近使用Subversion(SVN)的專案越來越多,我實驗室的專案也全面使用,不過,這種Client-Server式的架構有一個嚴重的問題,就是在網路斷掉時,就沒有版本控制的能力了,也因此有另一種形式的版本控制系統的出現。

Distributed Version Control System (DVCS),分散式版本控制系統是現在越來越紅的一種版本控制系統的方式,有別於一般Client-Server的架構,分散式其實就是在每一個Client端都有自己的檔案庫存在,自己開發的文件檔案就直接Commit到Local端的檔案庫中,而檔案庫再跟主要的檔案庫Server或是其他Client端的檔案庫做同步化的動作,稱作 Pull 跟 Push ,因此在網路不通時,可以完全的獨立作業,又同時享有版本控制的好處,而網路連線時再跟其他檔案庫來交換內容,甚至可以打破傳統階層式的架構,採用Peer-to-peer(P2P)的方式來運作,每一個Client同時也是Server(依據不同的版本控制統而定),這裡有一些DVCS的運作圖可以連上去看一下(BitKeeper的產品介紹)

看了一下Wiki上的比較列表,比較紅或是比較成熟的大概是Git, Mercurial, Bazaar 以及SVK吧,在Choosing a Distributed Version Control System這一篇文章中有列出一些選擇的項目及他們的優缺點可以作為參考,如果是原Subversion的使用者,或許可以考慮使用SVK,因為SVK原本就是建立再SVN的環境上在做擴充,可以參考架構圖,不過在多方比較後,Mercurial(水銀的 所以又叫做Hg XD)看起來還是比較好的選擇,尤其是使用介面上有TortoiseHg可以使用(Git有git-cheetah Bazaar有TortoiseBzr 不過看起來都還在早期開發階段),作為初學者,入門的難度比較低,而其功能性及擴充性並不會因此而打折扣,依然是相當強悍的軟體,在加上最近終於進入的1.0的階段,其成熟度應該是可以受到肯定,目前簡單的試用,除了介面還是很醜(這大概要怪GTK+),其他用起來並沒有太多的障礙,目前把我的研究開發目錄從SVNf遷移到Hg上試試看。

補充資料

Distributed Version Control Systems - Why and How(PDF)
Git - User's Manual - GitWiki - Wikipedia
Mercurial - Distributed revision control with Mercurial (PDF) - WikiPedia
Bazaar - Workflows - User Reference - Wikipedia
Free Host - Git - Mercurial
The Risks of Distributed Version Control
Chris' DVCS wishlist

最後要介紹一下assembla這一個網站,他是一個專案管理的整合型線上環境,除了提共Wiki, Chat, Blog, Milestones, Scrum, Tickets等線上專案管理常見的功能外,在這裡介紹他最大的原因就是,他還提供了SVN, Mercurial, Git等檔案庫的支援以及Trac的線上環境供使用及HTTPS的加密通道,免費的有500MB的空間(沒有說明流量限制),並且可以付費升級,跟其他的FreeHost不太一樣的是他就算免費一樣可以選擇完全的Private,對於一般的專案管理應該是非常夠用了,而且他有商業模式在,應該比較不容易倒吧XD

2008/05/07

[+/-] : 觀後隨筆 American Gangster

comments
American Gangster 中譯 美國黑幫
一部步調很慢 一開始很零碎 但是深度很夠的劇情強片
看完最大的感想是 想要成功 除了看轉時機 有清楚的頭腦
還要有新的通路及新的品牌 以及心狠手辣跟果斷的決策...
不過最重要的是 要低調啦....XD

個人七顆半星推薦
2008/05/06

[+/-] : 觀後隨筆 Hitman

comments
Hitman 中譯 殺手47
俄羅斯殺手橫掃莫斯科 全場血肉橫飛 精彩異常...
本來心情不太好的 看完了電影變超爽的(幹 我是不是變態阿)
不只是槍法俐落 主角頂著一個大光頭 動作乾脆靈活 也很帥氣...
就 看歡愉的啦... 七顆星推薦

--
比賽結束 逆轉獲勝 不想寫了 都是垃圾短文...XD
回家睡覺要緊

[+/-] : 觀後隨筆 Lucky Number Slevin

comments
Lucky Number Slevin 關鍵密碼
看完電影 只能說 他的梗鋪的有夠長....
一開始看完前面那一小段 跟後面的怎麼都沒啥關係...
看到中間還以為 這傢伙怎麼運氣怎麼背...
結果統統猜錯.... 我敗了....

七顆半星推薦

[+/-] : 觀後隨筆 AppleSeed Ex Machina

comments
AppleSeed Ex Machina 蘋果核戰記2
日本 士郎正宗 的動畫加上 John Wu的監製實在蠻令人期待
因為自己是作圖學研究的... 對於這種3D rendering的還頗要求
而這一部已經是水準之上了... 至少比起第一集
那個人物根本就不能看[email protected]@ 光影的shading根本是亂來...
而這一部除了場景一樣很美 人物的shading跟Animation都精進許多
再配上 John Wu的暴力美學 整部電影看起實在是十分過癮
雖然劇情有一點薄弱 不過看這片 本來就不是在看劇情的嘛
個人七分推薦

[+/-] : 觀後隨筆 Stranger Than Fiction

comments
Stranger Than Fiction 中譯 口白人生
一個介於虛幻故事及現實人生交錯的電影
步調雖慢 但一點都不無聊
在平淡的故事中 探討著人生及許多問題

個人八顆星推薦

--
因為高國慶開轟 嘟嘟敗投解套 20連勝看週末啦
心情很High 所以寫少一點....
當然 絕對不是因為這樣所以給特別高分...
真的很好看啦...

[+/-] : 觀後隨筆 Michael Clayton

comments
Michael Clayton 中譯 全面反擊
一部怪怪的劇情片 看第一次不知道他在演
第二次看又覺得完全沒什麼...XD
大概是導演跟我的口味不合拍 (還是該說他功力有點差@@)
不過整部片對於人物的刻劃還算不錯 George Clooney 的演技還是相當的棒

個人評六分半...

--
因為看棒球 安打一直出不來 嘟嘟的20連勝也達成不了
所以來寫寫Blog 把前幾個月看的電影寫一寫...
看比賽結束前還可以寫給篇....

[+/-] : 觀後隨筆 3.10 To Yuma

comments
3.10 To Yuma 中譯 決戰3:10
就是熱血 刺激 有情有意的西部牛仔片
很多情感上的演變 以一個旁觀者來說 都有點過於天真吧
不過作為一個娛樂大作 已經相當足夠了

個人給六分半....

另外一提 這部片一開始還有點看不下去...
不過忍過片頭倒是越看越有趣 越看越歡樂XD

--
一樣 好久以前看的... 大概四個多月了

[+/-] : 觀後隨筆 I Am Legend

comments
I Am Legend 中譯 我是傳奇
一開始還以為是像湯姆漢克在Cast Away 浩劫重生裡面一樣 完全一個人唱獨角戲
幸好 步調沒有這麼慢 過程也有趣刺激的多了...
畫面特效也做的栩栩如生 再加上個人蠻欣賞 Will Smith 的演技
所以個人給這一片八分...

另外 看這一部片看這片就好 有另一個特別結局版實在有點虛
讓觀看的感覺完全的不一樣了...

--
一樣 是三個月前看的 @@

[+/-] : 觀後隨筆 Gone Baby Gone

comments
Gone Baby Gone 中譯 失蹤人口
一部帶有懸疑解迷的劇情片... 雖然步調沒這麼快
不過過程還是很緊張刺激 相當好看
不過結局感覺有點過於...矯情? 應該這麼說吧
至少我不會這麼做 大概 是對人有太多的不信任感吧

個人給7分 雖然不像imdb上給了八分 不過也相距不遠
值得推薦的劇情片

--
三個月前看的片子.....
 
Back to Top
This Site Power by JoStudio. Some Rights Reserved.