亚洲欧美日本在线,久久99欧美,亚洲欧美日韩在线播放http://www.aygfsteel.com/dorian/zh-cnWed, 18 Jun 2025 09:16:56 GMTWed, 18 Jun 2025 09:16:56 GMT6050 AJAX Reference Websites From Around the Worldhttp://www.aygfsteel.com/dorian/archive/2006/06/13/52351.htmlDorian's BlogDorian's BlogTue, 13 Jun 2006 02:02:00 GMThttp://www.aygfsteel.com/dorian/archive/2006/06/13/52351.htmlhttp://www.aygfsteel.com/dorian/comments/52351.htmlhttp://www.aygfsteel.com/dorian/archive/2006/06/13/52351.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/52351.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/52351.html
Since the coining of the the term AJAX over a year ago hundreds if not thousands of websites, blogs and forums have been buzzing with posts on the subject. As I've found this can sometimes leave search engines bewildered as to where the current and relevant information really exists. So I thought I would put together this list of what I think are some of the most relevant AJAX sites are worldwide.

Please consider this list of AJAX reference sites to be in its infancy. I don't read as many languages as I'd like to so the current list is rather limited by language. Please feel free to add to this list by adding a comment to this post with other useful AJAX resource sites. If you think the idea of a moderated AJAX website resource list is a good idea let me know and I'll set up a wiki.

Special thanks to all of the hard working developers who are spending their free time share their knowledge with all of us!

English
Ajaxian
Simply one of the best AJAX sites on the web. Daily updates, insightful commentary and coverage of Ajax development around the world.

AJAX Blog
Daily AJAX content with sreenshots and commentary.

AJAX Camp
Ajax Camp is a community for learning, interacting, and asking questions about web-based development using Javascript and Ajax.

AjaxForums
Very active forums focusing on AJAX

AJAX Freaks
This website exists to provide you with information to use while learning or developing AJAX. If you need AJAX Help or you would like to provide AJAX Help to other developers, you are in the right place.

AJAX Geek
All things ajax, css, dhtml, xml, javascript, and geekier

AJAX Goals
AJAX site with forums, code samples, news and articles

AJAX Guru
AJAX blog by Kishore

AJAX Impact
Very nice AJAX Community with great references

AjaxLessons
AjaxLessons.com is a resource for ajax tutorials as well as information surrounding Ajax and web 2.0.

AJAX Line
AJAX Community with a blog, forum and tutorials

Ajaxlinks
AJAX links, code samples and news

AJAX Magazine
AJAX blog focusing on new AJAX developments.

AJAXMatters
Ajax Matters is an informational site about AJAX (short for "Advanced Javascripting and XML" or "Asynchronous JavaScripting and XML") and how these technologies are applied to web development. Simply put, I started Ajax Matters to collect and share information about the XMLHTTPRequest object, JavaScript and XML.

AJAX Patterns
The publicly editable repository of all things Ajax. Design Patterns, Frameworks, Libraries, Tools and Links

AJAX Projects
AJAX Projects categorized by programming language

AJAX Review
AJAX and web 2.0 dissected. The purpose of this site is simple. Take nifty web-tools, analyze them, post screenshots, and help people find useful (and not so useful) web applications

AJAX Talk
Discuss the new web

Ajax Technology Forums
Asynchronous JavaScript And XML Ajax forums, discussions and tech issues.

Ajax Tutorial
Ajax help for newbies

AJAXwith
AJAX resources and information

AJAX World
AJAX discussion group with over a thousand members!

Aspects of AJAX
AJAX blog with loads of resources

Coding In Paradise
Excellent and thoughtful AJAX tutorials and techniques by Brad Neuberg

Cyber Dummy
AJAX code samples and source code

Fiftyfoureleven
Fiftyfoureleven.com consists of a weblog and resources that focus on web development: designing, programming, copywriting and more.

Jep's Rich User Interfaces blog
About AJAX Performance and some other things by Jep Castelein of Backbase

Logicalley
AJAX blog by Chris van de Steeg author of LiveGrid

Mozilla Developer Center
Great site to get a first look at AJAX.

Panasonic Youth
AJAX blog by Rob Sanheim with a focus on AJAX and Java Technology

Protolize
Protolize is a place where we share most commonly used and helpful tools out there that we like to use as a web designer + developer.

Rob Gonda
Great AJAX Coldfusion content with commentary

Software As Shea€?s Developed
AJAX, Java Technology, patterns, usability by Michael Mahemoff

There and Back Again
The weblog of Joshua Eichorn, AJAX, PHP and Open Source

Tony Yoo
I've been getting many requests from people asking for this page where they can access different resources that are not included in Protolize.org website. So I've decided to keep this page up for those people.

Web 2.0 Technologies
Blog with resources for AJAX, javaScript and rails

Italian
On Ajax
Italian blog covering AJAX developments

Open AJAX
Italian AJAX community site with forums, demos and articles

Sastroup
Italian language site with resources for AJAX, javascript and PHP.

German
Ajax Aspekte
German language AJAX blog with loads of resources

AJAX Community
German language site devoted to AJAX and web 2.0 developments.

Ajax Info
German language blog focusing on AJAX and web 2.0.

Ajax Scripting
A nice German language ajax blog.

Alvit - The Web Developers Handbook
A German website written in English full of web dev resources. There is a nice section on AJAX, DOM and css

Mathertel
German blog presented in English with some nice AJAX references and projects by Matthias Hertel

Japanese
Ajax Blog
Japanese Ajax presented in English (Asynchronous JavaScript + XML) blog by Yukio Andoh.

Atmarkit
Japanese language AJAX site providing code samples and source code

Hatena
Japanese site presented in English with AJAX resources

Korean

OK JSP
Korean language site coving AJAX, JSP and XML

Spanish
Ingeniuz
Spanish language site with a useful AJAX section

]]>
RFC 3261 - SIP: Session Initiation Protocolhttp://www.aygfsteel.com/dorian/archive/2006/03/01/32986.htmlDorian's BlogDorian's BlogWed, 01 Mar 2006 03:28:00 GMThttp://www.aygfsteel.com/dorian/archive/2006/03/01/32986.htmlhttp://www.aygfsteel.com/dorian/comments/32986.htmlhttp://www.aygfsteel.com/dorian/archive/2006/03/01/32986.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/32986.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/32986.html閱讀全文

]]>
網(wǎng)絡(luò)上真的可以賺錢?!http://www.aygfsteel.com/dorian/archive/2006/02/23/32072.htmlDorian's BlogDorian's BlogThu, 23 Feb 2006 02:33:00 GMThttp://www.aygfsteel.com/dorian/archive/2006/02/23/32072.htmlhttp://www.aygfsteel.com/dorian/comments/32072.htmlhttp://www.aygfsteel.com/dorian/archive/2006/02/23/32072.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/32072.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/32072.html原來是真的。我也無聊中俗了把,在網(wǎng)絡(luò)中賺錢。
 
 
http://www.ads4cn.com/newsbar/refferer.asp?greco              (newsbar廣告)
 
http://www.8qu.net/register.asp?net=greco                      (八趣通寶)
 
http://www.sohoads.com/sabar/reg.asp?sj=greco                   (soho廣告)
 
點擊以上地址,免費注冊即可。
 
 
簡單介紹如下:
 
【 newsbar】
 
