跳到主要內容

發表文章

目前顯示的是 2007的文章

目前 正著手進行 gtalk 相關計畫

目前正在進行gtalk 的機器人實作,我想把google的(英翻中)翻譯做在gtalk 上,這當然不是什麼新鮮的事,而且目前google 已經釋出相關的功能,不過;獨缺英文->繁體中文,沒錯! 我就是想做世界第一個英翻中(繁體)的機器人,事實上我只是想展示公司在xmpp 上的應用能夠做到什麼程度,如果我們撇開rfid middle 的xmpp server應用,這應該是我第一次在gtalk 上做相關應用 目前;已經突破gtalk 使用TLS 的認證部份,整個工作大概完成了40%,希望能夠在這個星期前釋出第一個版本

Concurrent Programming II

1.Concurrency is easy…? ( http://armstrongonsoftware.blogspot.com/2006/08/concurrency-is-easy.html ) 2.Sequential Programming -module(factorial). -export([factoriala/1, factorialb/1, factorialc/1, factoriald/1]). %Simplest: factoriala(0) -> 1; factoriala(N) -> N * factoriala(N - 1). %Using function guards: factorialb(0) -> 1; factorialb(N) when N > 0 -> N * factorialb(N - 1). %Using if: factorialc(N) -> if N == 0 -> 1; N > 0 -> N * factorialc(N - 1) end. %Using case: factoriald(N) -> case N of 0 -> 1; N when N > 0 -> N * factoriald(N - 1) end. -module(set). -export([new/0, add_element/2, del_element/2,is_element/2, is_empty/1, union/2, intersection/2]). new() -> []. is_element(H, [H|_]) -> true; is_element(H, [_|Set]) -> is_element(H, Set); is_element(_, []) -> false. is_empty([]) -> true; is_empty(_) -> false add_element(X, Set) -> case is_element(X, Set) o

[微程式-技術研討會] 12月份研討會 主講人 ZNUL [XMPP RFC3920 10-~15章]

Xmpp Rfc3920 10-~15章 研討會報告 10. 伺服器處理XML節的規則 (Server Rules for Handling XML Stanzas) 相容的伺服器實做必須(MUST)確保兩個實體之間的XML節按次序處理. 除了按次序處理的需求之外, 每個伺服器實作將包含它自己的遞送樹"delivery tree"以處理它接收到的節.這個樹決定一個節是否需要路由到其他域, 在內部處理, 還是遞送到和一個已連接的節點相關的資源. 以下規則適用: ________________________________________ 10.1. 沒有'to'地址 (No 'to' Address) 如果這個節沒有'to'屬性, 伺服器應該(SHOULD)為發送它的實體處理這個節. 因為所有從其他伺服器收到的節必須(MUST)擁有'to'屬性, 這個規則僅適用於從一個連接到這台伺服器的已註冊實體(如一個用戶端)收到的節,如果這個伺服器收到一個沒有'to'屬性的出席資訊節, 伺服器應該(SHOULD)向那些訂閱了這個發送實體的出席資訊的所有實體廣播它, 如果可能的話(即時消息和出席資訊應用程式中出席資訊廣播的語義定義在XMPP-IM). 如果伺服器接收到一個IQ類型為 "get" 或 "set" 且沒有'to'屬性的節並且它理解這個節的名字空間下的內容, 它必須(MUST)為這個發送實體處理節(在這裏"處理"的含義是由相關的名字空間的語義所決定的)或返回一個錯誤給發送實體. #c to s 可以不用有 to 屬性 ,因為c to s 預設的 to 即是 server #若是出席訊息<presence>沒有to屬性,即為廣播給所有訂閱者,rfc3921第五章說明如下: (5.1.1初始化出席資訊 : 建立起一個會話之後, 一個用戶端應該(SHOULD)發送初始化出席資訊給伺服器來通知它的通信可用性.如這裏定義的, 初始化出席資訊節 (1) 必須(MUST) 不擁有'to'屬性(這表示它是由伺服器代替用戶端發送的廣播) 並且 (2) 必須(MUST) 不擁有'type&

Erlang/OTP R12B released

Major relese : otp_src_R12B-0 Build date : 2007-12-04 R12B-0 is a major new release of Erlang/OTP. You can download the full source distribution from http://www.erlang.org/download/otp_src_R12B-0.tar.gz http://www.erlang.org/download/otp_src_R12B-0.readme (this file) Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README that is part of the distribution. The Windows binary distribution can be downloaded from http://www.erlang.org/download/otp_win32_R12B-0.exe On-line documentation can be found at http://www.erlang.org/doc/ . You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_R12B-0.tar.gz http://www.erlang.org/download/otp_doc_man_R12B-0.tar.gz We also want to thank those that sent us patches, suggestions and bug reports,

RFID智慧型護送系統建置計畫

昨天接獲資訊: 微程式資訊 以專業技術與成功建置經驗獲得經濟部大型示範性計畫 『RFID智慧型護送系統建置計畫』 的支持,為醫療領域結合IT科技再跨出一步。 這可是一個將近兩千萬的專案阿,不過這事實上是一個XMPP 的應用,我們在XMPP 建置了一些訊息的交換邏輯,讓訊息在XMPP 上交易所產生的應用,業界這幾年對 concurrent programming 需求殷切,主要是因為資訊系統跳了一個層次在看訊息傳遞這回事,當大量資訊需要即時 精確的被傳遞時,過去的那種multiprocess mutithread 不敷使用,一個動輒上萬的長時間連線交易,更需要像erlang 這類以 concurrent programming 為觀點出發的語言,而這也同時是我會接觸functional language的主要原因 計畫相關聯結: http://www.program.com.tw/news/news_071129.htm http://blog.sina.com.tw/sandychang/article.php?pbgid=40436&entryid=575124

erlang 相關paper

http://www.it.uu.se/research/group/hipe/publications.shtml 內有相關於erlang 的論文 期刊 或是相關會議裡 提出的文章,其中這兩篇恰好是談到昨天提到的erlang bit syntax http://user.it.uu.se/~kostis/Papers/JFP_06.pdf Per Gustafsson and Konstantinos Sagonas Efficient manipulation of binary data using pattern matching In the Journal of Functional Programming, 16(1):35-74, January 2006 http://www.it.uu.se/research/group/hipe/papers/padl07.pdf Per Gustafsson and Konstantinos Sagonas Applications, Implementation and Performance Evaluation of Bit Stream Programming in Erlang In Proceedings of the Ninth International Symposium on Practical Aspects of Declarative Languages (PADL'07). To appear.

Erlang Bit Syntax

Erlang Bit Syntax 看起來蠻強悍的,在erlang programming 裡提到一個 16-bit Colors 的例子: << 這例子來自 erlang programming >> 1> Red = 2. 2 2> Green = 61. 61 3> Blue = 20. 20 4> Mem = <<Red:5, Green:6, Blue:5>>. 用在pattern matching也很直觀,比如: <<Header2:8/binary,$\ ,Rest2/binary>> = <<"HTTP/1.1 200 OK\r\n">>. 不過;他目前還不支援regexp , 用起來有時會綁手綁腳,可能是還不太熟析? Bit Syntax 可以用在網路的封包解析,或是encode/decode某種檔案格式...目前;關於封包分析部分我也還在努力搞懂中 http://community.livejournal.com/en_dmitriid/5806.html http://www.erlang.se/euc/07/papers/1700Gustafsson.pdf 這裡也有相關Erlang Bit Syntax的文章可參考

browser-based Javascript IDE

http://www.rsaccon.com/2007/11/amazing-browser-based-javascript-ide.html 現在的趨勢;好像一直朝著這種方向再走

Erlang Cookbook

Erlang Cookbook (裡面有一些不錯的範例),不過建議先讀完erlang 相關的書籍或是線上手冊再來讀會比較有感覺 http://schemecookbook.org/Erlang/TOC

[微程式-技術研討會] 10月份研討會內容 主講人 vivian

1. 繼續分享xmpp的討會 3.5 地址的確認 在SASL(見第六章)握手之後(如果必要的話,也在資料綁定(見第七章)之後,正在接收信息的實體必須(MUST)確認初始實體的ID 對於服務器間的通信,在SASL握手時,如果沒有指明授權的ID,這個初始的實體應該(SHOULD)是經過認證實體(參見簡單認證和安全層協議[SASL]中的定義)授權的ID(見第六章) 對於客戶端和服務器的通信, 在SASL握手時, 如果沒有指明授權的ID, “純JID” (<node@domain>)應該(SHOULD)是經過認證實體(參見[SASL]中的定義)授權的ID, “全JID”(<node@domain/resource>)的資源ID部份應該(SHOULD)是由客戶端和服務器在資源綁定的時候商定的(參見第七章) 4.1 XML流 / XML節概覽 XML流(XML Stream)的定義: 一個XML流乃是一個容器, 包含了2個實體之間通過網絡交換XML元素, 一個XML流乃由一個<stream>標籤開始的(該標籤需包含適當的屬性及名字空間聲明), XML流的結束則是由</stream>標籤做為結束, 在XML流的整個生命週期中, 初始化它的實體可以通過流來發送大量的XML元素, 例如:TLS協議(第5章),SASL協議(第6章)或XML節(在這裡指的是符合預設名字空間的元素, 包括<message/>,<presence/>,<iq/>元素), “初始的XML流"由初始實體(通常是一個客戶端或服務器)和接收實體(通常為一個服務器)協議, 從接收實體來看, XML流就是那個初始實體對接收實體的 “會話”, 接收實體則必需回覆一個相同的應答流給初始實體 Ex: <stream> è xml流開始 ………………………………. ………………………………. </stream> è xml流結束 XML節(XML Stanzas)的定義 : 一個XML節是一個實體通過XML流向另一個實體發送結構化信息中的一個離散語意單位, 一個XML節乃直接存於根元素<stream/>之下, 也就是說任何XML都是從一個XML流的下一級的某個OPEN標籤(如: <presence>)開始的, 並相對應到其CLOSE標籤(如: </presence>)做為結束, 一個XML節可以包含子元素(例如: 屬

我們該有怎麼樣的效率?

微軟打敗 Google,得到入股 Facebook 的機會,這類消息在現在的網路上已不算新鮮事,事實上這個新聞躺在我的收信軟體OUTLOOK EXPRESS 好幾天了,直到今天才真的把他打開來看,我對這新聞本身並沒有太多的感覺,而下面這段話才是我最感興趣的地方 << 內容摘自Mr./Ms. Days - 網路, 資訊, 觀察, 生活 >> Facebook 的身價現在被推高到將近五千億新台幣.如果你沒什麼概念五千億台幣到底有多少,那麼你可能記得我們鴻海集團的郭董曾經出過一本書,叫做《五千億傳奇-郭台銘的鴻海帝國》,當時鴻海集團(2005 年) 的總市值就是跟現在 Facebook 差不多.是的,這一家只有 300 人,完全沒有實體的產品,不到三歲的網路公司,他的市值跟我們郭董手下的鴻海集團相當 那麼這裡比較吸引人不是這公司的市值有多少,而是究竟多少人創造了這麼可觀的市值,我反思--如果; 微程式 有300人;他的市值該是多少? 如果其他軟體公司有300人,那他的市值又會是多少? 老實說:我並不期待也不覺得網路上說的那些暴利多了不起,我只想知道;怎樣的效率才是我們可以預期的?

又是一個盲從的案例

今天電視新聞裡播著某傳銷公司的激烈爭執,裡面有這麼一段對話,讀書怎麼會無用的? 這不是我說的,是大前研一說的...我們似乎還是非常習慣穿著名牌,描述著事不關己的事物,引經據典;卻不深究字義外的涵義,囫圇吞棗的消化大量沒有營養的口號,前幾天;甚至看到有人問一個蠢問題~~...那些趨勢大師 管理大師...之云...,如果沒有自己的思考觀點,不如;不要知悉這些所謂的名人語錄,盡信書不如無書,我想;他的重點不是無書對吧! 新聞裡另外一個有趣的對話是這樣說的: 你是誰ㄚ! 我台大的, 呵呵... 用自己的學歷來陳述讀書不重要的論點,呵呵...真是有趣的邏輯,對照他的同事所說的話,萬般皆下品惟有讀書高... 這句話不知道是矛還是盾

Quicksort in Erlang

-module(sort). -export([sort/1]). sort([]) -> []; sort([PivotRest]) -> {Smaller, Bigger} = split(Pivot, Rest), lists:append(sort(Smaller), [Pivotsort(Bigger)]). split(Pivot, L) -> split(Pivot, L, [], []). split(Pivot, [], Smaller, Bigger) -> {Smaller, Bigger}; split(Pivot, [HdTl], Smaller, Bigger) when Hd <> split(Pivot, Tl, [HdSmaller], Bigger); split(Pivot, [HdTl], Smaller, Bigger) when Hd >= Pivot -> split(Pivot, T, Smaller, [HdBigger]).

我們需要的是思考而不是口號

很多人都在談M型社會的來臨,似乎大前言一帶來了這個口號的趨勢,有很多似是而非的觀念由此衍伸,新聞裡動不動就是M型社會這個詞,然而;我們需要的是思考並不是口號;難道百年前的日本,天皇與庶民的結構就不是M型社會? 這值得我們思考,我並沒有指出現在貧富差距的現象是否正在擴大的問題,我只是講出很多人盲目追求口號的事實;是不是M化反而不是重點,我們思考口號背後的邏輯或是只是盲目 急躁的替自己或別人貼上標籤?很多東西不能囫圇吞棗照單全收的, 趨勢大師說的是方向,除了羅盤,船還需要舵才能航向目標,管理要配合規模,當規模不夠大,細部的作為應重於方向,不是說方向不重要而是對這種規模的組織;管理不是第一要務,太多的方向與趨勢預測像是座在沒有舵的船上,有再多的方向預測再精準的羅盤也無法到達目的 我們需要的是思考不是口號,這好像有點偏離這個BLOG 的調性,但是請思考看看;.NET 與JAVA 這幾年的纏鬥,以及網路上只有.NET才是王道的言論...與前述觀點是否異曲同工? 我們需要的其實是理解技術背後的邏輯,單純的技術觀點與思考,而不是隨波逐流,我們可以反過來看郭台銘最近的言論,請問他一件事,如果鴻海的績效這麼好,那麼是否代表鴻海的員工為的是興趣而不是錢;那麼在這樣的前提下,鴻海的配股如果少一半,我們應該有理由相信,鴻海會更賺錢,因為這些員工是為了興趣而工作 不會為了錢而離開,如果這個答案是否定的,那麼代表鴻海的員工是為了錢而非興趣而工作,那麼;鴻海又為何高薪聘僱那些他們自認為不是最好的員工?這似乎自相矛盾到不行,這裡只點出部份學而不思的毛病 盲從 且不經思考地"引經據典" 以及這類速食未經消化的謬誤,切勿淪為英國詩人Robert Browning在童話故事[吹笛人]所描述的耗子只知盲從起舞,多思考一些口號或技術背後真實的觀點,這樣對整體才是有益

Metaweb Query Language 這個有趣

The Metaweb Query Language (MQL) is based on JSON and query-by-example. The MQL and API documentation can be found on the Freebase website in the developers' area. There is also an online Query Editor tool, with many examples of MQL, at http://www.freebase.com/view/queryeditor/ perl CPAN Module:http://search.cpan.org/~skud/Metaweb-0.05/

pure function

A pure function: Has no side effects Return value depends only on arguments Example: sub factorial { my $n = shift; $n == 0 ? 1 : $n * factorial($n-1); } cache 只對pure function 有意義;這可以思考,查詢一個檔案的修改時間的這種function,他並非一個pure function,所以;對非pure function做cache 是沒有意義的,這裡有一個例子: Highly Recursive Functions sub fib { my ($n) = @_; return $n if $n ==0 || $n == 1; return fib($n-2) + fib($n-1); } This function is very very slow! Caching Fixes Recursion Solution: Caching @fib = (0, 1); sub fib { my ($n) = @_; return $fib[$n] if defined $fib[$n]; return $fib[$n] = fib($n-1) + fib($n-2); } fib(20) computes fib(18) and fib(19) fib(19) goes to compute fib(18) But it is already in $fib[18] Function is now very fast,Almost as fast as a pure iterative version, Unlike the iterative version, this version required no ingenuity 以上文章節錄自 http://perl.plover.com/yak/hw-dcpm/

[微程式-技術研討會]xmpp(rfc-3920) 導讀

XMPP協定導讀 一. 什麼是jabber? 什麼是xmpp? The Extensible Messaging and Presence Protocol (XMPP) is an open Extensible Markup Language XML [XML] protocol for near-real-time messaging, presence, and request-response services. The basic syntax and semantics were developed originally within the Jabber open-source community, mainly in 1999. In 2002, the XMPP WG was chartered with developing an adaptation of the Jabber protocol that would be suitable as an IETF instant messaging (IM) and presence technology. As a result of work by the XMPP WG, the current memo defines the core features of XMPP 1.0; the extensions required to provide the instant messaging and presence functionality defined in RFC 2779 [IMP REQS] are specified in Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence [XMPP IM]. 二. Socket/XMPP 程式需注意的幾個重點 1.架構(select poll epoll AIO kqueue IOCP / Thread / Process / LWP) 2.setsockopt比較值得討論的參數 setsockopt( $listen,SOL_SOCKET,SO_REUSEADDR,1); 伺服端 setsockopt( $sockfd

REST 相關文章表列

先由這裡開始吧 ! 用 SOAP 像 REST 一樣 http://blog.tcchou.org/Members/tcchou/tech/use_soap_as_rest http://eoffice.im.fju.edu.tw/phpbb/viewtopic.php?p=11623 SIP/IMS網路中的Representational State Transfer (REST) http://dev2dev.bea.com.cn/bbsdoc/20060529259.html Building Web Services the REST Way http://www.xfront.com/REST-Web-Services.html Representational State Transfer http://en.wikipedia.org/wiki/Representational_State_Transfer How to Create a REST Protocol http://www.xml.com/pub/a/2004/12/01/restful-web.html

一定要這樣玩弄技術名詞嗎?

xmpp erlang ...是什麼? 這些名詞不斷被提起,然而;這好像是在用嘴巴描述一件事不關己的事情,或是把它當成是飯後閒聊般的講述一次又一次沒有營養且毫無意義的東西,別這樣好嗎? 技術是需要深層的理解與思考的,沒有深度的探討 務實的探究 只是在浪費時間,無病呻吟是完全沒有意義的,技術的本身需要花時間去理解如果停滯不前,有再多的理由都沒有意義,不要一直在不著邊際的地方隔靴搔癢好嗎?這真是要不得的致命傷,無聊透頂了...

我跟他的觀點截然不同

我跟他的觀點截然不同 從高鐵售票系統談大型公共建設軟體開發專案 (我一直在不斷的強調,真正高負載的系統是不會使用RDBMS的,而高鐵的問題是Critical Section的問題,跟系統本身使不使用RDB是完全無關的) 1.不要猜問題所在 一個大的系統出問題時;常常很難有一致的答案,有時候表面上看起來是那樣,改完後也確實改善問題,但事實上問題並不出在這邊,這樣的事情常常發生週而復始,因此;當系統出問題時,需要猜測問題的所在,而且應該假設有錯誤的地方不在表面上看到的那樣,最後需要一針見血的猜測(排除絕對不可能的部份,試圖讓問題縮小,然後找到最可能的原因),絕大部分的問題一開始我們都不能知道答案,尤其是我們往往假設,我們所使用的工具是正確的 2.解決問題的心態 這個觀點也是錯誤的,事實上開發人員並不是在大型專案中試煉自己的技能,不斷的調適、熟練的過程...,這些應該是平時應該要做的工作,因此;我們希望RD至少有1/3 的時間在做研究 2/3 的時間來作發展,事實上我們還希望把比例顛倒過來,當一個開發人員,有了純熟的技能,自然能夠避免犯下不可彌補的錯誤,甚至在開發的一開始就能避免很多不必要的浪費,而且能夠開發出強壯且靈活有深度的架構,因為他平常已經練習好,而且它有很多時間練習,而不是把作專案或是產品當成是練兵 ======================================================== 上回遇到NOVELL 的外聘開發人員,我把我自認為RD 為軟體公司核心的理論跟他交換意見,結果他卻要自斷經脈,他說RD通常不懂市場...,寫出來的東西不知道要賣給誰,我聽完當場昏倒,我想請教的是軟體公司的核心如果不在技術,而創造技術的不是RD ,那麼這家公司確定是軟體公司嗎? 一個出色的RD 必然理解市場脈動,至少他會有一個值得參考的產品技術觀點,只有三流的軟體開發人員才會自甘墮落淪為高級打字員心裡想著何時要轉為PM...,真正出色的工程師不僅解決問題,他還能引領整個公司的發展方向,我們要看5年後的技術將往哪發展,我們要創造公司的技術研發的沿革歷史,而不僅是今年公司要賺多少錢

[微程式-技術研討會]如何使用 flash player 開發應用程式

如何使用 網頁動畫 flash player 來開發應用程式 : 決定系統配置: 策略1: Microsoft- windows+ IIS +ASP+ (access 或 ms-sql server) 策略2. L.A.M.P.: Linux+ Apache + mysql + php 當然以上只是典型搭配法, OS, http-SERVER, Programming Language,DB 皆可視實際狀況抽換之. 再到網上搜尋 adobe macromedia flash開發環境: Ex: 上軟體王 (http://www.softking.com.tw) ,打入以上字眼搜尋即可, 下載試用版來安裝; (含flash player) *************************************************** 執行架構簡述: 1. ActionScript:-- flash 自創的一套程式語言, 可用以控制動畫行為, 並與外部網頁連接通訊; 可用 javascript call flash- public- methods, 也可從 actionScript call javascript functions. 以下將舉例示範. 2. 對XML, server side-Script, GET/POST 的支援:-- (*本次的重點*) 這是最重要的一項應用, 傳統的網頁程式流程如下: ***** Request -> http-SERVER -> Asp,Php…(讀寫db) -> (配合XSLT, 或html 輸出) ***** 由於 flash actionScript 可讀寫 XML, 並代替asp,php輸出 流程變成: ***** Request(click flash動畫UI ) -> actionScript-calls (GET/POST) -> http-SERVER -> Asp,Php(讀寫db) -> 輸出XML -> flash 取回xml,並反映於動畫UI 上 ***** 它實現了一種 全UI ,全動畫, no HTML的網站; 以下將舉例. 3. 支援 TCP/IP socket port 通訊 -- 以下將示範一個以 flash 當client-ui, 實現

[微程式-技術研討會]微軟 asp.net 2.0 ajax

微軟Asp.net2.0 Ajax 一. Asp.net 2.0 Ajax 執行環境需求: Framework 2.0 IIS 開發環境: VS2005 C#.net (or VB.net) 微軟 Ajax 套件 (需另外下載) 1.下載套件: http://ajax.asp.net/ 於首頁 按下 Download ASP.NET AJAX v1.0 會進入下一個頁面 點下 Download ASP.NET Extensions V1.0 即可 下載 安裝完成後 開啟 VS2005 新增專案  選擇(VB 或 C#) Asp.net Ajax-Enabled Web Application 開啟後會發現 多了 1組元件在 工具箱 (Ajax Extensions) 2.介紹AJAX Extensions ASP.NET AJAX v1.0 使用微軟自定的 Client Script Libery 1.ScriptManager控制項 – 整個 Asp.net Ajax 的核心 ,所有要使用Ajax的功能均必須使用該元件 ,負責建立User端的javascript ,使用Ajax功能時只能有一個ScriptManager控制項。 2.UpdatePanel控制項 – 與ScriptManager搭配使用後 ,可以簡單建立完成Ajax功能。 3.UpdateProgress控制項 – 與UpdatePanel 配合 ,用來顯示 非同步postback的處理狀況 ,或將非同步postback中斷。 4.Timer 控制項 – 就如同windows應用程式所使用的Timer 元件 ,可定時於page中重整 ,但時間設定太短可能會增加Server的負擔。 5.ScriptManagerProxy 控制項 – 在Asp.net Ajax的page裡只能用一個ScriptManager, 於Asp.net MasterPage(類似Html 的框架頁)會有多個Asp.net page,如果同時間有2個以上的網頁要使用Ajax功能需使用到 ScriptManager 則子版面必須使用ScriptManagerProxy 範例(一) AspNetAJAXdemo.aspx 配合 Asp.Net 2.0 的MasterPage 解說 這5大Asp.Net Ajax 控制項 的使用方

socket 程式應該注意的參數

這幾天再寫jabber component 時發生一個奇怪的問題, 伺服器與component 固定一段時間就會終止通訊,然而連線此時還是存在的,伺服器或客乎端都沒有當掉,而且一般的jabber client 連接在上面也沒有問題,惟獨自己實做的server與client 無法通訊,後來發現;幾個socket 重要的參數,當client需要樣長時間連線時這些參數格外重要: setsockopt SOL_SOCKET, SO_KEEPALIVE setsockopt IPPROTO_TCP, TCP_KEEPIDLE setsockopt IPPROTO_TCP, TCP_KEEPCNT setsockopt IPPROTO_TCP, TCP_KEEPINTVL 程式再加了這些tcp 參數設定後,症狀完全消失

spamassassin v3.2 已釋出

其中比較有趣的是 1. Mail::SpamAssassin::Spamd::Apache2 -- mod_perl2 module, implementing spamd as a mod_perl module, contributed as a Google Summer of Code project by Radoslaw Zielinski. 沒錯apache2 已不像過去,只是一個web server,他可以在上面發展其他的protocol,除了之前看過的smtp/ftp現在又多了spamd,但之前在apache2 上開發 lprd protocol 卻發現他的效率似乎沒有比自己寫伺服器來的好,至於穩不穩定,可能要有實際的數據支持 2. sa-compile: compilation of SpamAssassin rules into a fast parallel-matching DFA, implemented in native code 這個技術我還沒時間仔細去trace,不過他應該是將spamassassin 使用的rules, 透過這個工具轉成c , 然後透過 xs 讓perl 來使用,這應該很有研究價值

xmpp 中文翻譯計畫 網站

http://wiki.jabbercn.org/space/start 另一個不錯的相關網站 http://hi.baidu.com/jabber/blog/category/Jep iq:roster 的交易過程真是複雜的可以 http://64.233.179.104/translate_c?hl=zh-TW&sl=zh-CN&u=http://www.linuxboy.net/jabber/004.html&prev=/search%3Fq%3Diq:roster%26complete%3D1%26hl%3Dzh-TW%26pwst%3D1

Concurrent Programming 相關報告

一. 我會接觸Erlang的緣由 1.RFID Middleware 2.jabber (xml::stream http://zh.wikipedia.org/wiki/Jabber) 3.ejabber (http://www.process-one.net/en/ ) 二. 現在的商業環境(web server)所面臨的問題 1.連線的數量不斷的攀升 2.連線的時間很長 傳統上httpd 使用Prefork的方式來解決,短時間時密集連線的問題,在現在的環境愈到了嚴重的挑戰,比如: HTTP_Streaming、Server Push、COMET 這些需要長時間連線的架構,使得httpd 能夠服務的連線變少了,而fork process 最大的問題是,他所需要佔用記憶體的空間過於龐大,於是其他的伺服器架構崛起(lighthttpd ghttpd …) The C10K problem( http://www.kegel.com/c10k.html ) It's time for web servers to handle ten thousand clients simultaneously, don't you think? After all, the web is a big place now. And computers are big, too. You can buy a 1000MHz machine with 2 gigabytes of RAM and an 1000Mbit/sec Ethernet card for $1200 or so. Let's see - at 20000 clients, that's 50KHz, 100Kbytes, and 50Kbits/sec per client. It shouldn't take any more horsepower than that to take four kilobytes from the disk and send them to the network once a second for each of twenty thousand clients. (That works out to $0.08 per client,

xmpp 實做的分享

最近在寫jabber server, jabber 是建構在xmpp protocol 上的一個IM,因為RFC的規格制定曠日費時,所以;jabber 以xmpp 為基礎,自己又定義了約200 個協定XEP-0001~0214,而 xmpp 主要由五個protocol所組成,分別是RFC-3920~3923 RFC-4622 我目前的進度已經可以讓像 Exodus or Pandion(IM Client) 連接上我自己實做的jabber server,預計下星期我就能讓im client 直接在上面talk,且訂閱彼此的狀態...在寫的過程成中越來越覺得他的複雜,其實,這大概是我目前寫過最複雜的伺服器,不過有一點心得可以先分享給大家,其實有一些人有一個疑問,jabber長的像什麼? 如果我們撇開他在IM的實做(處理訊息的傳遞也是一種運算資源),我們可以把它看成是一家公司,一家公司會有他對客戶的服務,而當產品要製作時,它需要資源,需要應徵人員,每個應徵的人員需要依照公司的制度來運行(component plug-in),每個人員應徵後需要報到,然後正式工作,依照給個人的專業知識分派工作 ....循環不已,當新的產品要製作時,這個公司可以再應徵新的 不同專業領域的資源,而且可以重新制定新的工作規則...而公司組織裡的這些運行其實都是靠制度,而這個制度相對於jabber 就是他的protocol,所以我把xmpp形容成是一個資源/運算的分散者,因此他可以建構一個基本的Grid Computing 環境,把每個運算工作分散到無限台機器上....如果你要問他可以做什麼? 事實上在jabber 的protocol 裡幾乎定義了絕大部分 的應用,voip 影音...,所有的運算資源都可以在事後 plug in 進去,google_talk 所實做的部份可能還不到整個jabber 的1/20,由此;我們可以看出他的規模/擴充性之大... 總之把他想成是一個有組織的公司,只是公司的規模有大有小罷了,xmpp 的工作資源分配真的跟這個描述很像,有機會自己實做一次體會一下囉!

javascript 縮減語法的工具

http://dean.edwards.name/packer/ 這是一個javascript 縮減語法的工具,他的原理其實就是把 javascript 內不必要的斷行 空白...去除,這個網站還提供php .net ...的語法縮減工具,縮減語法的好處可以降低網路頻寬的使用,參考google 的首頁就知道,google 不只把js 縮減,也把html 也縮減了,這樣可以節省大量網頁下載時所使用的頻寬 另外google 還會對輸出網頁做gzip 的壓縮,這一點我就比較不明白,事實上;使用cache 的機制會比做gzip來的更節省(http hrader: cache-control expire if-modify-since etag...尤其是針對不常變動的首頁),然而;ie 6 有一個bug,那就是當網頁使用gzip 時,上述的標頭都會失效(firefox 則不會有此問題),因此;這一點是我比較不解的地方

HINET通往大陸的海纜又斷了?

上午似乎通往對岸的網路連線都不通,我要連上 http://lukeshei.javaeye.com/ 發現無法連線,以為是只有JAVAEYE伺服器當掉,後來發現;只要是通往對岸的網站,全連不上去,難道;HINET通往大陸的海纜又斷了? ps:通往大陸的網路似乎已恢復(2007/04/15 pm1:40)

看來mybloglog的開發人員也該安裝script debugger

看來mybloglog的開發人員也該安裝script debugger(請參閱http://rd-program.blogspot.com/2007/04/js-script-debugger.html),今天進去幾個有安裝mybloglog 的網站,都發生javascript 錯誤的問題,本來我的 部落格 也有安裝測試,後來發現有錯誤就把它移除了