NewsBar是由新聞時報和易趣通過中國廣告網(wǎng)發(fā)起的廣告條賺錢方式,所以真實性絕對不容質(zhì)疑,創(chuàng)辦于2004-5-23。NewsBar自創(chuàng)辦以來,以其良好的信譽得到網(wǎng)友廣泛支持,幾乎一直以每7秒增加一個新會員的速度飛速發(fā)展。目前已經(jīng)突破800,000會員。NewsBar會員中,有部分成員每月收入均超過¥1000元。 努努力,下一個兼職月賺千元的就是你哦。

    注冊地址: http://www.ads4cn.com/newsbar/refferer.asp?greco
 
【八趣通寶】
 
八趣通寶是國內(nèi)最新的網(wǎng)賺,發(fā)展空間巨大,掛著就能賺錢?。∠駫欤眩岩粯訏熘湍茌p松狂掙人民幣或Q幣,登陸后只有銅錢大的圖標在任務(wù)欄里不影響任何上網(wǎng)空間。另外它操作也比較人性化,已經(jīng)通過本站的收款驗證,所以在這里強強烈推薦!當(dāng)然,這些都是在免費加入的前提下。不必擔(dān)心上當(dāng)受騙。
 
 
【soho】
 
這是咱中國人自己的廣告運營商,網(wǎng)站正處于高速發(fā)展期。基礎(chǔ)打好了,往后您的收益可是相當(dāng)可觀的,而您要做的只是坐在電腦前看看廣告,就跟看電視廣告一樣。看電視可沒人因為您看了廣告給您錢??!
 
 
 
【個人心得】
1、無需一點的財力投入,只賺不賠,是個有前景的好生意。
2、精力投入要量力而為。不要為了這點小錢浪費,否則得不償失。
3、積極發(fā)展下線伙伴,高高興興一起賺錢。
 
大家也可以玩玩試試。
 
 
PS:本人已經(jīng)不玩了,呵呵,費時費力。


]]>
愛過了http://www.aygfsteel.com/dorian/archive/2006/01/04/26547.htmlDorian's BlogDorian's BlogWed, 04 Jan 2006 06:04:00 GMThttp://www.aygfsteel.com/dorian/archive/2006/01/04/26547.htmlhttp://www.aygfsteel.com/dorian/comments/26547.htmlhttp://www.aygfsteel.com/dorian/archive/2006/01/04/26547.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/26547.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/26547.html

]]>
真正的佛法http://www.aygfsteel.com/dorian/archive/2005/12/19/24657.htmlDorian's BlogDorian's BlogMon, 19 Dec 2005 09:53:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/12/19/24657.htmlhttp://www.aygfsteel.com/dorian/comments/24657.htmlhttp://www.aygfsteel.com/dorian/archive/2005/12/19/24657.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/24657.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/24657.html有一天,有心禪師剛好出們,有一禪僧來此參訪,希望能當(dāng)面請求開示,有得師弟不得已,只好硬著頭皮以“無言對答”的方法來接見這位禪僧。
兩人對面都不發(fā)一言,只是用手指筆畫,不久之后,禪僧非常欣喜地向有得禮拜,拜后告辭。路上遇到有心禪師,因此就夸有得實在是個了不起的禪師法將,并滔滔地說著他向有得請益的經(jīng)過道:“首先,我豎一指,表示大覺世尊,人天無二;他就豎起兩指,表示佛、法二者,一體兩面,是二而一。之后,我豎三指,表示佛、法、僧三寶,和合而往,缺一不可;他就在我面前捏起拳頭,表示三者皆由一悟而得。至此,我已技窮,只得向他禮拜而出”。
禪僧說后離去,有心禪師回來,有得非常氣氛地向他報告道:“剛才有一個禪僧非常無理,他一進門向我瞧了一眼,接著就豎起一指,諷刺我只有一只眼睛!我因他是來參訪的禪僧,對他客氣,所以我就豎起兩指,表示他有兩只眼睛,非常幸運。誰知道這個人非常無理,竟然舉起三只指頭,暗示他和我兩個人只有三只眼睛,你說氣不氣人?因此我舉起拳頭,正要好好揍他,他就急忙磕個頭跑掉了”。
有心禪師聽后,不禁啞然失笑。
在人際交往的過程中,常常發(fā)生溝通上的誤會,避免這種誤會,彼此暢通無阻地交流,才能達到交際的目的。


]]>
新買了只筆記本http://www.aygfsteel.com/dorian/archive/2005/12/19/24627.htmlDorian's BlogDorian's BlogMon, 19 Dec 2005 05:47:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/12/19/24627.htmlhttp://www.aygfsteel.com/dorian/comments/24627.htmlhttp://www.aygfsteel.com/dorian/archive/2005/12/19/24627.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/24627.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/24627.html










]]>
豁達是幸福人生的奧秘http://www.aygfsteel.com/dorian/archive/2005/12/19/24626.htmlDorian's BlogDorian's BlogMon, 19 Dec 2005 05:41:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/12/19/24626.htmlhttp://www.aygfsteel.com/dorian/comments/24626.htmlhttp://www.aygfsteel.com/dorian/archive/2005/12/19/24626.html#Feedback1http://www.aygfsteel.com/dorian/comments/commentRss/24626.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/24626.html    人生百年,七十、八十也算是命大了。人這一輩子與其悲悲戚戚、郁郁寡歡地過,倒不如痛痛快快、瀟瀟灑灑地活??扇松皇?,那么多的風(fēng)風(fēng)雨雨,坎坎坷坷,怎么才能活得精精神神的?豁達才是人生的奧秘?;磉_是一種超脫,是自我精神的解放,人要是成天被名利纏得牢牢的,得失算得精精的,樹葉子掉下來悲悲傷傷的,那還豁達個啥!豁達就要有點豪氣,乍暖還寒尋常事,淡妝濃抹總相宜。凡事到了淡,就到了最高境界,天高云淡,一片光明。人肯定要有追求,追求是一回事,結(jié)果是一回事。你就記住一句話:事物的發(fā)生發(fā)展都必須符合時空條件,有“時”無“空”,有“空”無“時”都不行,那你就得認了.人活得累,是心累,常嘮叨這幾句話就會輕松得多:“功名利祿四道墻,人人翻滾跑得忙;若是你能看得穿,一生快活不嫌長?!?br>    豁達是一種寬容?;趾甏蠖?,胸?zé)o芥蒂,肚大能容,吐納百川。飛短流長怎么樣,黑云壓城又如何?心中自有一束不滅的陽光。以風(fēng)清月朗的態(tài)度,從從容容地對待一切,待到廓清云霧,必定是柳暗花明。
豁達是一種開朗。豁達的人,心大,心寬,悲愁痛苦的情緒,都在嬉笑怒罵,大喊大叫中斯個粉碎。你說,世界上的事都公平?不公平有的是,你能讓它都公平?我們要按生活本來的面目看生活,而不是按著自己的意愿看生活。風(fēng)和日麗,你要欣賞,光怪陸離,你也要品嘗,這才自然,你就不會有太多牢騷,太多的不公平。不過,“月有陰晴圓缺”對誰都一樣,“十年河?xùn)|,十年河西”,一切都會隨著時間的推移而變化。陰陽對峙,此消彼長,升降入出,這就是生機,拿這大宇宙來看你這個小宇宙,你能超越的了?
    豁達是一種自信,人要是沒有精神支撐,剩下的就是一具皮囊。人的這個精神就是自信,自信就是力量,自信給人智勇,自信可以使人消除煩惱,自信可以使人擺脫困境。有了自信,就充滿了光明。



]]>
QQ的HTTP接口探究http://www.aygfsteel.com/dorian/archive/2005/12/12/23482.htmlDorian's BlogDorian's BlogMon, 12 Dec 2005 06:54:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/12/12/23482.htmlhttp://www.aygfsteel.com/dorian/comments/23482.htmlhttp://www.aygfsteel.com/dorian/archive/2005/12/12/23482.html#Feedback1http://www.aygfsteel.com/dorian/comments/commentRss/23482.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/23482.html
1、研究說明

  Tencent在tqq.tencent.com的8000有一個使用HTTP的QQ接口,通過這個接口,可以進行一些基本的操作,如:登陸、登出、改變登陸狀態(tài)(上線、忙碌、離線、隱身)、添加刪除好友、查看好友信息、發(fā)送驗證信息(接受被加為好友、申請加對方為好友、拒絕被加為好友)、收發(fā)用戶消息、系統(tǒng)信息。

  目前我研究的是1.1版本的HTTP QQ協(xié)議,研究是微程在的成果上進行的,不敢說有什么超越,只不過更為詳細和準確。

2、接口說明:

  接口位置:tqq.tencent.com:8000
  通信協(xié)議:HTTP
  數(shù)據(jù)傳輸方法:POST
  HTTP請求格式:

POST HTTP/1.1
Host: tqq.tencent.com:8000
Content-Type: text/plain; charset=UTF-8
Content-length: 長度
Connection: close

數(shù)據(jù)

  其中長度為 數(shù)據(jù) 的長度,數(shù)據(jù)的格式:
  VER=1.1&CMD=命令&SEQ=標記&UIN=QQ號&....

  以上4個參數(shù)是每個請求都必有的。其中,VER表示協(xié)議的版本,目前為1.1,據(jù)說1.2已經(jīng)出來了,這個亂寫的話,服務(wù)器返回NULL; CMD為操作的指令,有Login、List、Query_Stat、GetInfo、AddToList、Ack_AddToList、 DelFromList、Change_Stat、GetMsgEx、CLTMSG、Logout;SEQ為當(dāng)前請求的標記,防止重復(fù)發(fā)送,可以用當(dāng)前時間,也可以用隨機數(shù);UIN是當(dāng)前執(zhí)行操作的QQ號。不過不同的CMD還需要不同的參數(shù),下面我就公布我的研究成果。

3、研究方法:

  我對目前網(wǎng)上的資料不夠滿意,就自己寫程序,發(fā)送多條相同CMD不同參數(shù)的請求,根據(jù)服務(wù)器的返回,來做判斷。感興趣的朋友可以參考一下,此處可以跳過。
  下面我公布我探測的代碼(PHP):

[code:1:1bbf2dec18]
<?
$uin = "QQ號";
$pwd = md5("QQ密碼");

//登陸測試
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
//注意:登陸測試不能同時進行,必須等到服務(wù)器認為QQ斷開了,才能夠測試,不然結(jié)果不可信
/*******
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=0&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=2&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=3&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=1223423545756679";
*******/


//得到好友列表
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin;
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";

//得到在線列表
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin;
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";

//查看好友信息
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=0&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=1&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=2&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=3&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=4&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=5&UN=106814";

//增加好友
$poststring[] = "VER=1.1&CMD=AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";

//發(fā)送驗證
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=0&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=1&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=2&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=3&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=4&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=5&RS=TEST";

//刪除好友
$poststring[] = "VER=1.1&CMD=DelFromList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";

//改變狀態(tài)
for($i=0;$i<=60;$i=$i+5)
{
$poststring[] = "VER=1.1&CMD=Change_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&ST=".$i;
}

//獲得消息
$poststring[] = "VER=1.1&CMD=GetMsgEx&SEQ=".rand(1000,9000)."&UIN=".$uin."";

//發(fā)送消息
$poststring[] = "VER=1.1&CMD=CLTMSG&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&MG=TEST";

//登出
$poststring[] = "VER=1.1&CMD=Logout&SEQ=".rand(1000,9000)."&UIN=".$uin."";

$file = fopen("p.txt","w");

foreach($poststring as $k=>$v)
{
ss_timing_start();
$fp = fsockopen('tqq.tencent.com', '8000', $errno, $errstr, $timeout = 10); 

if(!$fp){ 
 //error tell us 
 $content = $k.chr(13).chr(10)."ERROR:$errstr ($errno)"; 
   
}else{ 

  //send the server request 
  fputs($fp, "POST HTTP/1.1\r\n"); 
//  fputs($fp, "Host: $host\r\n"); 
//  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); 
  fputs($fp, "Content-length: ".strlen($v)."\r\n"); 
  fputs($fp, "Connection: close\r\n\r\n"); 
  fputs($fp, $v . "\r\n\r\n"); 

  //loop through the response from the server 
  $res = "";
  while(!feof($fp)) { 
   $res .= fgets($fp, 4096); 
  } 
  //close fp - we are done with it 
  fclose($fp); 

  $content = $v.chr(13).chr(10).$res;

ss_timing_stop(); 
$content .= chr(13).chr(10)."Time: ".ss_timing_current().chr(13).chr(10)."--------------------------------------".chr(13).chr(10);
fputs($file,$content);
}
fclose($file);
?>
<?
function ss_timing_start ($name = "default") { 
global $ss_timing_start_times; 
$ss_timing_start_times[$name] = explode(' ', microtime()); 

function ss_timing_stop ($name = "default") { 
global $ss_timing_stop_times; 
$ss_timing_stop_times[$name] = explode(' ', microtime()); 

function ss_timing_current ($name = "default") { 
global $ss_timing_start_times, $ss_timing_stop_times; 
if (!isset($ss_timing_start_times[$name])) { 
return 0; 

if (!isset($ss_timing_stop_times[$name])) { 
$stop_time = explode(' ', microtime()); 

else { 
$stop_time = $ss_timing_stop_times[$name]; 

$current  =  $stop_time[1]-$ss_timing_start_times[$name][1]; 
$current += $stop_time[0]-$ss_timing_start_times[$name][0]; 
return $current; 

?>
[/code:1:1bbf2dec18]

4、研究成果:

(1).登陸
  說明:在你做任何其他操作以前,你必須登陸。只有在登陸以后,你的其他指令才有可能被正確執(zhí)行(返回RES=0),不然服務(wù)器會返回RES= 20,不過有個例外,就是logout。當(dāng)你成功登陸以后,服務(wù)器就會根據(jù)你的IP*和參數(shù)中的UIN來驗證身份。一臺電腦可以同時登陸多個QQ,互不影響,就是因為有參數(shù)UIN。
  *至于我能夠確定服務(wù)器是通過IP來驗證的,是因為服務(wù)器不可能通過我的請求獲得其他信息了^_^

  提交數(shù)據(jù):VER=1.1&CMD=Login&SEQ=標記&UIN=QQ號&PS=QQ密碼&M5=1&LC=9326B87B234E7235
  說明:QQ密碼是通過md5加密的字符串,在PHP中可以直接用md5()進行加密;
     M5這個參數(shù)的作用還不清楚,但最好為1。
     LC這個參數(shù)有點神秘,不能有絲毫改動,不然服務(wù)器就沒有響應(yīng)(沒有響應(yīng)就是返回NULL)。

  返回:VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=0&RS=0&HI=60&LI=300(成功)
     VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=0&RS=1&RA=密碼錯誤(密碼錯誤)
     VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=5(QQ號非法,如100)
     NULL(UIN為字符、PS為空、LC錯誤)

(2).得到好友列表
  提交數(shù)據(jù):VER=1.1&CMD=List&SEQ=標記&UIN=QQ號&TN=160&UN=0
  說明:TN、UN還不清楚具體表示什么,但是TN的值會影響返回的結(jié)果,有沒有UN對結(jié)果沒有影響

  返回:VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=0&FN=9(當(dāng)TN=0或沒有TN參數(shù)時,F(xiàn)N表示好友數(shù))
     VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=0&FN= 1&SN=9&UN=3814526,...,(當(dāng)TN存在且非0時,F(xiàn)N=1,SN表示好友數(shù),UN為好友列表,用","分割)
     VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、TN、UN為字符)

(3).得到在線好友列表
  提交數(shù)據(jù):VER=1.1&CMD=Query_Stat&SEQ=標記&UIN=QQ號&TN=50&UN=0
  說明:TN、UN還不清楚具體表示什么,但是TN的值會影響返回的結(jié)果,有沒有UN對結(jié)果沒有影響

  返回:VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES= 0&FC=0,&FN=1&SN=1&ST=10,&UN=106814,&NK=Hackfan  好,(當(dāng)TN存在且非0時,F(xiàn)N=1,SN表示在線好友數(shù),F(xiàn)C、ST、UN、NK的值用','分割,分別表示頭像、狀態(tài)、號碼、昵稱)
     VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、TN、UN為字符)
  說明:FC為QQ頭像的的ID,如的頭像ID為270,那么其頭使用的圖片為91.bmp,其算法為ID/3+1;
     ST為QQ用戶的狀態(tài),10為上線,20為離線(或隱身),30為忙碌;

  特別說明:當(dāng)參數(shù)TN=0或不存在時,服務(wù)器返回:
VER=1.1&CMD=Query_Stat&SEQ=標記&UIN=QQ號
HTTP/1.1 200 OK
Server: tencent imserver/1.0.0
Content-Type: text/plain; charset=UTF-8
Content-Length: 56

VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=0&FN=1
HTTP/1.1 200 OK
Server: tencent imserver/1.0.0
Content-Type: text/plain; charset=UTF-8
Content-Length: 77

VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=0&FC=&FN=1&SN=0&ST=&UN=&NK=
  返回了2次,第一次的結(jié)果中,F(xiàn)N為在線好友數(shù),第二次返回的數(shù)據(jù)基本沒用。

(4).查看好友信息
  提交數(shù)據(jù):VER=1.1&CMD=GetInfo&SEQ=標記&UIN=QQ號&LV=查詢類型&UN=被查詢QQ號碼
  說明:LV=0,1為精簡查詢,LV=2為普通查詢,LV>=3為詳細查詢

  返回:VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&LV=0&UN=106814&NK=Hackfan 好(精簡查詢)
     VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&AD =地址&AG=19&EM=hackfan@qq.com&FC=0&HP=http: //blog.hackfan.net&JB=學(xué)生
&LV=2&PC=郵編&PH=電話&PR= The guy is updating to .NET Frameword......&PV=江蘇&RN=胡吉陽&SC= 畢業(yè)院校&SX=0&UN=106814&NK=Hackfan 
好(普通查詢)
     VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&AD =地址&AG=19&BT=2&CO=6&CT=蘇州&CV=%01&CY=中華人民共和國
&EM=hackfan@qq.com&FC=0&HP=http://blog.hackfan.net&ID =-&JB=學(xué)生&LV=3&MO=136********&MT=0&MV=&PC=郵編& PH=電話&PR=The guy is 
updating to .NET Frameword......&PV=江蘇&RN=胡吉陽&SC=畢業(yè)院校&SH=3&SX=0&UN=106814&NK=Hackfan 好(詳細查詢)
     VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、LV、UN為字符)

  說明:AD為聯(lián)系地址
     AG為年齡
     BT為血型
     CO為星座
     CT為城市
     CV為未知*
     CY為國家
     EM為Email
     FC為頭像
     HP為網(wǎng)站
     ID為未知
     JB為職業(yè)
     LV為查詢代碼(就是發(fā)送的LV)
     MO為移動電話
     MT為未知
     MV為未知
     PC為郵編
     PH為聯(lián)系電話
     PR為簡介
     PV為省
     RN為真實姓名
     SC為畢業(yè)院校
     SH為生肖
     SX為性別
     UN為QQ號
     NK為昵稱

     血型:0 => '',
        1 => 'A型',
        2 => 'B型',
        3 => 'O型',
        4 => 'AB型',
        5 => '其他'


     星座:0 => '',
        1 => '水瓶座',
        2 => '雙魚座',
        3 => '牡羊座',
        4 => '金牛座',
        5 => '雙子座',
        6 => '巨蟹座',
        7 => '獅子座',
        8 => '處女座',
        9 => '天秤座',
        10 => '天蝎座',
        11 => '射手座',
        12 => '摩羯座'

     生肖:0 => '',
        1 => '鼠',
        2 => '牛',
        3 => '虎',
        4 => '兔',
        5 => '龍',
        6 => '蛇',
        7 => '馬',
        8 => '羊',
        9 => '猴',
        10 => '雞',
        11 => '狗',
        12 => '豬'

     性別:0 => '男',
        1 => '女'

(5).增加好友
  提交數(shù)據(jù):VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&UN=對方QQ號

  返回:VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=0&UN=對方QQ號(允許被加為好友,此時他已經(jīng)是你的好友)
     VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=1&UN=對方QQ號(需要驗證)
     VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=2&UN=對方QQ號(決絕被加為好友)
     VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、UN為字符)

(5).發(fā)送驗證
  說明:1、如果你加對方為好友,你需要發(fā)送驗證
     2、對方加你為好友,發(fā)送了驗證,你要通過或者拒絕
     這2種情況需要發(fā)送驗證消息

  提交數(shù)據(jù):VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&UN=對方QQ號&CD=驗證類型&RS=理由
  說明:CD為0表示“通過驗證”,CD為1表示“拒決加為對方為好友”,CD為2表示“為請求對方加為好友”。

  返回:VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=0(成功)
     VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=3(*)
     VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、UN、CD為字符,RS為非UTF-8字符)
  *如果服務(wù)器返回RES=3,那么這次對話的響應(yīng)時間在20s。當(dāng)發(fā)送驗證請求的時候,必須連發(fā)2次(請求內(nèi)容不必一樣),其中一條RES=3,對方收不到,一條RES=0,對方能夠收到。當(dāng)CD>=3時,RES=3,響應(yīng)時間20s。

(6).刪除好友
  提交數(shù)據(jù):VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&UN=刪除的QQ號

  返回:VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=0&(成功)
     VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=3(響應(yīng)時間30s,重復(fù)發(fā)送的后果)
     VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、UN為字符)

(7).改變狀態(tài)
  提交數(shù)據(jù):VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&ST=狀態(tài)代碼
  說明:狀態(tài)代碼:10為上線,20為離線,30為忙碌,40為隱身,其他視為非法

  返回:VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=0&(成功)
     VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=3(失敗,原因不明,響應(yīng)時間20s,可能是過于頻繁的改變狀態(tài)引起的)
     VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN為字符,ST非法)

  特別說明:如果你改變好友,將會給所有好友發(fā)送一條系統(tǒng)信息,內(nèi)容就是狀態(tài)代碼;如果隱身,發(fā)送的狀態(tài)代碼為20,表示離線。
       同理,當(dāng)你的好友改變狀態(tài),你也會收到一條系統(tǒng)信息。

(9).獲得消息
  提交數(shù)據(jù):VER=1.1&CMD=GetMsgEx&SEQ=標記&UIN=QQ號

  返回:VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=0& MN=4&MT=99,99,99,9,&UN=36791785,99833581,99833581,106814,&MG= 20,30,10,hi ,(MN表示信息數(shù)量,MT、UN、MG的值用","分割,分別表示消息類型、發(fā)送人號碼、消息內(nèi)容)
     VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=0&MN=0&MT=&UN=&MG=(表示沒有信息)
     VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN為字符)
  說明:關(guān)于MT:
       9為用戶消息,99為系統(tǒng)消息,2為請求信息,3為通過驗證,4為拒絕被加好友
     關(guān)于MG:
       當(dāng)MT=9時,MG為用戶發(fā)送的消息內(nèi)容
       當(dāng)MT=99時,
         MG=10(QQ_STATUS_ONLINE)表示對方上線
         MG=20(QQ_STATUS_OFFLINE)表示對方下線
         MG=30(QQ_STATUS_BUSY)表示對方進入忙碌狀態(tài)
       當(dāng)MT=2時,MG為對方請求你驗證的信息
       當(dāng)MT=3時,表示對方通過你的驗證
       當(dāng)MT=4時,MG為對方拒絕你理由

(10).發(fā)送消息
  提交數(shù)據(jù):VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&UN=對方QQ號&MG=發(fā)送內(nèi)容

  返回:VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=0&(成功發(fā)送,對方不一定能收到哦)
     VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=3(發(fā)送過快)
     VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸)
     NULL(UIN、UN為字符,MG含非UTF-8字符)
  說明:1、當(dāng)你發(fā)消息時,以下情形對方可能看不到(其實是收到了,QQ不提示)你發(fā)送的消息:
       你倆互為陌生人,且對方?jīng)]有和你說過話
       你在他的陌生人列表里,并且他沒有和你說過話(沒有驗證)
     2、當(dāng)你過快發(fā)送消息時,系統(tǒng)會給你一個懲罰,RES=3,相應(yīng)時間20s
     3、當(dāng)我發(fā)送含有小寫字母h的信息時,服務(wù)器有可能返回NULL

(11).登出
  提交數(shù)據(jù):VER=1.1&CMD=Logout&SEQ=標記&UIN=QQ號

  返回:VER=1.1&CMD=LOGOUT&SEQ=標記&UIN=QQ號&RES=0(成功,好像永遠成功的,不管你是否登陸)
     NULL(UIN為字符)


]]>
生活狀態(tài)http://www.aygfsteel.com/dorian/archive/2005/11/28/21699.htmlDorian's BlogDorian's BlogMon, 28 Nov 2005 09:43:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/11/28/21699.htmlhttp://www.aygfsteel.com/dorian/comments/21699.htmlhttp://www.aygfsteel.com/dorian/archive/2005/11/28/21699.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/21699.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/21699.html    今天中午原本要到一個地方去辦事的,因為對方臨時有事,所以……
    一個人在擁擠的馬路上閑逛,走著走著,走到了一個大型綠地。一眼望去,滿眼
綠意真是舒坦。走到了一張空椅上,座了下來。任憑微風(fēng)扶過臉龐,太陽輕撫額頭,
秋天的那股子清香換洗肺中的濁氣。輕輕閉上眼睛享受午后的優(yōu)閑。這種感覺,這種
愜意,好像好久都沒有過了,留在記憶中的也不過是在兒時的情景中了。是?。∵@種
感覺在我生命中消失已經(jīng)很久了。自已所需要的那種生活也已封存在內(nèi)心的某個角落
里,永不見天日。
    現(xiàn)在想想究竟什么才是自己所要的生活?是夠單純?是夠簡單?是一簞食,一瓢
飲?還是其他什么精神上的東西?
    每天早上準時起床,準時擠車,準時上班。上班時間里除了處理掉一些日常事務(wù)
之外,還要多做一些能被同事所認同的事情。計劃著要買房子,計劃著要結(jié)婚,考慮
將來的正常生活,還必須得存一筆錢,長輩這邊還要在節(jié)假日不時的關(guān)懷和孝敬一下。
學(xué)習(xí)方面還要不時的緊跟潮流……這樣的生活把人的靈魂折磨的酸痛不堪。生活時刻
在繼續(xù),我們也時刻在放棄,逃避,對抗的沖動中掙扎。但悲哀的是,大多數(shù)情況下,
每晚只能在想著一切美好生活中昏昏沉沉地睡去,然后等著明天地太陽升起再重復(fù)著
今天。
    生活在都市中,很多人地生活大概都這樣地吧!也許這就是生活吧!誰知道呢!
反正現(xiàn)在我是要睡覺了,等著明天再重復(fù)一次今天地生活。Good night!


ps. 希望夢可以做地好一點^_^



]]>
Windows XP 模擬 Windows Vistahttp://www.aygfsteel.com/dorian/archive/2005/11/21/20759.htmlDorian's BlogDorian's BlogMon, 21 Nov 2005 06:15:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/11/21/20759.htmlhttp://www.aygfsteel.com/dorian/comments/20759.htmlhttp://www.aygfsteel.com/dorian/archive/2005/11/21/20759.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/20759.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/20759.html
t_vista1b.jpg

t_vista2b.jpg

t_vista3b.jpg

下面是教你怎么樣模擬的詳細教程:
http://www.joejoe.biz/joejoe/vista.htm

還有一些資源包下載:

http://crystalxp.zerackiel.net/bricopack-vista-inspirat.php
http://www.winmatrix.com/forums/index.php?showtopic=5684
http://www.stardock.com/products/stylevista/download.asp


]]>
JavaScript 調(diào)試新武器http://www.aygfsteel.com/dorian/archive/2005/11/08/18801.htmlDorian's BlogDorian's BlogTue, 08 Nov 2005 08:40:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/11/08/18801.htmlhttp://www.aygfsteel.com/dorian/comments/18801.htmlhttp://www.aygfsteel.com/dorian/archive/2005/11/08/18801.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/18801.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/18801.htmlJavaScript 調(diào)試新武器

 

Venkman 是為 基于 Mozilla 的瀏覽器而提供的一個強大的 JavaScript 調(diào)試環(huán)境。本文將對Venkman 做一個簡單的介紹。

 

環(huán)境:Mozilla Firefox 1.0.4

JavaScript Dubugger 0.9.84 (此為Venkman 的代號)

 

第一步就是給 Firefox 安裝此插件。

 

點這里下載并安裝插件

 

安裝好后重啟一下 Firefox,就可在菜單工具 -> JavaScript Debugger 點擊來運行 Venkman。

 

Venkman 界面如下:

 t_venkman.jpg

 

 

第二步,我們來寫一個有錯誤的代碼:

 

一個名為 Test.js JavaScript 腳本文件。

 

1function test(str) {
2    alert(Str);
3}

 

一個名為 Test.html 的網(wǎng)頁文件。

 

1<HTML>
2    <HEAD>
3    <Script Language="JavaScript" src="Test.js">Script>
4    HEAD>
5    
6    <BODY onload="test('Hello')">
7    BODY>
8HTML>

 

我們可以看到在 Test.js 中的方法 test(str) 中有個不易被發(fā)覺得錯誤”alert(Src)”

 

這個 Src ,我們并沒有聲明過,像這種誤打在平時的寫代碼過程中經(jīng)常有這種問題。好,我們來看看 Venkman 是如何來捕捉這個 Bug 的。

 

你可以在 Venkman 中打開這個 Test.js 文件,也可以不用打開,因為在你打開了 Venkman 后,用 Firefox 執(zhí)行任何帶有 JavaScript 的網(wǎng)頁,如果發(fā)生錯誤或者異常,Venkman 都會自動打開 這個 出錯的腳本文件。當(dāng)然前提是你已經(jīng)對 Venkman 進行過設(shè)置了(Debug -> Error Triger -> Stop For Errors Debug -> Throw Triger -> Sotp For Exceptions)。

 

第三步,用 Friefox 打開這個 Test.html 文件。你就會看到 Venkman 報告類似于如下的錯誤:

Stopped for error handler.
#0: function test(str=string:"Hello") in line 2
001: function test(str) {
002:     alert(Str);
Continuing from error handler.
Exception ``ReferenceError: Str is not defined'' thrown from function test(str=string:"Hello") in line 2.
[e] message = [string] "Str is not defined"
Stopped for thrown exception.
#0: function test(str=string:"Hello") in line 2
001: function test(str) {
002:     alert(Str);
Continuing from thrown exception.
Error ``ReferenceError: Str is not defined'' [xs] in file ``
file:///E:/Dorian/MyDocument/Test.js'', line 2, character 0.

 

其中可以很清除的看到 Str 是未聲明過的。

 

 

呵呵,這個 JavaScript 調(diào)試器的確很強大,在這里只不過做一個簡單的介紹罷了。



]]>
Spring Web Flows - 實踐指南 (1)http://www.aygfsteel.com/dorian/archive/2005/11/02/17770.htmlDorian's BlogDorian's BlogWed, 02 Nov 2005 02:38:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/11/02/17770.htmlhttp://www.aygfsteel.com/dorian/comments/17770.htmlhttp://www.aygfsteel.com/dorian/archive/2005/11/02/17770.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/17770.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/17770.htmlSpring Web Flows

實踐指南

原文:Spring Web Flows - A Practical Guide

Author: Erwin Vervaet (Mail To)

translator: Dorian Shi (Mail To)

這篇文章介紹了 Spring Web Flows。用實例來說明基于 Web Flow 的原理。文章也提供了一個使用 Web Flow 和 Spring 框架來構(gòu)建 Web 應(yīng)用的實踐指南.

假定讀者已經(jīng)了解一些 J2EE Web 應(yīng)用、XML、Spirng 框架,當(dāng)然還有 Spring 的 Web MVC 框架。你可以查看資源來了解這些信息。

介 紹

在一個 Web 應(yīng)用程序中傳統(tǒng)的定義一個頁面流程是一個一點也不直觀的過程。像 Struts 和 Spring 這樣的框架促使你把頁面流程放進單獨的控制器和視圖中。舉個例子:Struts 會把請求映射到一個 Action。這個 Action 會選擇一個視圖并轉(zhuǎn)發(fā)到這個視圖。雖然這是一個簡單并且實用的方法,但它有一個主要的缺點:到 Action 的定義文件 struts-config.xml 中看看,Web 應(yīng)用程序的所有頁面流程一點也不清晰。因為 Action 不能簡單的被重用,靈活性同樣也會遭到損害。

Spring Web MVC 框架提供了一個細微的高級功能:表單控制器執(zhí)行一個預(yù)先定義好的工作流。有兩種控制器提供了這一特性:SimpleFormController 和 AbstractWizardFormController。然而,這些仍舊是一種一般化的硬編碼的工作流概念。

到這里就要引入 Spring 的 Web Flow 了。它允許你用清晰簡單的方式展現(xiàn) Web 應(yīng)用的頁面流程。就像我們要看到的一樣,他有許多有點:

  • 一個 Web 應(yīng)用的頁面流程通過 Web Flow 定義文件(一個 XML 文件)清楚的展現(xiàn)出來。
  • Web Flow 可以被設(shè)計成自包含的(slef contained)。這意味著允許你在很多情形中把你應(yīng)用程序的一部分看成一個組件并且使之重用。
  • Web Flow 可以在一個 Web 應(yīng)用中總是使用一樣的手法來定義任何合理的頁面流程。你無需在非常特殊的情況下被迫使用專門的控制器。

現(xiàn)在 Web Flow 有足夠的能力表示由一系列 State 組成的一個 Web 流程。State 是事件發(fā)生的流程點:舉例來說就是顯示一個視圖或者執(zhí)行一個 Action。每個 State 有一個或多個 transitions ,他們習(xí)慣于從一個 State 轉(zhuǎn)到另一個 State 。一個 transitions 被一個 Event 所觸發(fā)。 為了讓你對 Web 流程有一個大概的印象,下面這段 XML 定義了一個 Web 流程,大致等效于實現(xiàn)一個 SimpleFormController 的工作流 。對于這個 Web 流程的原理將在本文的稍后詳細說明。

 

熟悉業(yè)務(wù)過程管理(BPM) 的讀者將認識到 Web 流程是普通工作流的一個特例,所以他們在理論上可以使用像 JBMP(請查看資源) 來實現(xiàn)一般化的 BMP 系統(tǒng)。既然簡單是 Spring Web Flow 的重要設(shè)計目的,所以它不會去使用這種一般化的工作流引擎。在我們 Web 應(yīng)用中,我們會用一個簡單的 Web 流程來描述一個頁面的流程。

本文的剩余部分會用一個實例來說明這方面內(nèi)容,可以使用這個連接來下載源代碼:PhoneBook.war.zip ?,F(xiàn)在下載并解壓縮這個文件可能是個好注意,它能夠在你閱讀文章的時候幫助你學(xué)習(xí)。

 

實 例

實例是一個使用 Spring Web Flow 的電話簿應(yīng)用程序,我們將使用圖解的方式來說明他的功能意圖。這是一個典型的公司內(nèi)網(wǎng)的應(yīng)用程序,你會發(fā)現(xiàn)大部分功能可能你已經(jīng)熟悉他的概念了。他主要允許你使用一些標準來查找公司的某位職員。一旦當(dāng)你發(fā)現(xiàn)了某個適當(dāng)?shù)厝耍憔涂梢愿M一步的查看他的信息,像電話號碼、辦公桌位置、他的經(jīng)理是誰、他的同事有那些等等。圖1的草圖描繪了這個電話簿應(yīng)用程序的基本需求和頁面流程。

t_phoneBookAppSketch.jpg

圖 1. 實例概覽

就像草圖描述的那樣,應(yīng)用程序?qū)嶋H有兩個模塊組成: Search 模塊允許我們查找一個我們要的人,而 Detail 模塊則顯示查找到這個人的詳細信息。Search 模塊將會使用 Detail 模塊來顯示查詢結(jié)果中某人的詳細信息。草圖同樣顯示了我們可以在明細頁直接訪問被查人同事的明細。這意味著 Detail 模塊可以遞歸使用 Detail 模塊來顯示同事的明細。

文章稍后,將看到我們可以在一個單獨的 Web 流程中定義各個模塊。這意味著我們會有兩個流程:一個 Search 流程和一個 Detail 流程。

因為本文的焦點是實現(xiàn)應(yīng)用程序的 Web 接口,所以我們將會提供包含了硬編碼啞數(shù)據(jù)的基本業(yè)務(wù)層。領(lǐng)域?qū)ο蟊话赾om.ervacon.springframework.samples.phonebook.domain 包中。我們有 4 個業(yè)務(wù)類:

  • Person         — 一個簡單的 JavaBean 包含人員的信息 (名, 姓, 電話號碼 ...)。Person 對象使用 User Id 來唯一識別,是 UserId 類的一個實例。一個 Person 類同樣也維護他同事們的引用,同樣都是 Person 類的實例。
  • UserId         — 這是一個主要對象用來識別一個 Person。
  • PhoneBookQuery — 一個查詢對象,在電話簿中描述一個查詢。我們可以是使用姓,名或者姓名來查詢。
  • PhoneBook      — 我們的主要業(yè)務(wù)門面(Business Facade)。這個類僅僅定義了一些啞數(shù)據(jù)和兩個業(yè)務(wù)方法:
    •    public List query(PhoneBookQuery query)
    •    public Person getPerson(UserId userId)

確定好業(yè)務(wù)功能性后,我們準備使用 Spring Web Flow 來為電話簿應(yīng)用程序開發(fā) Web 接口。

設(shè)置 Spring MVC

在我們開始使用 Web Flow 之前,我們需要配置一個基本的 Spring Web 應(yīng)用程序。要做的第一件事是我們必須確定在 /WEB-INF/lib 目錄下有我們所要的 jar 文件。一個 Spring Web Flow 的應(yīng)用程序需要4個jar在類路進下: 包含 Spring 框架自身的 Spring.jar;包含 Web Flow 控制器實現(xiàn)的 webflow.jar; 記錄日志所需的 commons-logging.jar 和用來讀取和分析 Web Flow XML 文件的 jdom.jar;

由于這將是一個標準的 J2EE Web 應(yīng)用程序,所以需要在 /WEB-INF 目錄下有一個 web.xml 部署文件。下面是此部署描述文件的代碼,它描述了如下事物:

  • contextLoader servlet,當(dāng) Servlet 引擎(如 Tomcat )在加載我們的 Web 應(yīng)用程序的時候進行初始化。
  • 一個名為 phoneBook 的 Spring Dispatcher Servlet。這個 Servlet 配置了處理所有相匹配的請求 (如 /phoneBook/*)。
  • index.jsp 將會成為應(yīng)用程序的歡迎頁面。
  • 實例的 JSP 頁面使用到了 Spring 的 標簽庫,所以我們需要聲明它。實際的 TLD 文件存儲在 /WEB-INF/tld 目錄下。
 1xml version="1.0" encoding="UTF-8"?>
 2DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 3    "http://java.sun.com/dtd/web-app_2_3.dtd">
 4<web-app id="WebApp">
 5    <servlet>
 6        <servlet-name>contextLoaderservlet-name>
 7        <servlet-class>org.springframework.web.context.ContextLoaderServletservlet-class>
 8        <load-on-startup>1load-on-startup>
 9    servlet>
10    <servlet>
11        <servlet-name>phoneBookservlet-name>
12        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
13        <load-on-startup>2load-on-startup>
14    servlet>
15    <servlet-mapping>
16        <servlet-name>phoneBookservlet-name>
17        <url-pattern>/phoneBook/*url-pattern>
18    servlet-mapping>
19    <welcome-file-list>
20        <welcome-file>index.jspwelcome-file>
21    welcome-file-list>
22    <taglib>
23        <taglib-uri>/WEB-INF/tld/spring.tldtaglib-uri>
24        <taglib-location>/WEB-INF/tld/spring.tldtaglib-location>
25    taglib>
26web-app>

在 Spring MVC 應(yīng)用程序中,我們需要一個 Spring 應(yīng)用程序上下文。它是你在應(yīng)用程序上下文中定義業(yè)務(wù)對象最好的地方。這樣你就能夠干凈的區(qū)分你的業(yè)務(wù)對象和任何 Web 應(yīng)用工件(artifacts)。讓我們跟隨這個練習(xí)創(chuàng)建一個 /WEB-INF/applicationContext.xml 文件來定義我們的業(yè)務(wù)門面:phoneBook Bean。

1xml version="1.0" encoding="UTF-8"?>
2DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
3    "http://www.springframework.org/dtd/spring-beans.dtd">
4<beans>
5    <bean id="phoneBook" class="com.ervacon.springframework.samples.phonebook.domain.PhoneBook">
6    bean>
7beans>

我們需要在 web.xml 中適當(dāng)?shù)亩x Dispatcher Servlet。 這個 Servlet 將會以默認得方式讀取 /WEB-INF/ServletName-servlet.xml 配置文件。在我們的例子中將會是 /WEB-INF/phoneBook.xml。我們唯一需要配置的事是一個 View Resolver。這個 View Resolver 負責(zé)將視圖名(如:"criteria")解析成真實的視圖路進(如:/WEB-INF/JSP/criteria.jsp)。下面這段使用的是 InternalResourceViewResolver。 所以在我們的實例中,所有頁面的位置將會在 /WEB-INF/jsp 目錄中。

我們假設(shè)所有其他的 Dispatcher Servlet 配置為默認值。這意味著我們將使用一個簡單的 BeanNameUrlHandlerMapping 來定位將要處理請求的控制器。對于如何配置 Dispatcher Servlet 的詳細信息請參考 Spring 的參考文檔(查看資源)。

1xml version="1.0" encoding="UTF-8"?>
2DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
3    "http://www.springframework.org/dtd/spring-beans.dtd">
4<beans>
5    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
6        <property name="prefix"><value>/WEB-INF/jsp/value>property>
7        <property name="suffix"><value>.jspvalue>property>
8    bean>
9beans>


待續(xù)……
 

參考資源:



]]>
糟糕的客戶體驗http://www.aygfsteel.com/dorian/archive/2005/11/01/17640.htmlDorian's BlogDorian's BlogTue, 01 Nov 2005 01:27:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/11/01/17640.htmlhttp://www.aygfsteel.com/dorian/comments/17640.htmlhttp://www.aygfsteel.com/dorian/archive/2005/11/01/17640.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/17640.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/17640.html昨天因為需要到銀行去辦理保險授權(quán)轉(zhuǎn)賬業(yè)務(wù),所以到了一家工商銀行。

一進銀行,就看到辦理業(yè)務(wù)的人很多,隨即找了一條比較人少的隊伍排著。

雖然我這隊在我之前才6個人,沒想到還是排了將近50分鐘。

在排隊的過程中,始終有人埋怨銀行工作人員業(yè)務(wù)不熟悉,等等之類的話。

可我始終想,排歸排,等歸等,畢竟我們中國人多,很多客戶對銀行的業(yè)務(wù)也不知道,

還有甚者盡然連密碼設(shè)沒設(shè)都不知道,這些都是造成業(yè)務(wù)處理慢的原因。

……

總算輪到我了,告知銀行工作人員說我要辦理轉(zhuǎn)賬授權(quán)后,她向我指指左前方到個人理財中心去辦理。

我的天,我頓時傻掉了,我排了近50分鐘,難道就為了這一句指路話?

無奈,隨又到個人理財中心等了近30分鐘辦理了轉(zhuǎn)賬授權(quán)業(yè)務(wù)。其間聽到前面的人也都是這么過來的……


辦理完業(yè)務(wù)隨后打量了一番銀行,看見裝修豪華的業(yè)務(wù)大廳除了若干監(jiān)視器外竟然沒有一個導(dǎo)向牌。

還有,工作人員的灰色面孔(好像欠他100萬似的)。

這些都是導(dǎo)致客戶體驗非常糟糕的直接原因。

我之前都是通過自動取款,存款,轉(zhuǎn)帳機來辦理自己的需求的。

即使有些業(yè)務(wù)(如:購買基金),都是在其他銀行辦理的。

至少其他銀行在客戶進門后,讓客戶自動提取一張自己業(yè)務(wù)需求的號碼紙,

隨即播報號碼到那個柜臺去辦理業(yè)務(wù)。

類似這種方式就能解決這方面的客戶體驗問題。

當(dāng)然還有其他的一些問題亟待解決。

我不希望在若干年的將來外資銀行把中國銀行打的一敗涂地……


 



]]>
EMMA-OpenSource 的 Java code coverage 工具http://www.aygfsteel.com/dorian/archive/2005/10/27/17066.htmlDorian's BlogDorian's BlogThu, 27 Oct 2005 08:32:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/10/27/17066.htmlhttp://www.aygfsteel.com/dorian/comments/17066.htmlhttp://www.aygfsteel.com/dorian/archive/2005/10/27/17066.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/17066.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/17066.html最近看到有一個opensource 的 EMMA,所以就Down下來玩玩。
看了它的Quick Start發(fā)現(xiàn)可以配合JUnit之類的測試工具執(zhí)行GUI程序。
把它自帶的程序試了一下,它會產(chǎn)生記錄顯示剛才的操作執(zhí)行了多少多少部分的代碼。
覺得蠻好玩的,就自己試了一下:

環(huán)境: EMMA v2.0,build4127
              OS Windows 2003 server
              JDK v1.4.2


EMMA提供兩種使用模式,一個是指令模式(command mode)另外一個是使用Ant。

將下載下來的JAR(emma.jar&emma_ant.jar)復(fù)制到你classpath所在的JRE目錄
 ex.E:\Program\J2SDK\jre\lib\ext
然后在命令行下輸入Java emmarun,會看到它的使用方法和如何配參數(shù)。如果沒看到,那
說明沒有把剛才兩個Jar包放在classpath中。

隨后寫一個Hello world程序

1public class HelloWorld {
2    public HelloWorld() {
3        System.out.println("Constructor");
4    }

5    public static void main(String[] args) {
6        new HelloWorld();
7        System.out.println("Hello World!");
8    }

9}

編譯HelloWorld.java
 javac -d classes -g HelloWorld.java
運行HelloWorld
 java -cp classes HelloWorld
現(xiàn)在加入EMMA
 java emmarun -cp classes HelloWorld
可看到類似如下輸出:
Constructor
Hello World!
EMMA: writing [txt] report to [F:\我的文檔\EMMA\coverage.txt] ...
你可以看一下執(zhí)行后在你目錄中的coverage。txt文件
內(nèi)容類似如下:
[EMMA v2.0.4217 report, generated Thu Oct 28 09:09:45 CST 2004]
-------------------------------------------------------------------------------
OVERALL COVERAGE SUMMARY:

[class, %] [method, %] [block, %] [line, %] [name]
100% (1/1) 100% (2/2) 100% (14/14) 100% (6/6) all classes

OVERALL STATS SUMMARY:

total packages: 1
total classes: 1
total methods: 2
total executable files: 1
total executable lines: 6

COVERAGE BREAKDOWN BY PACKAGE:

[class, %] [method, %] [block, %] [line, %] [name]
100% (1/1) 100% (2/2) 100% (14/14) 100% (6/6) default package
-------------------------------------------------------------------------------

這些數(shù)據(jù)蠻難看懂的,不過EMMA提供三種輸出格式 txt,html,xml

接下來看看可以加入原代碼的一份html報表。

這樣來執(zhí)行:
 java emmarun -r html -sp . -cp classes HelloWorld
 //-sp 代表源文件的所在地,我的源文件在當(dāng)前目錄,故用 "."
執(zhí)行后你就可以看到EMMA生成了一個叫coverage的目錄。在里面的許多html就是帶源文件的一份報表。如下所示:

t_o_1.jpg

t_o_2.jpg


這份東西還是蠻詳細的,可以看到那些東西或者說那些狀況沒有考慮到的。
至于ant的實現(xiàn)以后要用時在說吧!畢竟這東西好玩歸好玩,暫時還用不上。^_^



]]>
一個JavaScript的代碼高亮引擎http://www.aygfsteel.com/dorian/archive/2005/10/27/17051.htmlDorian's BlogDorian's BlogThu, 27 Oct 2005 07:03:00 GMThttp://www.aygfsteel.com/dorian/archive/2005/10/27/17051.htmlhttp://www.aygfsteel.com/dorian/comments/17051.htmlhttp://www.aygfsteel.com/dorian/archive/2005/10/27/17051.html#Feedback0http://www.aygfsteel.com/dorian/comments/commentRss/17051.htmlhttp://www.aygfsteel.com/dorian/services/trackbacks/17051.html剛才在閑逛的時候發(fā)現(xiàn)了一個用 JavaScirpt 實現(xiàn)的代碼高亮引擎。

用了一下,發(fā)現(xiàn)滿好用的。

這是他解析后的代碼
t_HighLight_Demo.jpg

Download:  http://www.dreamprojections.com/SyntaxHighlighter/
Examples:  http://www.dreamprojections.com/SyntaxHighlighter/Examples.aspx


遺憾的是這個引擎沒有 Java 的高亮。

所以自己添加了一個解析 Java 的類。

隨后在使用的過程中又發(fā)現(xiàn),代碼段只能打開,而不能收起。

故又修改了他的核心代碼。

現(xiàn)把這兩個 JS 文件放上來^_^

shCore.js      :  http://www.aygfsteel.com/Files/dorian/shCore.zip
shBrushJava.js :  http://www.aygfsteel.com/Files/dorian/shBrushJava.zip



]]>
主站蜘蛛池模板: 曲麻莱县| 道真| 郑州市| 乳源| 惠安县| 荃湾区| 资源县| 南川市| 卢湾区| 阆中市| 中西区| 海晏县| 平安县| 沙湾县| 镇巴县| 德江县| 峨眉山市| 隆林| 涪陵区| 桐梓县| 常熟市| 盐山县| 麻阳| 丽江市| 瑞昌市| 花莲县| 信宜市| 兴隆县| 崇阳县| 杨浦区| 邵阳市| 汤原县| 连州市| 彩票| 繁昌县| 班戈县| 霍州市| 滨海县| 寻乌县| 玉环县| 万年县|