tag:blogger.com,1999:blog-31320941121141177562024-03-19T11:16:10.396+08:00Welcome to Cheng Chun Kit's BloggerIt's for CS5281 Internet Application Development. From Student to Professional.Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.comBlogger27125tag:blogger.com,1999:blog-3132094112114117756.post-63075686222481802372009-04-04T01:28:00.000+08:002009-04-04T01:31:06.431+08:00My first post on iphone撰文纪念<br /><br /><br />-- Post From My iPhone<br />Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-83292240022479170822009-03-31T11:43:00.001+08:002009-03-31T11:43:16.440+08:00Good app<br />My first post from my iphone!<br /><br />-- Post From My iPhone<br />Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-19676027680148454942008-02-14T10:39:00.000+08:002008-02-14T10:40:00.415+08:00sopcast<iframe id="SopFrame" name="SopFrame" frameborder=0 src="http://www.sopcast.cn/channel/getchlist.iframe.html" height="350" width="800" scrolling = no>The browder doesn't support iframe.</iframe>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-71817858299190948692007-04-25T16:52:00.000+08:002007-04-25T16:57:30.531+08:00WK13 - Adobe Flex<span style="color: rgb(51, 51, 255);font-size:130%;" ><span style="font-size:130%;">What's Flex?</span><br /><br /></span>Flex was initially released as a J2EE application or JSP tag library that compiles MXML and ActionScript on-the-fly into Flash applications (binary SWF files). Later versions of Flex support the creation of static files that are compiled at authoring time and can be deployed online without the need for a server license.<br /><br />The goal of Flex is to allow Web application developers to quickly and easily build rich Internet applications. In a multi-tiered model, Flex applications serve as the presentation tier.<br /><br />Flex features development of graphic user interfaces using an XML-based language called MXML. Flex comes with various components and features that make capabilities such as web services, remote objects, drag and drop, sortable columns, charting/graphing, built in animation effects, and other interface interactions simple. Since the client only loads once, application workflow is significantly improved versus HTML based applications (eg. PHP, ASP, JSP, CFMX) which require executing templates on the server with every action. Flex's language and file structure are seeking to decouple application logic from design.<br /><br />The Flex server also acts as a gateway to allow the client to communicate with XML Web Services and Remote Objects (such as Coldfusion CFCs, Java Classes, and anything else that supports the Action Message Format).<br /><br />Commonly mentioned as alternatives to Flex are OpenLaszlo, Ajax and Windows Presentation Foundation technologies.<br /><br /><span style="color: rgb(51, 51, 255);font-size:130%;" >Flex Application Development Process</span><br /><br /><ol><li>Define an application interface using a set of pre-defined components (forms, buttons, and so on)</li><li>Arrange components into a user interface design</li><li>Use styles and themes to define the visual design</li><li>Add dynamic behavior (one part of the application interacting with another, for example)</li><li>Define and connect to data services as needed</li><li>Build the source code into a SWF file that runs in the Flash Player</li></ol><span style="font-size:85%;"><span style="font-style: italic; color: rgb(204, 51, 204);">Reference:</span><br /></span><ul><li><span style="font-size:85%;"><a href="http://www.adobe.com/products/flex/" class="external text" title="http://www.adobe.com/products/flex/" rel="nofollow">Official Adobe Flex site</a></span></li><li><span style="font-size:85%;"><a href="http://www.adobe.com/support/documentation/en/flex/index.html" class="external text" title="http://www.adobe.com/support/documentation/en/flex/index.html" rel="nofollow">Flex documentation</a></span></li><li><span style="font-size:85%;"><a href="http://www.flex.org/" class="external text" title="http://www.flex.org" rel="nofollow">Flex.org - Flex Community technical and support resource</a></span></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-47047410008772730512007-04-14T19:46:00.000+08:002007-04-14T20:00:35.910+08:00WK12 - Sematic Web ? Web 3.0 ?<div align="justify"><strong><span style="font-size:180%;color:#3366ff;">Web 3.0</span></strong><br />Web 2.0 came to describe almost any site, service, or technology that promoted sharing and collaboration right down to the Net's grass roots. That includes blogs and wikis, tags and RSS feeds, <a href="http://del.icio.us/" target="blank">del.icio.us</a> and <a href="http://www.flickr.com/" target="blank">Flickr</a>, <a href="http://www.myspace.com/" target="blank">MySpace</a> and <a href="http://www.youtube.com/" target="blank">YouTube</a>. Because the concept blankets so many disparate ideas, some have questioned how meaningful—and how useful—it really is, but there's little doubt it owns a spot in our collective consciousness. Whether or not it makes sense, we now break the history of the Web into two distinct stages: Today we have Web 2.0, and before that there was Web 1.0.<br />Which raises the question: What will Web 3.0 look like?<br />Yes, it's too early to say for sure. In many ways, even Web 2.0 is a work in progress. But it goes without saying that new Net technologies are always under development—inside universities, think tanks, and big corporations, as much as Silicon Valley start-ups—and blogs are already abuzz with talk of the Web's next generation.<br />To many, Web 3.0 is something called the Semantic Web, a term coined by Tim Berners-Lee, the man who invented the (first) World Wide Web. In essence, the Semantic Web is a place where machines can read Web pages much as we humans read them, a place where search engines and software agents can better troll the Net and find what we're looking for. "It's a set of standards that turns the Web into one big database," says Nova Spivack, CEO of Radar Networks, one of the leading voices of this new-age Internet.</div><div align="justify"><br /><strong><span style="font-size:180%;color:#3366ff;">Semantics and Search</span></strong><br />The Semantic Web, like Web 2.0, is a nebulous concept. "Considering that the very word semantic is all about meaning, it's ironic that the term Semantic Web is so ill defined," says Radar Networks' Spivack. Some, like Spivack, fall into the Berners-Lee camp. Others, like AdaptiveBlue's Iskold, believe in the artificial-intelligence method. And then there are the others: the semantic searchers.<br />Rather than providing automatic information retrieval, semantic search engines seek to improve on the Google-like search model we've grown so accustomed to. The idea is to move beyond mere keyword searches to a better understanding of natural-language queries. "Right now, search engines can't tell the difference between Paris Hilton and the Hilton in Paris," says Jeff Bates, cofounder of Slashdot, one of the driving forces behind Web 2.0. "There's millions of dollars being spent trying to better optimize search, and that's a big part of what the Semantic Web will be."<br />This kind of natural-language processing has been in development for years, but it, too, has found its way onto the public Web. Several start-ups, including Powerset and TextDigger, are hard at work on semantic search engines based on the open-source academic project WordNet. It should be noted, however, that natural-language search could very well play a role in the Berners-Lee Semantic Web. His is merely a framework to enable all sorts of apps, and semantic search might be one of them. </div><div align="justify"><br /><span style="font-size:180%;color:#3366ff;"><strong>A Web Beyond Words</strong></span><br />Though Web 3.0 is most often associated with the Semantic Web, the two are far from synonymous. Countless other concepts are poised to play a role in our online future, and many go beyond semantics, using space, images, and sound.<br />One possibility is the so-called 3D Web, a Web you can walk through. Many see this as an extension of the "virtual worlds" popping up on today's Internet. In the future, they say, the Web will be one big alternate universe reminiscent of Second Life and There.com. But others scoff at this notion, claiming it's just a less-efficient version of today's Internet. They see the 3D Web not as an alternate universe but as a re-creation of our existing world. On the 3D Web, you could take a virtual stroll through an unfamiliar neighborhood shopping for houses or visit famous sites you've never seen. Google Earth already offers an experience not far removed from this. "Today, with a service like Google Earth, you can zoom in on Seattle and see how tall the buildings are," says Syracuse University's Lankes. "It really isn't that much of a leap to actually put you, or your avatar, in Seattle and let you walk around."<br />The trouble is, 3D only goes so far. It doesn't enhance the very 2D world of words, pictures, and video. For many, the more interesting idea is a mediacentric Web, offering not just language-based search but pure media search. Today we depend on keywords even when searching for images, videos, and songs—a woefully inadequate system. Companies like Ojos and Polar Rose are working to reinvent media search, hinting at a world where we search for media with other media—not just keywords (see "Look Ma, No Keywords!" opposite).<br />Then there's the Pervasive Web, a Web that's everywhere. Today's Web already extends beyond the desktop, to cell phones and handhelds, but it might extend even further—into our everyday surroundings. At the MIT Media Lab, Maes is toying with the idea of Web-connected bathroom mirrors. As you brush your teeth in the morning, there's the latest news. Meanwhile, with his blog, the End of Cyberspace, Alex Soojung-Kim Pang of the Institute for the Future envisions the Web automating much of what goes on in the home. Your windows, for instance, could automatically open when the weather changes. With help from mesh networks—wireless networks consisting of tiny nodes that can route data to and from almost anywhere—the possibilities are nearly endless.</div><div align="justify"> </div><div align="justify"></div><div align="justify"></div><div align="justify"><span style="font-size:85%;color:#cc33cc;"><em>Reference:</em></span></div><div align="justify"><a href="http://www.pcmag.com/article2/0,1895,2102852,00.asp"><span style="font-size:85%;color:#3366ff;">http://www.pcmag.com/article2/0,1895,2102852,00.asp</span></a> </div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com2tag:blogger.com,1999:blog-3132094112114117756.post-12114652635467227672007-04-04T14:34:00.000+08:002007-04-04T15:20:59.673+08:00WK11 - Free tools available for ASP.NET.<p style="font-weight: bold; color: rgb(255, 0, 0);" class="MsoNormal"><span lang="EN-US">MonoDevelop</span></p> <p class="MsoNormal"><span lang="EN-US">MonoDevelop is an open source GNOME IDE primarily designed for C# and other .NET languages. </span></p> <p class="MsoNormal"><span lang="EN-US">It runs on Linux, Mac OS X and latest version is 0.13/22 Feb 2007. </span></p> <p class="MsoNormal"><span lang="EN-US">Feature: 1) class management; 2) Built-in Help; 3) Code Completion; 4) GUI Designer; 5) Project Support.</span></p> <p style="color: rgb(51, 102, 255); font-style: italic;" class="MsoNormal"><span lang="EN-US" style="font-size:85%;">Reference:</span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:85%;">Wikipedia - <a href="http://en.wikipedia.org/wiki/MonoDevelop">http://en.wikipedia.org/wiki/MonoDevelop</a></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:85%;">MonoDevelop website – <a href="http://www.monodevelop.com/">http://www.monodevelop.com</a></span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://www.monodevelop.com/"><br /></a></span></p> <p style="color: rgb(255, 0, 0); font-weight: bold;" class="MsoNormal"><span lang="EN-US">SharpDevelop</span></p> <p class="MsoNormal"><span lang="EN-US">It is a free and open source IDE for C#, VB.NET and Boo programming languages. There is a port for MonoDevelop which runs on other operating systems. Latest version is 2.1.0.2429/Mar 7, 2007. </span></p> <p class="MsoNormal"><span lang="EN-US">Feature: 1) Windows Forms designer for C#, VB.NET and Boo; 2) Code Completion; 3) integrated debugger; 4) Declaration tooltips; 5) Code AutoInsert; 6) Subversion integration; 7) XML documentation preview; 8) Intelligent braces; 9) Easily extensible with add-ins and external tools; 10) Rich project options; 11) Syntax highlighting for C#, HTML, ASP, ASP.NET, VBScript, VB.NET, XML;</span></p> <p style="font-style: italic; color: rgb(51, 102, 255);" class="MsoNormal"><span lang="EN-US" style="font-size:85%;">Reference:</span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:85%;">SharpDevelop - <a href="http://www.sharpdevelop.com/OpenSource/SD/">http://www.sharpdevelop.com/OpenSource/SD/</a></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:85%;">Wikipedia - <a href="http://en.wikipedia.org/wiki/SharpDevelop">http://en.wikipedia.org/wiki/SharpDevelop</a></span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://en.wikipedia.org/wiki/SharpDevelop"><br /></a></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p style="font-weight: bold; color: rgb(255, 0, 0);" class="MsoNormal"><span lang="EN-US">Microsoft Visual Studio Express</span></p> <p class="MsoNormal"><span lang="EN-US">It is a set of free charge of integrated development environments developed by Microsoft that are lightweight versions of the Microsoft Visual Studio 2005. The idea of express editions, according to Microsoft, is to provide a streamlined, easy-to-use and easy-to-learn IDEs for less serious users, such as hobbyists and students.</span></p> <p class="MsoNormal"><span lang="EN-US">It consists of 6 separate products: Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, Visual C++ 2005 Express Edition, Visual J# 2005 Express Edition, Visual Web Developer 2005 Express Edition, SQL Server 2005 Express Edition.</span></p> <p style="color: rgb(51, 102, 255); font-style: italic;" class="MsoNormal"><span style="font-size:85%;"><span lang="EN-US">Reference:</span></span></p> <p class="MsoNormal"><span style="font-size:85%;"><span lang="EN-US">Microsoft Visual Studio Express Official Website - <a href="http://msdn.microsoft.com/vstudio/express/">http://msdn.microsoft.com/vstudio/express/</a></span></span></p> <p class="MsoNormal"><span style="font-size:85%;"><span lang="EN-US">Wikipedia - <a href="http://en.wikipedia.org/wiki/Visual_Web_Developer_2005_Express_Edition">http://en.wikipedia.org/wiki/Visual_Web_Developer_2005_Express_Edition</a></span></span></p>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-48389228352767784922007-04-01T20:46:00.000+08:002007-04-20T16:54:25.816+08:00WK10 - Web 2.0 Reading Plan<p align="center"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.web2logo.com/"><img id="BLOGGER_PHOTO_ID_5051093408683432098" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; CURSOR: pointer" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaw8tVBtCjGC3vg_tA8Nu5voyfPgq_eTfsVNLxImcKlAEL9V6nMXTWAf2J63p56qLc0xTP_DJZtcCwOcOLhZh8BnKuKnvhvAtkK50JqaF_xLlUb25VdVPfxrKFjd7LeRdNxtIxCs6vcuXM/s400/web+2.0+logo.jpg" border="0" /></a></p><br /><div style="TEXT-ALIGN: left"><span style="font-size:130%;"><span style="COLOR: rgb(255,102,0);font-family:trebuchet ms;" >Here is my web 2.0 reading plan for the Easter Holiday.</span></span> <div style="TEXT-ALIGN: center"><br /></div></div><ul><li>O'Reilly -- What Is Web 2.0 : Tim O'Reilly attempts to clarify just what is meant by Web 2.0, the term first coined at a conference brainstorming session between O'Reilly Media and MediaLive International, which also spawned the Web 2.0 Conference.<br /><a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html"><span style="COLOR: rgb(51,102,255)">http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html</span></a></li></ul><ul><li>Web 2.0 Explorer ZDNet.com <a href="http://blogs.zdnet.com/web2explorer/"><span style="COLOR: rgb(51,102,255)">http://blogs.zdnet.com/web2explorer/</span></a></li></ul><ul><li>How do you get people to use Web 2.0 technology? Web 2.0 Explorer ZDNet.com <a href="http://blogs.zdnet.com/web2explorer/?p=342"><span style="COLOR: rgb(51,51,255)">http://blogs.zdnet.com/web2explorer/?p=342<br /></span></a></li></ul><ul><li>Web 2.0? It doesn’t exist IP Telephony, VoIP, Broadband ZDNet.com <a href="http://blogs.zdnet.com/ip-telephony/?p=805"><span style="COLOR: rgb(51,51,255)">http://blogs.zdnet.com/ip-telephony/?p=805</span></a></li></ul><ul><li>New York Press - ADARIO STRANGE - Media Threat <a href="http://www.nypress.com/19/50/news&columns/feature.cfm"><span style="COLOR: rgb(51,102,255)">http://www.nypress.com/19/50/news&columns/feature.cfm</span></a></li></ul><ul><li>Programmable Web: Mashups and the Web as Platform : Authoritative source for Web 2.0 Mashups and APIs. News, analysis, and more. Because the world is your programmable oyster. <a href="http://www.programmableweb.com/"><span style="COLOR: rgb(51,102,255)">http://www.programmableweb.com/</span></a></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Programmable Web: Web 2.0 Reference Center</span> http://www.programmableweb.com/reference</span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Relax, Everything Is Deeply Intertwingled: Web 2.0</span> http://ifindkarma.typepad.com/relax/2004/10/web_20.html</span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Rough Type: Nicholas Carr's Blog: The amorality of Web 2.0 <a href="http://roughtype.com/archives/2005/10/the_amorality_o.php"><span style="COLOR: rgb(51,51,255)">http://roughtype.com/archives/2005/10/the_amorality_o.php</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">The Best of Web 2.0 - Guides by Digital Trends:The Best of Web 2.0 - We gather the best Web 2.0 sites that we could find and show you why they make a difference. - Digital Trends is your final destination for unbiased guides and product information. At Digital Trends we promise to provide professional <a href="http://reviews.digitaltrends.com/guide46.html"><span style="COLOR: rgb(51,102,255)">http://reviews.digitaltrends.com/guide46.html</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">The Best Web 2.0 Software of 2005 (Dion Hinchcliffe's Web 2.0 Blog) <a href="http://web2.wsj2.com/the_best_web_20_software_of_2005.htm"><span style="COLOR: rgb(51,102,255)">http://web2.wsj2.com/the_best_web_20_software_of_2005.htm</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">The Logos of Web 2.0 The FontFeed at FontShop <a href="http://www.fontshop.com/fontfeed/archives/web-20-logos.cfm"><span style="COLOR: rgb(51,102,255)">http://www.fontshop.com/fontfeed/archives/web-20-logos.cfm</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">The new web rewards and risks for business <a href="http://www.pcworld.ca/news/column/45dcb02d0a01040800cd2bfc8c6a6d79/pg1.htm"><span style="COLOR: rgb(51,102,255)">http://www.pcworld.ca/news/column/45dcb02d0a01040800cd2bfc8c6a6d79/pg1.htm</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">The online viral advertising era has arrived : It was the year of web 2.0 technology in 2006 and an era of social networking, which spawned interactive communities of cyber-congregators seeking to share common interests and passions. <a href="http://www.pcworld.ca/news/column/452b385a0a01040800cd2bfc389926d6/pg1.htm"><span style="COLOR: rgb(51,102,255)">http://www.pcworld.ca/news/column/452b385a0a01040800cd2bfc389926d6/pg1.htm</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Tim Berners-Lee on Web 2.0: "nobody even knows what it means" <a href="http://arstechnica.com/news.ars/post/20060901-7650.html"><span style="COLOR: rgb(51,102,255)">http://arstechnica.com/news.ars/post/20060901-7650.html</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Web 2.0 <span style="COLOR: rgb(51,102,255)"><a href="http://www.paulgraham.com/web20.html"><span style="COLOR: rgb(51,102,255)">http://www.paulgraham.com/web20.html</span> </a><a style="COLOR: rgb(51,102,255)" href="http://www.somethingawful.com/d/hogosphere/web-20.php">http://www.somethingawful.com/d/hogosphere/web-20.php</a></span></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Web 2.0 - Wikipedia, the free encyclopedia <a href="http://en.wikipedia.org/wiki/Web_2"><span style="COLOR: rgb(51,102,255)">http://en.wikipedia.org/wiki/Web_2<br /></span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Web 2.0 doesn't live up to its name. - By Paul Boutin - Slate Magazine <a href="http://www.slate.com/id/2138951/"><span style="COLOR: rgb(51,102,255)">http://www.slate.com/id/2138951/</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Web 2.0 Sites <a href="http://web2.ajaxprojects.com/"><span style="COLOR: rgb(51,102,255)">http://web2.ajaxprojects.com/</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Web 2.0 Workgroup - A network of Web 2.0 resources <a href="http://web20workgroup.com/"><span style="COLOR: rgb(51,102,255)">http://web20workgroup.com/</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Wired 12.10: The Long Tail <a href="http://www.wired.com/wired/archive/12.10/tail.html"><span style="COLOR: rgb(51,102,255)">http://www.wired.com/wired/archive/12.10/tail.html</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">Wired 13.08: We Are the Web <a href="http://www.wired.com/wired/archive/13.08/tech_pr.html"><span style="COLOR: rgb(51,102,255)">http://www.wired.com/wired/archive/13.08/tech_pr.html</span></a></span></span></li></ul><ul><li><span style="COLOR: rgb(51,102,255)"><span style="COLOR: rgb(0,0,0)">YouTube - Web 2.0 <a href="http://www.youtube.com/watch?v=nsa5ZTRJQ5w"><span style="COLOR: rgb(51,102,255)">http://www.youtube.com/watch?v=nsa5ZTRJQ5w</span></a></span></span></li></ul><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/nsa5ZTRJQ5w"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/nsa5ZTRJQ5w" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br /><p></p><p></p><ul><li>The Long Tail - Wikipedia, the free encyclopedia <a style="COLOR: rgb(51,102,255)" href="http://en.wikipedia.org/wiki/The_Long_Tail">http://en.wikipedia.org/wiki/The_Long_Tail</a></li></ul><ul><li>YouTube - Web 2.0 ... The Machine is Us/ing Us <a style="COLOR: rgb(51,102,255)" href="http://www.youtube.com/watch?v=6gmP4nk0EOE&eurl=http%3A%2F%2Fjobster%2Eblogs%2Ecom%2F">http://www.youtube.com/watch?v=6gmP4nk0EOE&eurl=http%3A%2F%2Fjobster%2Eblogs%2Ecom%2F</a></li></ul><ul><li>Andy's Bookmarks - all my bookmarks are belong to you <a style="COLOR: rgb(51,102,255)" href="http://www.cs.cityu.edu.hk/~hwchun/Courses/links/AndyBookmarks.html#%5B%5BWeb%202.0%5D%5D">http://www.cs.cityu.edu.hk/~hwchun/Courses/links/AndyBookmarks.html#%5B%5BWeb%202.0%5D%5D</a></li></ul><ul><li>Introduction to Web 2.0 <a style="COLOR: rgb(51,102,255)" href="http://www.squidoo.com/introtoweb20/">http://www.squidoo.com/introtoweb20/</a><br /></li></ul><ul><li>adaptive path » experience attributes: crucial dna of web 2.0 <a style="COLOR: rgb(51,102,255)" href="http://www.adaptivepath.com/publications/essays/archives/000547.php">http://www.adaptivepath.com/publications/essays/archives/000547.php</a></li></ul><ul><li>Digital Web Magazine - Web 2.0 for Designer<a href="http://www.digital-web.com/articles/web_2_for_designers/"> http://www.digital-web.com/articles/web_2_for_designers</a></li></ul><ul><li>Web 2.0: The Power Behind the Hype <a style="COLOR: rgb(51,102,255)" href="http://www.uie.com/articles/web_2_power/">http://www.uie.com/articles/web_2_power/</a></li></ul><ul><li>Web 2.0 Mistaking the forest for the trees <a style="COLOR: rgb(51,102,255)" href="http://www.gotomedia.com/gotoreport/january2006/news_0106_forest.html">http://www.gotomedia.com/gotoreport/january2006/news_0106_forest.html</a><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-32486716424933327932007-03-28T22:26:00.000+08:002007-04-09T00:34:37.497+08:00WK 10 - What's make J2EE lower cost development?<ul><li><div align="justify"><a href="http://en.wikipedia.org/wiki/Jakarta_Struts">Apache Struts</a></div></li></ul><div align="justify">Apache Struts is an <a title="Open-source" href="http://en.wikipedia.org/wiki/Open-source">open-source</a> framework for developing <a title="Java EE" href="http://en.wikipedia.org/wiki/Java_EE">Java EE</a> <a title="Web application" href="http://en.wikipedia.org/wiki/Web_application">web applications</a>. It uses and extends the <a title="Java Servlet" href="http://en.wikipedia.org/wiki/Java_Servlet">Java Servlet</a> <a title="Application programming interface" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> to encourage developers to adopt a <a title="Model-view-controller" href="http://en.wikipedia.org/wiki/Model-view-controller">model-view-controller</a> (MVC) architecture. It was originally created by <a title="Craig McClanahan" href="http://en.wikipedia.org/wiki/Craig_McClanahan">Craig McClanahan</a> and donated to the <a title="Apache Foundation" href="http://en.wikipedia.org/wiki/Apache_Foundation">Apache Foundation</a> in May, <a title="2000" href="http://en.wikipedia.org/wiki/2000">2000</a>. Formerly located under the Apache <a title="Jakarta Project" href="http://en.wikipedia.org/wiki/Jakarta_Project">Jakarta Project</a> and known as Jakarta Struts, it became a top level Apache project in 2005.</div><div align="justify"> </div><ul><li><div align="justify"><a href="http://en.wikipedia.org/wiki/Apache_Ant">Apache Ant</a></div></li></ul><div align="justify">Apache Ant is a software tool for <a title="Build automation" href="http://en.wikipedia.org/wiki/Build_automation">automating software build</a> processes. It is similar to <a title="Make" href="http://en.wikipedia.org/wiki/Make">make</a> but is written in the <a title="Java (programming language)" href="http://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a> language, requires the Java platform, and is best suited to building Java projects.<br />The most immediately noticeable difference between Ant and make is that Ant uses <a title="XML" href="http://en.wikipedia.org/wiki/XML">XML</a> to describe the build process and its dependencies, whereas make has its Makefile format. By default the XML file is named build.xml.<br />Ant is an <a title="Apache Software Foundation" href="http://en.wikipedia.org/wiki/Apache_Software_Foundation">Apache</a> project. It is <a title="Open source software" href="http://en.wikipedia.org/wiki/Open_source_software">open source software</a>, and is released under the <a title="Apache Software License" href="http://en.wikipedia.org/wiki/Apache_Software_License">Apache Software License</a>.</div><div align="justify"> </div><ul><li><div align="justify"><a href="http://en.wikipedia.org/wiki/Spring_Framework">Spring Framework (Java)</a></div></li></ul><p align="justify">The Spring Framework provides solutions to many technical challenges faced by Java developers and organizations wanting to create applications based on the <a title="Java platform" href="http://en.wikipedia.org/wiki/Java_platform">Java platform</a>. Because of the sheer vastness of the functionality that is offered it can be hard to distinguish the major building blocks the framework is composed of. The Spring Framework is not exclusively linked to the <a title="Java Platform, Enterprise Edition" href="http://en.wikipedia.org/wiki/Java_Platform%2C_Enterprise_Edition">Java Enterprise platform</a> although its far-reaching integration in this area is an important reason for its popularity.<br />The Spring Framework is probably best known for offering features required to effectively create complex business applications outside of the programming models that historically have been dominant in the industry. Next to that it is also credited for introducing previously unfamiliar functionalities into today's mainstream development practices, even beyond the Java platform.<br />This amounts to a framework that offers a consistent model and makes it applicable to most application types that are created on top of the Java platform today. The Spring Framework is considered to implement one way of working based on best practices and industry standards and making it available to many domains in Java.</p><ul><li><a href="http://en.wikipedia.org/wiki/Eclipse_%28computing%29">Eclipse (software)</a></li></ul><p align="justify">Eclipse is an <a title="Open source software" href="http://en.wikipedia.org/wiki/Open_source_software">open-source</a>, platform-independent <a title="Software framework" href="http://en.wikipedia.org/wiki/Software_framework">software framework</a> for delivering what the project calls "rich-client applications", as opposed to "thin client" browser-based applications. So far this framework has typically been used to develop <a title="Integrated Development Environment" href="http://en.wikipedia.org/wiki/Integrated_Development_Environment">Integrated Development Environments</a> (IDEs), such as the <a title="Java (programming language)" href="http://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a> IDE called Java Development Toolkit (JDT) and compiler (ECJ) that comes as part of Eclipse (and which are also used to develop Eclipse itself). However, it can be used for other types of client application as well, such as the <a title="BitTorrent" href="http://en.wikipedia.org/wiki/BitTorrent">BitTorrent</a> client <a title="Azureus" href="http://en.wikipedia.org/wiki/Azureus">Azureus</a>.<br />Eclipse is also a community of users, constantly extending the covered application areas. An example is the recently created <a title="Eclipse Modeling Project" href="http://en.wikipedia.org/wiki/Eclipse_Modeling_Project">Eclipse Modeling Project</a>, covering most areas of <a title="Model Driven Engineering" href="http://en.wikipedia.org/wiki/Model_Driven_Engineering">Model Driven Engineering</a>.</p><ul><li><a href="http://en.wikipedia.org/wiki/NetBeans">NetBeans</a></li></ul><p align="justify">NetBeans refers to both a <a title="Platform (computing)" href="http://en.wikipedia.org/wiki/Platform_%28computing%29">platform</a> for the development of <a title="Java (programming language)" href="http://en.wikipedia.org/wiki/Java_%28programming_language%29">Java</a> desktop <a title="Application software" href="http://en.wikipedia.org/wiki/Application_software">applications</a>, and an <a title="Integrated development environment" href="http://en.wikipedia.org/wiki/Integrated_development_environment">integrated development environment</a> (IDE) developed using the NetBeans Platform.<br />The NetBeans Platform allows applications to be developed from a set of modular <a title="Software component" href="http://en.wikipedia.org/wiki/Software_component">software components</a> called modules. A module is a <a title="Java archive" href="http://en.wikipedia.org/wiki/Java_archive">Java archive</a> file that contains Java classes written to interact with the NetBeans Open APIs and a <a class="new" title="Manifest file" href="http://en.wikipedia.org/w/index.php?title=Manifest_file&action=edit">manifest file</a> that identifies it as a module. Applications built on modules can be extended by adding new modules. Since modules can be developed independently, applications based on the NetBeans platform can be easily and powerfully extended by <a title="Third party" href="http://en.wikipedia.org/wiki/Third_party">third party</a> <a title="Software developer" href="http://en.wikipedia.org/wiki/Software_developer">developers</a>.</p><p align="justify"> </p>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-75474629736062371952007-03-23T15:24:00.001+08:002007-03-23T16:28:18.710+08:00WK9 - LAMP vs. WISA<p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">As we know LAMP stands for Linux, Apache, MySQL, PHP, an alternative dynamic web platform, WISA is no doubt another good choice. WISA stands for Windows, IIS (Internet Information Services), MS SQL, and ASP.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The OS is platform on which all the other components run. Windows is easier to use, however, advanced controls needed to administer a dynamic web-site are often buried or only available by modifying configuration files. For small websites, the hosting server is not allowing us to access to OS level controls. For large websites, you have your own dedicated machine, or located in-house. So the choosing is based on other components we prefer.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The web server is the program that takes request for pages from a browser, interprets the request, and returns the results. IIS and Apache both are free. IIS is tightly integrated with Windows, and is easy to install, and is part of the default installation of Windows 2000/2003. Apache is open-source, meaning to advanced programmers can customize the way it runs and have more flexibility with if. Generally speaking, Apache is more secure than IIS, but its security features can sometimes be difficult to configure.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The database stores information that can be retrieved, stored, and manipulated by the scripting language. MySQL is a free database that can run on all OS. MS SQL costs $5000, can only runs on Windows, and is considered an enterprise-level database. MySQL is not as powerful as MS SQL, but is sufficient to almost all web application. If the difference in price may not be a factor in the decision if your website is to be hosted, as this is a cost to the hosting company. MS SQL is recommended while you anticipate using the database for non-web applications that need massive amounts of power, or if you are incorporating the features that are not available on MySQL.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">Script is requested by a browser, the web server transfers control to a script engine which reads a program written in scripting language. PHP is a free scripting language and offers many OO features, integrated tightly with HTML, and is similar to other languages such as C++ and JavaScript. Active Server Pages (ASP) is not actually a scripting language, but is a Microsoft Technology that allows existing scripting languages to be used in a web context. ASP/VB is often said to be easier to program in than PHP. PHP has more standard features than ASP, most of which are open source such as shopping carts and web forums. However, to get functionalities in ASP one must purchase third party modules. The features on the free PHP are often better than ASP packages, but may be difficult to install and may have incomplete documentation.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In summary, I would recommend LAMP for most web sites because of its cost, since PHP’s simple web integration, and Apache’s security. I would recommend WISA for enterprise-level sits because of MS SQL Server’s raw power and Microsoft’s support services.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p style="font-style: italic; color: rgb(204, 102, 204);" class="MsoNormal"><span style="font-size:85%;"><span lang="EN-US">Reference:</span></span></p><ul><li><span lang="EN-US"><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29">Wikipedia - LAMP_Software_bundle<br /></a></span></span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/WISA"><span lang="EN-US">Wikipedia - WISA</span></a></span></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com1tag:blogger.com,1999:blog-3132094112114117756.post-5733127646675836432007-03-15T22:04:00.000+08:002007-03-15T22:35:35.897+08:00WK8 - A Full list of Ajax Toolkit/Framework/Libary Survey<strong><span style="font-size:130%;color:#3333ff;">AjaxAnywhere </span></strong><a href="http://ajaxanywhere.sourceforge.net/" target="_top"><strong><span style="font-size:130%;color:#3333ff;">http://ajaxanywhere.sourceforge.net</span></strong></a><br />License: Apache 2<br />Description: AjaxAnywhere is a simple way to enhance an existing JSP/Struts/Spring/JSF application with AJAX. It uses AJAX to refresh "zones" on a web page, therefore AjaxAnywhere doesn't require changes to the underlying code, so while it's more coarse than finely-tuned AJAX, it's also easier to implement, and doesn't bind your application to AJAX (i.e., browsers that don't support AJAX can still work.). In contrast to other solutions, AjaxAnywhere is not component-oriented. You will not find here yet another <a class="twikiLink" href="http://wiki.osafoundation.org/Projects/AutoComplete">AutoComplete</a> component. Simply separate your web page into multiple zones, and use AjaxAnywhere to refresh only those zones that needs to be updated.<br /><span style="color:#ffff00;"><span style="color:#993300;">Pros:</span><br /></span>Less JavaScript to develop and to maintain. Absence of commonly accepted naming convention, formatting rules, patterns makes JavaScript code messier then Java/JSP. It is extremely difficult to debug and unit-test it in multi-browser environment. Get rid of all those complexities by using AjaxAnywhere.<br />Easy to integrate. AjaxAnywhere does not require changing the underlying application code.<br />Graceful degradation and lower technical risk. Switch whenever you need between AJAX and traditional (refresh-all-page) behaviour of your web application. Your application can also support both behaviors.<br />Free open source license.<br /><span style="color:#cc0000;">Cons:<br /></span>AxajAnywhere<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/AxajAnywhere?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> is not as dynamic as pure-JavaScript AJAX solutions. Despite that AjaxAnywhere will probably cover your basic needs, to achieve certain functionality you might need to code some JavaScript.<br />Today, you can only update a set of complete DHTML objects without breaking then apart. For example, you can update a content of a table cell or the whole table, but not the last row, for example. In later versions, we plan to implement partial DHTML update, as well.<br /><br /><a name="ajaxCFC"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>ajaxCFC </strong></span><a href="http://www.robgonda.com/blog/projects/ajaxcfc/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.robgonda.com/blog/projects/ajaxcfc/</strong></span></a><br />License: Apache 2.0<br />Description: ajaxCFC is a ColdFusion<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ColdFusion?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> framework meant to speed up ajax application development and deployment by providing developers seamless integration between JavaScript and ColdFusion<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ColdFusion?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, and providing built-in functions to quickly adapt to any type of environment, security, and helping to overcome cross-browser compatibility problems.<br />ajaxCFC is designed as ColdFusion<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ColdFusion?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> components, following the best practices of object oriented programming and design patterns. Programming with ajaxCFC involves extending components and creating your own ajax facades.<br /><span style="color:#ff6600;">Pros:<br /></span>Works with ColdFusion<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ColdFusion?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> MX 6.0, 6,1, 7.0, Scorpio, and BlueDragon<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/BlueDragon?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>.<br />Integration with Model-Glue and MachII<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/MachII?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, two of the most popular MVC frameworks widely used by the ColdFusion<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ColdFusion?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> community.<br />Supports many browsers including FF/Moz, IE5.5+, Safari/Konq, Opera and IE with Active-X turned off via iframe fallback<br />Automatically handles complex object transmitted from the client to the server and vice versa.<br />Optional use of XML Sockets to push data from the server.<br />Built-in security add-ons.<br />Hosted now by <a href="http://ajaxcfc.riaforge.org/" target="_top">Adobe's RIAForge</a><br />Licensed under the Apache License Version 2.0, by <a href="http://www.robgonda.com/" target="_top">Rob Gonda</a>.<br /><br /><a name="AjaxTags component of Java Web P"></a><a name="_AjaxTags component of Java Web "></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>AjaxTags component of Java Web Parts </strong></span><a href="http://javawebparts.sourceforge.net/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://javawebparts.sourceforge.net</strong></span></a><br />License: Apache 2<br />Description: AjaxTags was originally an extended version of the Struts HTML taglib, but was made into a generic taglib (i.e., not tied to Struts) and brought under the Java Web Parts library. AjaxTags is somewhat different from most other Ajax toolkits in that it provides a declarative approach to Ajax. You configure the Ajax events you want for a given page via XML config file, including what you want to happen when a request is sent and when a response is received. This takes the form of request and response handlers. A number of rather useful handlers are provided out-of-the-box, things like updating a <div>, sending a simple XML document, transforming returned XML via XSLT, etc. All that is required to make this work on a page is to add a single tag at the end, and then one following whatever page element you want to attach an Ajax event to. Any element on a page can have an Ajax event attached to it. If this sounds interesting, it is suggested you download the binary Java Web Parts distro and play with the sample app. This includes a number of excellent examples of what AjaxTags can do.<br /><span style="color:#ff6600;">Pros:</span><br />There is no Javascript coding required, unless you need or want to write a custom request/response handler, which is simply following a pattern.<br />Very easy to add Ajax functions to an existing page without changing any existing code and without adding much beyond some tags. Great for retroactively adding Ajax to an app (but perfect for new development too!)<br />Completely declarative approach to Ajax. If client-side coding is not your strong suite, you will probably love AjaxTags.<br />Has most of the basic functions you would need out-of-the-box, with the flexibility and extensibility you might need down the road.<br />Cross-browser support (IE 5.5+ and FF 1.0.7+ for sure, probably some older versions too).<br />Is well-documented with a good example app available.<br /><span style="color:#ff6600;">Cons:</span><br />Because it's a taglib, it is Java-only.<br />Doesn't provide pre-existing Ajax functions like many other libraries, things like Google Suggests and such. You will have to create them yourself (although AjaxTags will make it a piece of cake!). Note that there are some cookbook examples available that shows a type-ahead suggestions application, and a double-select population application. Check them out, see how simple they were to build!<br />AjaxTags says absolutely nothing about what happens on the server, that is entirely up to you.<br />Might be some slight confusion because there is another project named AjaxTags at SourceForge. The AjaxTags in Java Web Parts existed first though, and in any case they have very different focuses. Just remember, this AjaxTags is a part of Java Web Parts, the other is not.<br /><br /><a name="AJS"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>AJS </strong></span><a href="http://orangoo.com/labs/AmiNation/AJS/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://orangoo.com/labs/AmiNation/AJS/</strong></span></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong> </strong></span><br />License: MIT.<br />Description: AJS is a ultra lightweight JavaScript library. It's only about 30 KB. AJS main force is performance - both in execution and file size. It has a lot of functionality in common with MochiKit<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/MochiKit?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>.<br /><span style="color:#cc6600;">Pros:</span><br />AJAX support<br />Drag and drop support<br />One namespace<br />Documentation and examples on most important functions<br />Polymorphic - A Python script can scan your code, find the AJS functions you use and create a special AJS file for you that is much smaller<br />Supports latest IE, Firefox, Safari and Opera browsers<br /><span style="color:#ff9900;">Cons:</span><br />Does not support old browsers (like Netscape 4 or IE 5)<br />Limited visual effects<br /><br /><a name="Anaa"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Anaa </strong></span><a href="http://www.anaa.eu" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.anaa.eu</strong></span></a><strong><span style="color:#3333ff;"><br /></span></strong>License: Mozilla 1.1.<br />Description: Anaa means for An Ajax API and is a simple but complete framework built around XMLHttpRequest<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/XMLHttpRequest?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>. Anaa does support GET and POST methods. Plain Text (including JSON) and XML file are handled.<br /><span style="color:#ff9900;">Pros:</span><br />Easy to understand. This allows to extend the library with personal features more easily.<br />Complete for a such simple library.<br />Good documentation.<br />JavaScript only. Compatible with any server-side language.<br />Pretty website!<br /><span style="color:#ff9900;">Cons:</span><br />Rather minimal for now. There are projects to extend it with optional modules.<br /><br /><a name="Dojo"></a><strong><span style="font-family:arial;font-size:130%;color:#3333ff;">Dojo </span></strong><a href="http://dojotoolkit.org/" target="_top"><strong><span style="font-family:arial;font-size:130%;color:#3333ff;">http://dojotoolkit.org/</span></strong></a><br />License: Academic Free License v 2.1.<br />Description: Dojo is an Open Source effort to create a UI toolkit that allows a larger number of web application authors to easily use the rich capabilities of modern browsers.<br /><span style="color:#ff9900;">Pros:</span><br />Dev roadmap encompasses a broad range of areas needed to do browser-based app development -- Even the 0.1 release includes implementations of GUI elements, AJAX-style communication with the server, and visual effects.<br />Build system uses Ant, so core devs seem to be on friendly terms with Java.<br />Browser compatibility targets are: degrade gracefully in all cases, IE 5.5+, Firefox 1.0+, latest Safari, latest Opera<br />Most core parts of the system are unit tested (an unit tests are runnable at the command line)<br />Includes package system and build system that let you pull in only what you need<br />Comprehensive demo at <a href="http://archive.dojotoolkit.org/nightly/tests/" target="_top">http://archive.dojotoolkit.org/nightly/tests/</a><br /><span style="color:#ff9900;">Cons:</span><br />Documentation is lacking, but what's available is linked from <a href="http://dojotoolkit.org/docs" target="_top">http://dojotoolkit.org/docs</a> .<br /><br /><a name="DotNetRemoting Rich Web Client S"></a><a name="_DotNetRemoting Rich Web Client "></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>DotNetRemoting Rich Web Client SDK for ASP.NET </strong></span><a href="http://www.dotnetremoting.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.dotnetremoting.com</strong></span></a><br />License: - commercial license<br />Description: Rich Web Client SDK is a platform for developing rich internet applications (including AJAX). The product is available for .NET environment and includes server side DLL and a client side script<br /><span style="color:#ff9900;">Pros:</span><br />No need for custom method attributes, special signatures or argument types. Does not require stub or script generation.<br />Available for .NET<br />Automatically generates the objects from the existing .Net classes.<br />Supports Hashtable and ArrayList<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ArrayList?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> on the client<br />The client and the server objects are interchangeable<br />Can Invoke server methods methods from the client with classes as arguments<br />Very easy to program<br />Professional support<br /><span style="color:#ffcc33;">Cons:</span><br />Lacks out of the box UI components.<br /><br /><a name="DWR"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>DWR </strong></span><a href="http://www.getahead.ltd.uk/dwr/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.getahead.ltd.uk/dwr/</strong></span></a><span style="font-family:arial;font-size:130%;"><br /></span>License: Apache 2.0<br />Description: DWR (Direct Web Remoting) is easy AJAX for Java. It reduces development time and the likelihood of errors by providing commonly used functions and removing almost all of the repetitive code normally associated with highly interactive web sites.<br /><span style="color:#cc9933;">Pros:</span><br />Good integration with Java.<br />Extensive documentation.<br />Supports many browsers including FF/Moz, IE5.5+, Safari/Konq, Opera and IE with Active-X turned off via iframe fallback<br />Integration with many Java OSS projects (Spring, Hibernate, JDOM, XOM, Dom4J)<br />Automatically generated test pages to help diagnose problems<br /><span style="color:#cc9933;">Cons:<br /></span>Java-exclusive -- seems to be Java code that generates JavaScript. This limits its utility in non-Java environments, and the potential reusability by the community.<br /><br /><a name="JSON-RPC-JAVA"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>JSON-RPC-JAVA </strong></span><a href="http://oss.metaparadigm.com/jsonrpc/index.html" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://oss.metaparadigm.com/jsonrpc/index.html</strong></span></a><span style="font-size:130%;"><br /></span>License: JSON-RPC-Java is licensed under the LGPL which allows use within commerical/proprietary applications (with conditions).<br />Description: JSON-RPC-Java is a key piece of Java web application middleware that allows JavaScript DHTML web applications to call remote methods in a Java Application Server (remote scripting) without the need for page reloading (as is the case with the vast majority of current web applications). It enables a new breed of fast and highly dynamic enterprise Java web applications (using similar techniques to Gmail and Google Suggests).<br /><span style="color:#ff9900;">Pros:<br /></span>Exceptionally easy to use and setup<br />Transparently maps Java objects to JavaScript objects.<br />Supports Internet Explorer, Mozilla, Firefox, Safari, Opera and Konqueror<br /><span style="color:#ff9966;">Cons:<br /></span>JavaScript Object Notation can be difficult to read<br />Possible scalability issues due to the use of HTTPSession<br /><br /><a name="MochiKit"></a><a name="_MochiKit"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>MochiKit </strong></span><a href="http://mochikit.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://mochikit.com/</strong></span></a><br />License: MIT or Academic Free License, v2.1.<br />Description: "MochiKit makes JavaScript suck less." MochiKit is a highly documented and well tested, suite of JavaScript libraries that] will help you get shit done, fast. We took all the good ideas we could find from our Python, Objective-C, etc. experience and adapted it to the crazy world of JavaScript.<br /><span style="color:#cc9933;">Pros:</span><br />Test-driven development -- "MochiKit has HUNDREDS of tests."<br />Exhaustive documentation -- "You're unlikely to find any JavaScript code with better documentation than MochiKit. We make a point to maintain 100% documentation coverage for all of MochiKit at all times."<br />Scriptaculous-style visual effects<br />Supports latest IE, Firefox, Safari browsers<br /><span style="color:#cc9933;">Cons:</span><br />Support for IE is limited to version 6. According to the lead dev on the project, "IE 5.5 might work with a little prodding."<br />Scriptaculous-style visual effects are still in beta<br /></div><p><br /><a name="Plex Toolkit"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Plex Toolkit </strong></span><a href="http://www.plextk.org/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.plextk.org</strong></span></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong> - see </strong></span><a href="http://www.protea-systems.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.protea-systems.com</strong></span></a><strong><span style="color:#3333ff;"><span style="font-size:130%;"><span style="font-family:arial;"> (and view source!)</span> for sample site</span></span><br /></strong>License: - LGPL or GPL (optional)<br />Description: Open source feature-complete DHTML GUI toolkit and AJAX framework based on a Javascript/DOM implementation of Macromedia's Flex technology. Uses the almost identical markup language to Flex embedded in ordinary HTML documents for describing the UI. Binding is done with Javascript.<br /><span style="color:#ffcc33;">Pros:<br /></span>Full set of widgets such as datagrid, tree, accordion, pulldown menus, DHTML window manager, viewstack and more<br />Markup driven (makes it easy to visually build the interface)<br />Interface components can be easily themed with CSS<br />Client side XSLT for IE and Mozilla<br />Well documented with examples.<br />Multiple remoting transport options - XMLHttpRequest<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/XMLHttpRequest?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, IFrame (RSLite cookie based coming soon)<br />Back button support<br />Support for YAML serialization<br /><span style="color:#cc9933;">Cons:<br /></span>Lacks animation framework. </p><div><br /><a name="Prototype"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Prototype </strong></span><a href="http://prototype.conio.net/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://prototype.conio.net/</strong></span></a><br />License: MIT<br />Description: Prototype is a JavaScript framework that aims to ease development of dynamic web applications. Its development is driven heavily by the Ruby on Rails framework, but it can be used in any environment.<br /><span style="color:#cc9933;">Pros:</span><br />Fairly ubiquitous as a foundation for other toolkits -- used in both Scriptaculous and Rico (as well as in Ruby on Rails)<br />Provides fairly low-level access to XMLHttpRequest<br />Now well documented (officially) at [[http://prototypejs.org] [PrototypeJS.org]] Cons:<br />IE support is limited to IE6.<br />Has no visual effects library (but see Scriptaculous)<br />Has no built-in way of acessing AJAX result as an XML doc.<br />Modifications to Object.prototype apparently cause issues with for/in loops in interating through arrays. I could not find any information to indicate that this problem has been fixed.<br /><br /><a name="Rialto"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Rialto </strong></span><a href="http://rialto.application-servers.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://rialto.application-servers.com/</strong></span></a><br />License: Apache 2.0<br />Description: Rialto is a cross browser javascript widgets library. Because it is technology agnostic it can be encapsulated in JSP, JSF, .Net or PHP graphic components.<br /><span style="color:#ffcc33;">Pros:<br /></span>Technology Agnostic<br />Finition of widgets<br />Vision of the architecture<br />Tab drag and drop<br /><span style="color:#ffcc33;">Cons:<br /></span>Scant documentation -- currently consists of two PDFs and a single Weblog entry.<br />Supports IE6.x and Firefox 1.x.<br />Documentation<br /><br /><a name="Rico"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Rico </strong></span><a href="http://openrico.org/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://openrico.org/</strong></span></a><br />License: Apache 2.0<br />Description: An open-source JavaScript library for creating rich Internet applications. Rico provides full Ajax support, drag and drop management, and a cinematic effects library.<br /><span style="color:#ffcc33;">Pros:<br /></span>Corporate sponsorship from Sabre Airline Solutions (Apache 2.0 License). This means that the code is driven by practical business use-cases, and user-tested in commercial applications.<br />Extensive range of functions/behaviors.<br /><span style="color:#cc9933;">Cons:<br /></span>Scant documentation -- currently consists of two PDFs and a single Weblog entry.<br />Supports IE5.5 and higher only. Also, no Safari support. From the Web site: "Rico has been tested on IE 5.5, IE 6, Firefox 1.0x/Win Camino/Mac, Firefox 1.0x/Mac. Currently there is no Safari or Mac IE 5.2 support. Support will be provided in a future release for Safari."<br />Has no built-in way of acessing AJAX result as an XML doc.<br />Drag-and-drop apparently broken in IE (tested in IE6)<br /><br /><a name="SAJAX"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>SAJAX </strong></span><a href="http://www.modernmethod.com/sajax/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.modernmethod.com/sajax/</strong></span></a><br />License: BSD<br />Description: Sajax is an open source tool to make programming websites using the Ajax framework — also known as XMLHTTPRequest or remote scripting — as easy as possible. Sajax makes it easy to call PHP, Perl or Python functions from your webpages via JavaScript without performing a browser refresh. The toolkit does 99% of the work for you so you have no excuse to not use it.<br /><span style="color:#ffcc33;">Pros:</span><br />Supports many common Web-development languages.<br /><span style="color:#ffcc33;">Cons:</span><br />Seems limited just to AJAX -- i.e., XMLHttpRequest. No visual effects library or anything else.<br />Integrates with backend language, and has no Java or JSP support.<br /><br /><a name="Sardalya"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Sardalya </strong></span><a href="http://www.sarmal.com/sardalya/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.sarmal.com/sardalya/</strong></span></a><br />License: free for uncommercial use; almost free for commercial use.<br />Description: s@rdalya, is a cross-browser interface that aims to make dynamic HTML programming easy and fun. It is a cross-browser compatible system which is designed to work in all DOM-supporting browsers.<br />Though the developer doesn't test on a Mac, I encountered no problems viewing all of the many DHTML samples he provides. Sardalya includes Ajax functions as well as a comprehensive DOM-based DHTML library.<br />The library received and "A grade" from musingsfrommars.org: <a href="http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html" target="_top">http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html</a><br />In its blog, the developer says that the next version of the library will include:<br />A better AJAX integration.<br />And more objects to play with(such as Effect object for scheduled transitions such as background fades, or ModalDialog<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/ModalDialog?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> object which generates a DOM generated modal dialog, which is a cross-browser DOM-implementation of IE's modal dialog, which is not being used much because it is vendor-specific and not supported in other browsers.<br /><span style="color:#ffcc33;">Pros:</span><br />Object-oriented.<br />Flexible, easily extendible.<br />Works in almost any modern browser.<br />Independent of OS.<br />Lightweight when you consider what is does.<br /><span style="color:#ffcc33;">Cons:<br /></span>Since it is being constantly developed, the documentation may not be in sync with the most recent version. However viewing the sources of examples are adequate to learn how to use the API.<br /><br /><a name="Scriptaculous"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Scriptaculous </strong></span><a href="http://script.aculo.us/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://script.aculo.us/</strong></span></a><strong><span style="color:#3333ff;"><br /></span></strong>License: MIT<br />Description: Script.aculo.us provides you with easy-to-use, compatible and, ultimately, totally cool! JavaScript libraries to make your web sites and web applications fly, Web 2.0 style. A lot of the more advanced Ajax support in Ruby on Rails (like visual effects, auto-completion, drag-and-drop and in-place-editing) uses this library.<br /><span style="color:#ffcc33;">Pros:</span><br />Well-designed site actually has some reference materials attached to each section.<br />Lots of neat visual effects.<br />Simple and easy to understand object-oriented design.<br />Although developed together with Ruby on Rails it's not dependent on Rails at all, has been used successfully at least in Java and PHP projects and should work with any framework.<br />Because of the large user-group coming from Ruby on Rails it has very good community support.<br /><span style="color:#cc9933;">Cons:<br /></span>No IE5.x support -- see Prototype -- Cons 1., above. (Edit July 22, 2006: IE5 is now supported. See website.)<br /><br /><a name="SmartClient from Isomorphic Soft"></a><a name="_SmartClient from Isomorphic Sof"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>SmartClient from Isomorphic Software </strong></span><a href="http://www.smartclient.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.smartclient.com/</strong></span></a><strong><br /></strong>Description: SmartClient is the cross-platform AJAX GUI system chosen by top commercial software vendors, on-demand service providers, and enterprise IT developers for thousands of deployments since 2000.<br />SmartClient provides a complete application stack, from rich, skinnable, extensible GUI components to declarative databinding and SOA integration, paired with a mature, searchable documentation suite and integrated tooling.<br />SmartClient AJAX applications run on Internet Explorer, Mozilla, Netscape, Firefox, and Safari web browsers, on Windows, MacOS, Linux, and Solaris. A Java integration server is provided, and SmartClient can also be integrated directly with any XML or JSON-based service without need of a server. Visit SmartClient.com for hundreds of live examples, browseable documentation and a downloadable SDK.<br /><span style="color:#ff6600;">Pros:<br /></span>Proven in the world's most sophisticated AJAX applications<br />Excellent documentation<br />Extensible; build new components out of existing components without DHTML experience<br />Broadest browser and platform support<br />Declarative integration with web services<br />Skinning, drag and drop and animation effects<br /><span style="color:#ff9900;">Cons:</span><br />Large download (but provides modular delivery and background download features)<br />No Opera support yet<br /><br /><a name="TIBCO General Interface (AJAX RI"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>TIBCO General Interface (AJAX RIA Framework and IDE since 2001) </strong></span><a href="http://developer.tibco.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://developer.tibco.com</strong></span></a><span style="font-family:arial;font-size:130%;"><br /></span>TIBCO General Interface is a mature AJAX RIA framework that's been at work powering applicaitions at Fortune 100 and US Government organziations since 2001. Infact the framework is so mature, that TIBCO General Interface's visual development tools themselves run in the browser alongside the AJAX RIAs as you create them.<br />See an amazing demo in Jon Udell's coverage at InfoWorld<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/InfoWorld?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>. <a href="http://weblog.infoworld.com/udell/2005/05/25.html" target="_top">http://weblog.infoworld.com/udell/2005/05/25.html</a><br />You can also download the next version of the product and get many sample applications from their developer community site via <a href="https://power.tibco.com/app/um/gi/newuser.jsp" target="_top">https://power.tibco.com/app/um/gi/newuser.jsp</a><br /><span style="color:#cc9933;">Pros:</span><br />Dozens of types of extensible GUI components<br />Vector based charting package<br />Support for SOAP communication (in adiition to your basic HTTP and XML too)<br />Full visual development environment - WYSIWYG GUI layouts - step-through debugging - code completion - visual tools for connecting to services<br />An active developer community at <a href="http://power.tibco.com/GI" target="_top">http://power.tibco.com/GI</a><br /><span style="color:#ffcc33;">Cons:</span><br />Firefox support is in the works, but not released yet making this still something for enterprises to use where Internet Explorer is on 99.9% of business user desktops, but probably not for use on web sites that face the general population.<br />More info at <a href="http://developer.tibco.com" target="_top">http://developer.tibco.com</a><br /><br /><a name="Visual _WebGui (The .NET answer"></a><a name="Visual _WebGui (The .NET answer "></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Visual WebGui</strong></span><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong> (The .NET answer to Google's GWT that extends WinForms</strong></span><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>over ASP.NET) </strong></span><a href="http://www.visualwebgui.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.visualwebgui.com</strong></span></a><br />Visual WebGui<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WebGui?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> (VWG) is an open source AJAX framework with a growing community that extends ASP.NET with the WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> programming model.<br />VWG provides an alternative to ASP.NET's page model in the form of WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> forms and form events. Since VWG, like most .NET AJAX frameworks, is implemented using an IHttpHandler<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/IHttpHandler?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, it can still interact with ASP.NET pages enabling usage of VWG within an existing ASP.NET site.<br />VWG features:<br />AJAX application development using WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> development patterns and practices with no prior AJAX (or web development) skills.<br />WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> controls (most of .NET 2.0 controls) implemented for VWG.<br />Ability to create custom controls (including full inheritance).<br />Ability to interoperate with existing ASP.NET controls and pages.<br />Ability to customize control behavior and appearance.<br />.NET 1.x/2.0 support.<br />An active developer community at <a href="http://www.visualwebgui.com/tabid/53/Default.aspx" target="_top">http://www.visualwebgui.com/tabid/53/Default.aspx</a><br />VWG unlike GWT:<br />Does not generate JavaScript code – debugging is done within the server-based .NET code that executes in runtime.<br />Does not run application logic on the client – all processing is done on the server.<br />Does not expose unnecessary services to the client – server sends UI updates / client sends user event queues.<br />Results in a thin client rather than a fat client.<br />Is based on a familiar WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> object model.<br />Is provided with full WinForms<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/WinForms?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> like design time capabilities.<br />See an rich demo can be found here: <a href="http://samples.visualwebgui.com/mainforms.wgx" target="_top">http://samples.visualwebgui.com/mainforms.wgx</a><br />You can also download the framework and sample projects from: <a href="http://www.visualwebgui.com/tabid/110/Default.aspx" target="_top">http://www.visualwebgui.com/tabid/110/Default.aspx</a><br />More info at <a href="http://www.visualwebgui.com" target="_top">http://www.visualwebgui.com</a><br /><br /><a name="xWire"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>xWire </strong></span><a href="http://xwire.solutionpioneers.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://xwire.solutionPioneers.com</strong></span></a><br />License: Apache V2.0<br />Description: xWire is a mature, object-oriented, enterprise-class toolkit that consists of both client (browser) and server (Java) editions. You can use either or both editions depending upon your environment. xWire was originally built back in 2001 and originally supported only IE5. Support has expanded to IE6, IE7 and Firefox. Opera support is coming soon. You can literally write enterprise-class AJAX applications that work in all of the supported browsers. We have lots of features that can be independently used as desired on both the client and the server. Additionally, COMET support is on the way.<br />Client Features:<br />Simple API for cross browser functionality including XmlHttp<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/XmlHttp?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, DOM, XPath, XSLT<br />Completely object-oriented using Javascript classes<br />Configurable logging mechanism<br />Incredibly flexible event mechanism<br />Includes some great widgets such as a hierarchical tree and notebook<br />XML form binding for easily copying HTML form field values to/from one or more XML documents<br />Working examples<br />Frequent enhancements<br />Well documented with meaningful and thorough comments throughout the code<br />Server Features:<br />Mature toolkit (originally written in 2001)<br />Ideal for building the server side of an AJAX client application<br />Can be used for most any Java application including web and desktop<br />Seamless integration with several open source toolkits including Struts, iBatis, Log4J, Commons Configuration, Xalan and XStream<br />Provides for Struts actionless development<br />Well designed and well layered<br />Scalable and stable<br />Innovative features include XML streaming into and out of the server and Javascript Bundles<br />Collection of useful standalone services that can be used together or separately<br />Can be used in conjunction with the xWire client<br />Pick and choose which features to use<br />Working examples<br />Frequent enhancements<br />Well documented with meaningful and thorough comments throughout the code<br /><br /><a name="WebORB"></a><a name="_WebORB"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>WebORB </strong></span><a href="http://www.themidnightcoders.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.themidnightcoders.com</strong></span></a><br />License: Standard Edition is free, Professional Edition - commercial license<br />Description: WebORB is a platform for developing AJAX and Flash-based rich internet applications. The product is available for Java and .NET environments and includes a client side toolkit - Rich Client System to enable binding to server side objects (java, .net, web services, ejb, cold fusion), data paging and interactive messaging.<br /><span style="color:#ff6600;">Pros:<br /></span>Zero-changes deployment. Does not require any modifications on the server-side code, no need for custom method attributes, special signatures or argument types. Does not require stub or script generation.<br />Available for Java and .NET<br />One line API client binding. Same API to bind to any supported server-side type. Generated client-side proxy object have the same methods as the remote counter parts<br />Automatically adapts client side method arguments to the appropriate types on the server. Supports all possible argument types and return values (primitives, strings, dates, complex types, collections, data and result sets). Server-side arguments can be interfaces or abstract types<br />Includes a highly dynamic message server to allow clients to message each other. Server side code can push data to the connected clients (both AJAX and Flash)<br />Supports data paging. Clients can retrieve large data sets in chunks and efficiently page through the results.<br />Extensive security. Access to the application code can be restricted on the package/namespace, class or method level.<br />Detailed documentation.<br />Professional support<br /><span style="color:#ff6600;">Cons:</span><br />Lacks out of the box UI components.<br /><br /><a name="Zimbra"></a><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>Zimbra </strong></span><a href="http://www.zimbra.com/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://www.zimbra.com/</strong></span></a><strong><span style="font-size:130%;"><br /></span></strong>License: Zimbra Ajax Public License ZAPL (derived from Mozilla Public License MPL)<br />Description: Zimbra is a recently released client/server open source email system. Buried deep within this product is an excellent Ajax Tool Kit component library (AjaxTK<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/AjaxTK?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>) written in Javascript. A fully featured demo of the product is available on zimbra.com, and showcases the extensive capabilities of their email client. A very large and comprehensive widget library as only avialable in commercial Ajax toolkits is now available to the open source community. Download the entire source tree to find the AJAX directory which includes example applications.</div><div><span style="color:#ff6600;">Pros:</span><br />Full support of drag and drop in all widgets. Widgets include data list, wizard, button, text node, rich text editor, tree, menus, etc.<br />Build system uses Ant and hosting is based on JSP and Tomcat.<br />Very strong client-side MVC architecture based; architect is ex-Javasoft lead developer.<br />Communications support for client-side SOAP, and XmlHttpRequest<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/XmlHttpRequest?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> as well as iframes.<br />Support for JSON serialized objects, and Javascript-based XForms.<br />Strong muli-browser capabilities: IE 5.5+, Firefox 1.0+, latest Safari<br />Hi quality widgets have commercial quaility since this is a commerical open source product.<br />Widget library is available as a separate build target set from the main product.<br />Debugging facility is built in to library, displays communications request and response.<br />License terms making it suitable for inclusion in other commercial products free of charge. </div><div><span style="color:#ff6600;">Cons:</span><br />Does not currently support: Keyboard commands in menus, in-place datasheet editing.<br />Does not support gracefull degradation to iframes if other transports unavailable.<br />Documentation is lacking, but PDF white paper describing widget set and drag and drop is available.<br /><a name="Others"></a>Others Bling!<br /><a href="http://bcsaller.blogspot.com/2005/12/bling.html" target="_top">http://bcsaller.blogspot.com/2005/12/bling.html</a> <a href="http://darcs.objectrealms.net/darcsweb.cgi/bling" target="_top">http://darcs.objectrealms.net/darcsweb.cgi/bling</a><br />Description: MochiKit<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/MochiKit?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a>, Prototype, Scripaculous and OpenRico<a title="Create this topic" href="http://wiki.osafoundation.org/bin/edit/Projects/OpenRico?topicparent=Projects.AjaxLibraries" rel="nofollow">?</a> wrapped up into one package for Plone, isolating web developers from writing and debugging JS.<br /><br /><strong><span style="font-family:arial;font-size:130%;color:#3333ff;">Xajax </span></strong><a href="http://xajax.sourceforge.net/" target="_top"><strong><span style="font-family:arial;font-size:130%;color:#3333ff;">http://xajax.sourceforge.net/</span></strong></a><br />Description: PHP-centric, looks very new<br />License: LGPL<br /><br /><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>SACK<br /></strong></span><a href="http://twilightuniverse.com/projects/sack/" target="_top"><span style="font-family:arial;font-size:130%;color:#3333ff;"><strong>http://twilightuniverse.com/projects/sack/</strong></span></a><span style="font-family:arial;font-size:130%;color:#3333ff;"> </span><br />Description: New, limited feature set<br />License: modified X11<br /><br /><strong><span style="font-size:130%;color:#3333ff;">ZK<br /></span></strong><a href="http://www.zkoss.org/" target="_top"><strong><span style="font-size:130%;color:#3333ff;">http://www.zkoss.org</span></strong></a><span style="font-size:130%;"><br /></span>Description: ZK is an open-source Ajax Web framework that enables rich user interface for Web applications with little programming<br />Licsense: Open Source<br />There is another <a href="http://edevil.wordpress.com/2005/11/14/javascript-libraries-roundup/" target="_top">excellent and comprehensive list of libraries</a> at <a href="http://edevil.wordpress.com/" target="_top">EDevil's Weblog</a>. </div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com3tag:blogger.com,1999:blog-3132094112114117756.post-10174036092546173322007-03-09T20:53:00.000+08:002007-03-10T23:08:54.115+08:00WK7 - A powerful Ajax Toolkit - Zapatec.I am so excited that i found a really wonderful Ajax toolkit that can make our Ajax developing life easier. That's <span style="color: rgb(255, 0, 0); font-style: italic;font-family:lucida grande;font-size:130%;" ><a href="http://www.zapatec.com/website/main/">Zapatec.</a></span><br /><br />The lite version of Zapatec is free to use. And it provides us several fancy Ajax widgets e.g. Calendar, Menu, Tree, Windows, Form, Grid, Editor, Paneset, Auto Complete, Effects, D&D, Slider, Tabs, Time, Transport and Extra. Every single widgets is companied with a support document. Every componet is independent of the other components. To combine into a single web site, just include the .js file and core files for the components we are using. Also, it supports .NET, JSP, PHP, ASP, Perl, Python, Ruby or any other server technology.<br /><br />As its slogan says, "Comprehensive, Standards Driven, Fast Deployment, Cross-Browser Compliant", is quite attractive to us. You can view the demo of each component and maybe you will like it.<br /><br /><span style="font-style: italic; color: rgb(204, 102, 204);font-size:85%;" >Reference:</span><br /><ul><li><a href="http://www.zapatec.com/website/main/"><span style="font-size:85%;">Homepage of Zapatec</span></a></li><li><span style="font-size:85%;"><a href="http://wiki.osafoundation.org/bin/view/Projects/AjaxLibraries">Ajax/JavaScript Library Comparasion</a><br /></span></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-13879041331150513122007-03-02T12:57:00.000+08:002007-03-02T13:25:01.385+08:00WK6 - AJAX Framework Introduction<p class="MsoNormal"><st1:city st="on"><b><span style="" lang="EN-US">Ajax</span></b></st1:city><b><span style="" lang="EN-US"> framework</span></b><span style="" lang="EN-US"> forms part of <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29" title="Ajax (programming)"><i>Ajax</i></a>; a technology to build dynamic web pages on the client side.<o:p></o:p></span></p> <p class="MsoNormal"><span style="" lang="EN-US">The goal of the framework is to provide this <st1:city st="on"><st1:place st="on">Ajax</st1:place></st1:city> engine and associated server and client-side functions.<o:p></o:p></span></p> <h2><span class="mw-headline" style="font-size:85%;"><span lang="EN-US">Benefit of a framework</span></span><span lang="EN-US" style="font-size:10;"><o:p></o:p></span></h2> <p><span lang="EN-US" style="font-size:100%;">A framework eases the work of the <st1:city st="on"><st1:place st="on">Ajax</st1:place></st1:city> programmer at two levels: on the client side, it offers JavaScript functions to send requests to the server. On the server side, it processes the requests, searches for the data, and transmits them to the browser.</span></p><p><br /><span lang="EN-US" style="font-size:10;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><b><span lang="EN-US" style="font-family:宋体;">JavaScript and Server Technology Independent Frameworks</span></b></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">Many <st1:city st="on"><st1:place st="on">AJAX</st1:place></st1:city> frameworks and libraries rely solely upon JavaScript and contain no server components, therefore no server technology dependencies. Such <st1:city st="on"><st1:place st="on">AJAX</st1:place></st1:city> libraries and frameworks include:<o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Apache_XAP" title="Apache XAP">Apache XAP</a>. Open Source Ajax Framework for large scale JavaScript applications<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://qooxdoo.org/" title="http://qooxdoo.org">qooxdoo</a> is one of the most comprehensive and innovative Open Source (EPL/LGPL) multipurpose <st1:city st="on"><st1:place st="on">AJAX</st1:place></st1:city> frameworks. It includes support for professional JavaScript development, a state-of-the-art GUI toolkit and high-level client-server communication.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Clean_AJAX" title="Clean AJAX">Clean AJAX</a>. Easy-to-use <st1:city st="on"><st1:place st="on">AJAX</st1:place></st1:city> engine based on messages.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a>. Uses packages and reusable components.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Helmi_Technologies" title="Helmi Technologies">Helmi Open Source RIA Platform</a>. Flexible open sourced rich internet applications / <st1:city st="on"><st1:place st="on">AJAX</st1:place></st1:city> framework.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/JackBe" title="JackBe">JackBe</a>. A commercially licensed framework.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/JQuery" title="JQuery">JQuery</a> Lightweight JavaScript framework that emphasizes the interaction between JavaScript and HTML<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Mootools" title="Mootools">Mootools</a>. Very compact and modular javascript framework.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Prototype_Javascript_Framework" title="Prototype Javascript Framework">Prototype</a>. Is the base of several other frameworks.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://sarissa.sourceforge.net/doc/" title="http://sarissa.sourceforge.net/doc/">Sarissa</a> a open source cross-browser wrapper for native XML APIs<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/SmartClient" title="SmartClient">SmartClient</a>. Full GUI stack, <a href="http://en.wikipedia.org/wiki/Service-Oriented_Architecture" title="Service-Oriented Architecture">SOA</a>-style declarative integration with XML or JSON services, using <a href="http://en.wikipedia.org/wiki/XPath" title="XPath">XPath</a>.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://www.winlike.net/" title="http://www.winlike.net/">WinLIKE</a>. A free/commercial framework to include rich windows functions.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Yahoo" title="Yahoo">Yahoo</a> UI Library. A client-side framework that bundles several API's including an AJAX API, several DHTML interface components, implementations for extended behaviour.<o:p></o:p></span></li></ul> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">Such frameworks are agnostic as to what server-side technology you choose to use. Usually such frameworks are optimized to consume XML, though <a href="http://en.wikipedia.org/wiki/JSON" title="JSON">JSON</a> is becoming popular as well.</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left; color: rgb(204, 0, 0);" align="left"><span style="font-size:130%;"><b><span lang="EN-US" style="font-family:宋体;">Python frameworks</span></b></span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">These frameworks require the Python programming language to run, and the goal is to bring together several Python components designed to help in building web applications. Examples of Python frameworks include:<o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/TurboGears" title="TurboGears">TurboGears</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/Django_%28web_framework%29" title="Django (web framework)">Django</a></span></li></ul><br /><p><span lang="EN-US" style="font-size:10;"><span style="font-style: italic;font-size:130%;" >Let’s get further upon Django.</span></span></p><p><br /><span lang="EN-US" style="font-size:10;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><b><span lang="EN-US" style="font-family:宋体;">Django Components</span></b></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">The core Django framework consists of an <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" title="Object-relational mapping">object-relational mapper</a> which mediates between <a href="http://en.wikipedia.org/wiki/Data_modeling" title="Data modeling">data models</a> (defined as Python classes) and a <a href="http://en.wikipedia.org/wiki/Relational_database" title="Relational database">relational database</a>; a <a href="http://en.wikipedia.org/wiki/Regular_expression" title="Regular expression">regular-expression</a>-based <a href="http://en.wikipedia.org/wiki/URL" title="URL">URL</a> dispatcher; and a view and <a href="http://en.wikipedia.org/wiki/Web_template_system" title="Web template system">templating system</a>.<o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">Also included in the core framework are:<o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A form serialization and validation system which can translate between <a href="http://en.wikipedia.org/wiki/HTML" title="HTML">HTML</a> forms and values suitable for storage in the database.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A <a href="http://en.wikipedia.org/wiki/Web_cache" title="Web cache">caching</a> framework which can use any of several cache methods.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Support for <a href="http://en.wikipedia.org/wiki/Middleware" title="Middleware">middleware</a> classes which can intervene at various stages of request processing and carry out custom functions.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">An internal dispatcher system which allows components of an application to communicate events to each other via pre-defined signals.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">An <a href="http://en.wikipedia.org/wiki/Internationalization" title="Internationalization">internationalization</a> system, including translations of Django's own components into a variety of languages.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A serialization system which can produce and read <a href="http://en.wikipedia.org/wiki/XML" title="XML">XML</a> and/or <a href="http://en.wikipedia.org/wiki/JSON" title="JSON">JSON</a> representations of Django model instances.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A system for extending the capabilities of the template system by writing and registering custom functions for use in templates.</span></li></ul><br /><p class="MsoNormal" style="text-align: left;" align="left"><a name="Bundled_applications"></a><b><span lang="EN-US" style="font-family:宋体;">Bundled applications</span></b></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">The main Django distribution also bundles a number of applications in its "contrib" directory; among them are:<o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">The dynamic administrative interface.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">An extensible authentication system.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Tools for generating <a href="http://en.wikipedia.org/wiki/RSS_%28file_format%29" title="RSS (file format)">RSS</a> and <a href="http://en.wikipedia.org/wiki/Atom_%28standard%29" title="Atom (standard)">Atom</a> syndication feeds.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A flexible commenting system, which is able to attach comments to any valid object in a model.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">A lightweight, standalone web server for server-independent development and testing.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Tools for generating <a href="http://en.wikipedia.org/wiki/Google_Sitemaps" title="Google Sitemaps">Google Sitemaps</a>.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Tools for preventing <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery" title="Cross-site request forgery">cross-site request forgery</a>.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Tools for allowing one Django installation to manage multiple websites.<o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Template libraries which enable the use of <a href="http://en.wikipedia.org/wiki/Lightweight_markup_language" title="Lightweight markup language">lightweight markup languages</a> such as <a href="http://en.wikipedia.org/wiki/Textile_%28markup_language%29" title="Textile (markup language)">Textile</a> and <a href="http://en.wikipedia.org/wiki/Markdown" title="Markdown">Markdown</a>.</span></li></ul><br /><a name="Server_arrangements"></a><b><span lang="EN-US" style="font-family:宋体;">Server arrangements</span></b><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">Django can run on <a href="http://en.wikipedia.org/wiki/Apache_HTTP_Server" title="Apache HTTP Server">Apache</a> under <a href="http://en.wikipedia.org/wiki/Mod_python" title="Mod python">mod_python</a>, or under any <a href="http://en.wikipedia.org/wiki/WSGI" title="WSGI">WSGI</a>-compliant web server. Django also includes the ability to launch a <a href="http://en.wikipedia.org/wiki/FastCGI" title="FastCGI">FastCGI</a> server, enabling use behind any web server which supports FastCGI.<o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">The following databases are officially supported for use with Django:<o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/MySQL" title="MySQL">MySQL</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/PostgreSQL" title="PostgreSQL">PostgreSQL</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><a href="http://en.wikipedia.org/wiki/SQLite" title="SQLite">SQLite</a><o:p></o:p></span></li></ul> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">Adapters for <a href="http://en.wikipedia.org/wiki/Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft SQL Server</a> and <a href="http://en.wikipedia.org/wiki/Oracle_database" title="Oracle database">Oracle</a> are under development, but are still experimental.</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><a name="The_Django_Book"></a><b><span lang="EN-US" style="font-family:宋体;">The Django Book</span></b></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;">The Django Book is a free book (released under the <a href="http://en.wikipedia.org/wiki/GNU_Free_Document_License" title="GNU Free Document License">GNU Free Document License</a>) about the Django framework. It's currently in beta and will be published sometime in 2007 by <a href="http://en.wikipedia.org/wiki/Apress" title="Apress">Apress</a>. The current version of the book can be found at <a href="http://www.djangobook.com/" title="http://www.djangobook.com/">http://www.djangobook.com/</a></span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p><span lang="EN-US" style="font-size:10;"><span style="font-style: italic; color: rgb(204, 102, 204);font-size:100%;" >Reference:</span><o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://www.djangoproject.com/" title="http://www.djangoproject.com">Django Project home page</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://djangosearch.com/" title="http://djangosearch.com/">Django search engine</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://code.djangoproject.com/wiki/DjangoCheatSheet" title="http://code.djangoproject.com/wiki/DjangoCheatSheet">Django Cheatsheet</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://www.turbogears.org/about/index.html" title="http://www.turbogears.org/about/index.html">TurboGears homepage</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://planet.turbogears.org/" title="http://planet.turbogears.org/">TurboGears Blogs</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span style=";font-family:宋体;font-size:85%;" lang="EN-US" ><a href="http://groups.google.com/group/turbogears" title="http://groups.google.com/group/turbogears">TurboGears google group</a><o:p></o:p></span></li><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;"><span style="font-size:85%;"><a href="http://showmedo.com/videos/TurboGears" title="http://showmedo.com/videos/TurboGears">TurboGears screencasts</a> and related videos</span><o:p></o:p></span></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-56726247943871666702007-02-14T01:28:00.000+08:002007-02-14T02:59:44.903+08:00WK5 - Summary on the third party libraries for AJAX.<div style="text-align: justify;"><span style="color: rgb(153, 102, 51);font-family:georgia;font-size:130%;" ><span style="font-style: italic;">The library has wrapped up common functionality, and been reused across projects, and it can reduce the amount of custom coding needed for a project and increases productivity. Furthermore, since, the library code has already been tested in previous projects, the quality can be expected to be high.</span></span><br /><br /></div><div style="text-align: center;"><span style="font-weight: bold; color: rgb(255, 0, 0);"><span style=";font-family:trebuchet ms;font-size:180%;" >Cross-browser libraries</span></span><br /><span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br /></div><div style="text-align: justify;"><span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br /><span style="font-weight: bold; color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0); font-style: italic;">It is to help to resolve the inconsistencies between different browser. some focus on functionality, some focus on programming environment.</span></span><br /><span style="font-weight: bold; color: rgb(255, 0, 0);"></span><br /><span style="font-weight: bold; color: rgb(255, 0, 0);"></span><span style="color: rgb(255, 0, 0);"><span style="font-weight: bold;font-size:130%;" ><span style="color: rgb(51, 0, 0);">x library</span></span></span><br /><span style="color: rgb(255, 0, 0);"></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 0, 0);">Its general-purpose library is for writing DHTML application. It provides cross-browser functions for manipulating and styling DOM elements, working with browser event model, and includes out-of-box support libraries for animation and drag and drop. It doesn't contain any code for the creating network requests, but is a useful library for constructing the user interfaces for AJAX application. written in a clear, understandable style.</span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);"><span style="font-weight: bold;font-size:130%;" >Sarissa</span></span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);"></span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);">More targeted library than x, and is concerned chiefly with XML manipulation in JavaScript. The most important piece of functionality for AJAX developers is cross-browser support for the XMLHttpRequest object. It supports IE's MSXML ActiveX components (version 3+), Mozilla, Opera, Konqueror, Safari for basic functionality, some of advanced feature such as XPath and XSLT are supported by a smaller range of browsers.</span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);"></span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);">Sarissa also provides a number of generic support mechanisms for working with XML documents, such as serialize arbitrary JavaScript objects to XML. If we use XML as the markup for response data, these mechanisms can be useful in processing the XML documents returned from an AJAX request to the server.</span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);"></span></span></span><span style="font-size:130%;"><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(51, 102, 255);"><span style="font-weight: bold;"><span style="color: rgb(255, 102, 0);">Prototype</span></span></span></span></span></span><br /><br /><div style="text-align: justify;"><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(255, 102, 0);">Prototype is a general-purpose helper library for JavaScript programming, with </span></span></span><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(255, 102, 0);">an emphasis on extending the JavaScript language itself to support a more </span></span></span><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(255, 102, 0);">object-oriented programming style. Prototype code itself can be difficult to read, most developers are more likely to use the libraries built on top of Prototype than to use Prototype itself.</span></span></span><br /></div><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(255, 102, 0);">Feature:</span></span></span><br /><span style="color: rgb(255, 0, 0);"><span style="color: rgb(51, 51, 51);"><span style="color: rgb(255, 102, 0);"></span></span></span></div><ol style="color: rgb(255, 102, 0); text-align: justify;"><li>Allow one object to "extend" another by copying all of the parent object's properties and methods to the child.</li><li>Prototype also provides AJAX support in the form of an AJAX object that can resolve a cross-browser XMLHttpRequest object. AJAX is extended by the Ajax.Request type, which can make requests to the server using XMLHttpRequest, like so: var req=new Ajax.Request('myData.xml'); An associate array as an optional argument allows a wide range of options to be configured, such as post data, request parameters, HTTP method, and callback handlers to be defined.<br /></li></ol><div style="text-align: center;"><span style="color: rgb(255, 0, 0); font-weight: bold;font-family:trebuchet ms;font-size:180%;" >Widgets and widget suites </span><br /></div><div style="text-align: justify;"><br /><span style="color: rgb(255, 0, 0); font-style: italic; font-weight: bold;">With these tools constructing functional UIs and application logic is certainly simplified.</span><br /><span style="color: rgb(255, 0, 0); font-style: italic; font-weight: bold;"></span><br /><span style="color: rgb(255, 0, 0); font-style: italic; font-weight: bold;"></span><span style="color: rgb(153, 51, 153); font-weight: bold;font-size:130%;" >Scriptaculous</span><br /><br /><span style="color: rgb(153, 51, 153);">It is built on top of Prototype library. It provide 2 major pieces of functionality.</span><br /><br /></div><ol style="text-align: justify;"><li style="color: rgb(153, 51, 153);">The effect library defines a range of animated visual effects that can be applied to DOM elements ( change size, position, and transparency); A number of predefined secondary effects such as Puff() makes an element grow larger and more transparent until it fades away completely. Another core effect is called Parallel(), enable simultaneous execution of multiple effects.</li><li><span style="color: rgb(153, 51, 153);">Provide a drag-and-drop library, through Sortable class. This class takes a parent DOM element as an argument and enables drag-and-drop functionality for all its children.</span></li></ol><span style="font-size:130%;"><span style="color: rgb(51, 204, 0); font-weight: bold;">Rico </span></span><br /><div style="text-align: justify;"><br /></div><ul style="color: rgb(51, 204, 0); text-align: justify;"><li>It is built on Prototype library too. Not only provide some highly customizable effects and drag-and-drop effects functionality. In addition, it provides a concept of a Behavior object, a piece of code that can be applied to part of a DOM tree to add interactive functionality to it.</li><li>Last feature of Rico to mention is that it provides very good support for AJAX-style requests to the server, through a global Rico Ajax Engine object. It defines an XML response format that consists of a number of <response> elements. The engine will automatically decode these, and it has built-in support for two types of response: 1) direct update DOM elements and 2) update JavaScript objects.</response></li></ul><div style="text-align: justify;"><span style="font-weight: bold;font-size:130%;" ><span style="color: rgb(153, 51, 0);">Gaia Ajax Web Widgets - </span><a style="color: rgb(153, 51, 0);" href="http://ajaxwidgets.com/">to its Homepage</a></span><br /><br /><span style="color: rgb(153, 51, 0);">Gaia Ajax Web Widgets is an Ajax library for developing Ajax applications for ASP.NET. (2.0 and higher) It is a commercial library but has a stripped down free .zip download. It has a different approach than most of the other Ajax widgets libraries that mostly do update the complete HTML and sends HTML over the net. Instead Gaia has chosen to mirror the control class hierarchy on the client side and post JavaScript updates to concrete objects. It relies heavily on Prototype.js and Scriptaculous in its core and consists of fairly advanced JavaScript code like prototype inheritance and JavaScript "polymorphism". Though all JavaScript is abstracted away so the developer can mostly develop in the language he's used to developing in like C# or VB.NET.<br /><br /><span style="font-weight: bold;font-size:130%;" ><span style="color: rgb(102, 102, 102);">Microsoft AJAX Library - </span><a style="color: rgb(102, 102, 102);" href="http://ajax.asp.net/">to Microsoft AJAX Library</a></span><br /><br /></span><span style="color: rgb(102, 102, 102);">The Microsoft AJAX Library is a standalone collection of the standards-based JavaScript classes included in ASP.NET AJAX. It is supported by most popular browsers and can be used to build client-centric web applications that integrate with any back end data provider.</span><br /><br /><span style="color: rgb(204, 102, 204); font-style: italic;">Reference:</span><br /></div><ul style="text-align: left;"><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Rico_%28Ajax%29">Rico Library: http://en.wikipedia.org/wiki/Rico_%28Ajax%29</a></span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Scriptaculous">Scriptaculous: http://en.wikipedia.org/wiki/Scriptaculous</a></span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Gaia_Ajax_Web_Widgets">Gaia Ajax Web Widgets: http://en.wikipedia.org/wiki/Gaia_Ajax_Web_Widgets</a></span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Microsoft_AJAX_Library">Microsoft AJAX Library: http://en.wikipedia.org/wiki/Microsoft_AJAX_Library</a><br /></span></li><li><span style="font-size:85%;">AJAX in Action,2005<br /></span></li></ul><div style="text-align: justify;"><br /></div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-59783625495048481782007-02-14T00:03:00.000+08:002007-02-14T00:54:17.194+08:00WK5 - Model-View-Controller (MVC) applying to AJAX;<a href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller (MVC</a><a href="http://en.wikipedia.org/wiki/Model-view-controller">) </a>is a way of describing a good separation between the part of a program that interacts with a user and the part that does the heavy lifting, number crunching, or other "business end" of the application.<br /><br />The MVC pattern identifies three roles that a component in the system can fulfill.<br /><br />The Model is the representation of the application's problem domain, the thing that it is there to work with. For example, a word processor would model a document; a mapping application would model points on a grid, contour lines, and so on.<br /><br />The View is the part of the program that presents things to the user- input forms, pictures, text or widgets. The view need not be graphical. In a voice-driven program, for example, the spoken prompts are the View.<br /><br />The golden rule of MVC is that the View and the Model shouldn't talk to each other. Taken at face value, that might sound like a pretty dysfunctional program, but this is where the Controller comes in. When the user presses a button or fills in a form, the View tells the Controller. The Controller then manipulates the Model and decides whether the changes in the Model require an update of the View, it tells the View how to change itself.<br /><br />The advantage of this is that the Model and View remain loosely coupled, that is, neither has a deep understanding of the other. Obviously they need to enough to get the job done, but the View knows about the Model only in very general terms.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6nbGUDj_ylsiR1E9tKgu50LyTgCsCRMED96G3w0UWUUl96DfHxG3jz8pV9d1gT9vBQpvA03hyQjR7o-Bg-RaDhyphenhyphenm111IJom7WxFTiV7-Np9WLhacWtaqriaDNWmRO_R_XLZCl54YAA2QL/s1600-h/Untitled.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6nbGUDj_ylsiR1E9tKgu50LyTgCsCRMED96G3w0UWUUl96DfHxG3jz8pV9d1gT9vBQpvA03hyQjR7o-Bg-RaDhyphenhyphenm111IJom7WxFTiV7-Np9WLhacWtaqriaDNWmRO_R_XLZCl54YAA2QL/s400/Untitled.jpg" alt="" id="BLOGGER_PHOTO_ID_5031056295104182706" border="0" /></a><br />Come back to AJAX and look at Figure 3.8. The Model is our collection of domain objects, persisted to the database automatically using our <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM (Object Relational Mapping).</a> The View is the template defining the XML format. The Controller is to glue the Model and the View together. In web server tier of AJAX application which serves XML documents.<br /><br />Although different design pattern we work with, the principle is the same. For some instances, J2EE enterprise beans abstract the Model and Controller to the point where they can reside on different servers. .NET "code-behind" classes delegate the Controller role to page-specific objects, whereas frameworks such as Struts define a "front controller" that intercepts and routes all request to the application. Framework such as Apache Struts have works this down to a fine art, refining the role of the Controller to route the user between pages, as well as applying at the single-page level. (In an AJAX application, we might do this in the JavaScript.) But in all cases, the mapping is basically the same, and this is how MVC is generally understood in the web application world.<br /><br />Describing our web architecture using MVC is useful approach, and it will continue to serve us well as we move from classic to AJAX-style application. But it isn't the only use to which we can put MVC in AJAX.<br /><br /><span style="color: rgb(255, 153, 255);font-size:100%;" ><span style="font-style: italic;">Reference:</span></span><br /><ul><li><span style="font-size:85%;">AJAX in Action - Chapter 3;</span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Model-view-controller">http://en.wikipedia.org/wiki/Model-view-controller</a></span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Object-relational_mapping">http://en.wikipedia.org/wiki/Object-relational_mapping</a></span><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-90926885585258318222007-02-09T22:13:00.000+08:002007-02-09T22:36:07.060+08:00WK4 - Experiencing Windows Vista.<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYjq6e7K3tqC5dcSCH9hyRm-dIqhksfn-WFl0zic0x-2mTrHrdYTZGKfLe3jmA8vZkyBjZSA5cHTKkwS8oELBoQSkwgstMtzri0HOd1yahYB2p1GM6VPQxeQo4SOwDiFGEB01S4IUk2H2C/s1600-h/Untitled.jpg"><img id="BLOGGER_PHOTO_ID_5029546850322839938" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYjq6e7K3tqC5dcSCH9hyRm-dIqhksfn-WFl0zic0x-2mTrHrdYTZGKfLe3jmA8vZkyBjZSA5cHTKkwS8oELBoQSkwgstMtzri0HOd1yahYB2p1GM6VPQxeQo4SOwDiFGEB01S4IUk2H2C/s400/Untitled.jpg" border="0" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinZzzlG6YLWOtrxDkJRxsle1vmC5nuThgqNWbdxYIVsoGoJVEvmZA7CQnfp6C9KTy5BZAYIYSu3bOlGdnyqpl4afag52OsYSRokQ4ZSDI4qwqf9L2zb2DiAqvozCS84sdn499LaUkG2Nfh/s1600-h/Untitled9.jpg"><img id="BLOGGER_PHOTO_ID_5029541773671496050" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinZzzlG6YLWOtrxDkJRxsle1vmC5nuThgqNWbdxYIVsoGoJVEvmZA7CQnfp6C9KTy5BZAYIYSu3bOlGdnyqpl4afag52OsYSRokQ4ZSDI4qwqf9L2zb2DiAqvozCS84sdn499LaUkG2Nfh/s400/Untitled9.jpg" border="0" /></a><br /><span style="color:#993399;"><span style="font-size:180%;"><span style="color:#ff0000;">Look!</span><span style="color:#993399;"> </span></span><span style="font-size:130%;">that's my desktop snapshot - experiencing Aero 3D Flipping. It's cool and fancy and can be running smoothly though a little tough to my IBM T60 laptop.</span></span></div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com1tag:blogger.com,1999:blog-3132094112114117756.post-13485892166066227302007-02-09T21:31:00.000+08:002007-02-14T00:57:43.478+08:00WK4 - Quick glance at AJAX.<strong><span style="color: rgb(255, 0, 0);font-family:courier new;font-size:180%;" >AJAX</span></strong>, acronym for Asynchronous JavaScript and XML, is a web development technique for creating interactive web application, its intent is to make web pages feel more responsive by exchanging small amount of data with sever behind the scenes. AJAX like DHTML, LAMP and SPA is not a technology in itself but a term of the use of a group of technologies.<br /><br />AJAX uses a combination of, see <em>figure 2.1</em>:<br /><div> </div><ol><li><span style="color: rgb(255, 153, 0);"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">XHTML</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_1">CSS</span></span>, for markup and styling.</li><br /><li><span style="color: rgb(255, 204, 51);"><span style="color: rgb(255, 204, 0);">DOM</span> </span>accessed with client-side scripting language such as Javascript and <span class="blsp-spelling-error" id="SPELLING_ERROR_2">JScript</span>, for dynamically display and interact with the information presented.</li><br /><li><span style="color: rgb(204, 51, 204);"><span class="blsp-spelling-error" id="SPELLING_ERROR_3">XMLHttpRequest</span></span> object, for exchanging data asynchronously with the web server.</li><br /><li><span style="color: rgb(51, 255, 51);">XML</span>, as a format for <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">transferring</span> data between server and client.</li></ol><br /><p></p><img id="BLOGGER_PHOTO_ID_5030866307225844130" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzPw4qd5Sjrt9d9z9L17s8jHFtgo7qjVxGWN7v7D4e5yKGr_hBoW-KuCNnBPTeDqKSsB0m-Thl0yQrTHYDbGQ9L5FKH_bAr-3F2g9_mjuqrEfmDzmIPYZ3FOXo6S7heJMSzdC8YeRo1IEI/s400/Untitled.jpg" border="0" /> <div> </div><div><strong><span style="color: rgb(51, 0, 0);font-family:verdana;font-size:130%;" >Pros and Cons</span></strong><br /><strong></strong><br /><strong><span style="color: rgb(255, 0, 0);">Pros:</span></strong><br /></div><ol><li><strong><span style="color: rgb(255, 0, 0);">an improvement to the user's experience;</span></strong></li><br /><li><strong><span style="color: rgb(255, 0, 0);">cut down the bandwidth consumption, "load on demand";</span></strong></li><br /><li><strong><span style="color: rgb(255, 0, 0);">encourage programmers to clearly separate the methods and formats used for the different aspects of information delivery via the web.</span></strong></li></ol><div><span style="color: rgb(0, 153, 0);">Cons:</span></div><ol><li><span style="color: rgb(0, 153, 0);">transparent to the history, means that browser doesn't return desired result as triggering the "Back" button and make user difficult to bookmark a particular state of the page;</span></li><br /><li><span style="color: rgb(0, 153, 0);">network latency may lead to the web page looks weird;</span></li><br /><li><span style="color: rgb(0, 153, 0);">be careful the Javascript, because the different implementation by different browsers or versions of a particular browser.</span></li></ol><span style="font-style: italic; color: rgb(255, 153, 255);">Reference:</span><br /><ul><li><span style="font-size:85%;">AJAX in Action - Chapter 2;</span></li><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/AJAX">http://en.wikipedia.org/wiki/AJAX</a></span><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-5790543504074584452007-02-09T21:09:00.000+08:002007-02-14T00:55:37.386+08:00WK4 - What is LAMP?<div align="justify">The acronym <span style="color: rgb(153, 0, 0);font-size:130%;" >LAMP</span> (or <span style="color: rgb(153, 0, 0);font-size:130%;" >L.A.M.P</span>) refers to a solution stack of free software programs commonly used together to run dynamic Web sites or servers.<br /><br /><ul><li><span style="color: rgb(255, 0, 0);"><em>L </em></span>for <span style="color: rgb(0, 0, 153);">L</span>inux, (referring to OS kernel);</li><li><span style="color: rgb(255, 0, 0);"><em>A</em></span> for <span style="color: rgb(0, 0, 153);">A</span>pache, (referring to Web server);</li><li><span style="color: rgb(255, 0, 0);"><em>M</em></span> for <span style="color: rgb(0, 0, 153);">M</span>ySQL, (referring to database management system);</li><li><span style="color: rgb(255, 0, 0);"><em>P</em></span> for <span style="color: rgb(0, 0, 153);">P</span>HP, sometimes <span style="color: rgb(0, 0, 153);">P</span>erl or <span style="color: rgb(0, 0, 153);">P</span>ython, (referring to the programming language).</li></ul><br />The combination of these technologies is used primarily to define a web server intrastructure, define a programming paradigm of developing software, and establish a software distribution package.<br /><br />And the LAMP stack is open source and origin in the CGI interfaces that becomes popular in the early 1990s. The LAMP could provide dynamic webpage comparing to other unified development solution such as J2EE, Microsoft's .NET architecture.<br /><br />You can come to <a href="http://www.mysql-apache-php.com/"><em>LAMP installation</em></a> to build up your own web server.<br /><br /><span style="font-style: italic; color: rgb(204, 51, 204);">Reference:</span><br /><ul><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29">http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29</a></span></li><li><span style="font-size:85%;"><a href="http://www.mysql-apache-php.com/">LAMP Installation</a></span><br /></li></ul></div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-67456776470513163952007-02-04T00:46:00.000+08:002007-02-04T00:50:04.461+08:00WK3 - Assignment description page was set up.I'm glad to share my experiences and make the technical problem known to you. <a href="http://202.85.193.10/jay/assignment_desc.html">Click here.</a>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com2tag:blogger.com,1999:blog-3132094112114117756.post-32592578003338051782007-02-02T22:59:00.000+08:002007-02-03T13:51:38.562+08:00WK3 - I have made up 2 CGI programs in my homepage.Refer to the last week, i promise for the RSS aggregator's release, and now it comes out for your test. Another function is a survey with Cookie. Click here to <a href="http://202.85.193.10/jay/cgi_form.html">CGI</a> to have a try. It's just a little tricky. I am not feel content on these, so i would like to get more things on this page. Welcome to concern with my page!Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-89910673704783264822007-02-02T13:13:00.000+08:002007-02-14T00:53:05.954+08:00WK3 - Installing your CGI script on a Unix systemRead the documentation for your HTTP server and check with your local system administrator to find the directory where CGI scripts should be installed; usually this is in a directory cgi-bin in the server tree.<br /><br />Make sure that your script is readable and executable by ``others''; the Unix file mode should be 0755 octal (use "<span style="color: rgb(255, 0, 0);">chmod 0755 filename</span>"). Make sure that the first line of the script contains <span style="color: rgb(255, 0, 0);">#!</span> starting in column 1 followed by the pathname of the Python interpreter, for instance:<br /><br /><span style="color: rgb(255, 0, 0);">#!/usr/local/bin/python</span><br /><br />Make sure the Python interpreter exists and is executable by ``others''.<br /><br />Make sure that any files your script needs to read or write are readable or writable, respectively, by ``others'' -- their mode should be 0644 for readable and 0666 for writable. This is because, for security reasons, the HTTP server executes your script as user ``nobody'', without any special privileges. It can only read (write, execute) files that everybody can read (write, execute). The current directory at execution time is also different (it is usually the server's cgi-bin directory) and the set of environment variables is also different from what you get when you log in. In particular, don't count on the shell's search path for executables (<a class="envvar" id="l2h-3816">PATH</a>) or the Python module search path (<a class="envvar" id="l2h-3817">PYTHONPATH</a>) to be set to anything interesting.<br /><br />If you need to load modules from a directory which is not on Python's default module search path, you can change the path in your script, before importing other modules. For example:<br /><br /><span style="color: rgb(204, 0, 0);">import sys<br />sys.path.insert(0, "/usr/home/joe/lib/python")<br />sys.path.insert(0, "/usr/local/lib/python")</span><br /><br />(This way, the directory inserted last will be searched first!)<br /><br /><span style="color: rgb(255, 153, 255); font-style: italic;">Reference:</span><br /><ul style="font-weight: bold;font-family:lucida grande;"><li style="font-weight: bold;font-family:arial;"><span style="font-size:85%;"><a href="http://docs.python.org/tut/tut.html">Python Tutorial.</a></span></li><li style="font-weight: bold;font-family:arial;"><span style="font-size:85%;"><a href="http://docs.python.org/inst/inst.html">Install Python Modules.</a><br /></span></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-38205335612692432082007-02-01T15:34:00.000+08:002007-02-02T13:18:12.602+08:00WK3 - Let me talk about "Pros and Cons of CGI"There are advantages and disadvantages to writing your Web applications as CGI programs.<br />I’ll talk about the good stuff first – the advantages of CGI programming.<br /><br />The main <span style="color:#ff0000;">advantage</span> of CGI programming is that it’s ultimate cross-platform technology. It works on Web servers running both Windows and UNIX, and with almost every Web server. So when you write CGI programs, you can be fairly certain that they’ll be portable to whatever environment you’ll want to run them in. The second major advantage of CGI is that it’s language of your choice. There‘s no need to learn a new programming language just to write CGI programs. If you choose a cross-platform language, like Perl, Python, it’s trivial to port your programs from UNIX to Windows, or vice visa.<br /><br />Another <span style="color:#ff0000;">advantage</span> of CGI is that it’s a very simple interface. It’s not necessary to have any special libraries to create a CGI program, or write your programs to use a particular API. Instead, CGI programs rely on the standard UNIX concepts of standard input, standard output and environment variables to communicate with the web server.<br /><br />Now let’s take a look at the <span style="color:#33cc00;">disadvantage</span> of CGI. The single greatest disadvantage of CGI program comes into play when write your programs in a scripting language. Every time a CGI program is requested, the interpreter for the scripting language has to be started, the script has to be evaluated, and then the script has to be executed. The fact that you have to run the Python interpreter every time a Python CGI script is requested is very inefficient. Whether this is a problem depends on how powerful your Web server is, how many requests there are for your CGI scripts, and how long it takes the CGI programs load. Generally speaking, the performance issue does not become a problem unless you run a very high traffic Web site, or you have an antiquated Web server.<br /><br />People who write their CGI program in a compiled language like C don’t have to deal with this problem, because there’s no extra overhead like that generated by an interpreter. In fact, it was once common to use small, fast-executing CGI programs as a gateway between the Web server and the application server process. That allowed the application server to work with Web servers that they can’t communicate with through a native interface.<br /><br />The other main <span style="color:#33cc00;">complaint</span> about CGI program is that they don’t make things as easy on Web programmers as some other newer Web application platforms. When you write a CGI program, in addition to all of the program logic that creates the functionality you want, you also have to write code to generate the HTML code for the page. Most of today’s popular application servers allow you to embed program logic within a standard HTML page, which can save some work when you write the programs. These application servers are also easier to learn for people who know HTML but don’t know how to program. It is, however, harder to write a structured, well organized programs when you use this type of technology, so the choice really is really one of preference. One isn’t absolutely better than another.Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com1tag:blogger.com,1999:blog-3132094112114117756.post-69714460715887397432007-01-27T23:37:00.000+08:002007-02-14T00:45:46.017+08:00WK2 - Let's aggregate RSS Feeds with Python!Hey, did you have a feeling with the power of RSS as i made you known. Do you want to add a function in your homepage that aggregates your friends' blog updatings.<br /><br />There is a way using Python. Let me tell you something that i know.<br /><br />First download Python 2.5 <a href="http://www.python.org/download/">here,</a> and second we parse the RSS feeds in Python with Mark Pilgrim's Universal Feed Parser (latest version 4.1) from <a href="http://www.feedparser.org/">here.</a> If you don't know anything about Python, you can have tutorial from Python's website (refer to their documentation) and also you can refer to the documentation of the RSS parser. With the powerful module, i hope you can fulfill your dream someday. Since i am still digging into the Python, if you are interested in this topic, join me with the CGI project and make our homepage look more professional!<br /><br />See you then. I hope the implementation comes out next week.<br /><br /><span style="font-style: italic; color: rgb(255, 153, 255);">Reference:</span><br /><ul><li><span style="font-size:85%;">Python Cookbook 2ed;</span></li><li><span style="font-size:85%;"><a href="http://www.feedparser.org">Universal Feed Parser.</a></span><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0tag:blogger.com,1999:blog-3132094112114117756.post-41165015962392622662007-01-27T22:57:00.000+08:002007-02-14T00:48:13.051+08:00WK2 - A preliminary description upon RSS.<p class="MsoNormal"><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:180%;"><b style="font-family:trebuchet ms;"><span lang="EN-US">Introduction to RSS</span></b></span></p><p class="MsoNormal"><span style="font-size:180%;"><b style="font-family:trebuchet ms;"><span lang="EN-US"><br /></span></b></span></p><p class="MsoNormal"><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">RSS is a family of web feed format used to publish frequently updated digital content, such as blogs, new feeds or podcast.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">RSS formats are specifying in XML. RSS delivers its inf</span><span lang="EN-US" style="font-size:100%;">ormation as XML file called an “RSS feed”, “webfeed”, “RSS stream”, or “RSS channel”.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">Most of web browsers and Email readers have integrated support for RSS feeds. Some newsreader software such as <a title="http://www.mozilla.com/thunderbird/" href="http://www.mozilla.com/thunderbird/">Mozilla Thunderbird</a> or <a title="http://www.forteinc.com" href="http://www.forteinc.com/">Forté Agent</a> is handy usefully to aggregate the RSS news.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">How does RSS work? Programs known as feed readers can check a list of feeds on behalf of user and display any update article that they find. It’s common to see an orange rectangle <v:stroke joinstyle="miter"><v:f eqn="if lineDrawn pixelLineWidth 0"><v:f eqn="sum @0 1 0"><v:f eqn="sum 0 0 @1"><v:f eqn="prod @2 1 2"><v:f eqn="prod @3 21600 pixelWidth"><v:f eqn="prod @3 21600 pixelHeight"><v:f eqn="sum @0 0 1"><v:f eqn="prod @6 1 2"><v:f eqn="prod @7 21600 pixelWidth"><v:f eqn="sum @8 21600 0"><v:f eqn="prod @7 21600 pixelHeight"><v:f eqn="sum @10 21600 0"><v:path extrusionok="f" gradientshapeok="t" connecttype="rect"><o:lock ext="edit" aspectratio="t"><v:imagedata title="16px-Feed-icon" src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C03%5Cclip_image001.png"><span style="font-size:0;"> </span></v:imagedata></o:lock></v:path></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:stroke></span><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirRypNV1PdkS9WLapkVyjMZoVe4OqHCMs1Q1beyoRHxdHz2ZThwIMUVbRwo08o0eviGTP24IHMCoqHyMVpTATmicfxm1Q-V__RZqKc9pJS6Rqo4WvzWpEp_2uC42aG3Usy-j79FdsLi1d/s1600-h/16px-Feed-icon.svg.png"><img id="BLOGGER_PHOTO_ID_5024725638793115490" style="cursor: pointer;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirRypNV1PdkS9WLapkVyjMZoVe4OqHCMs1Q1beyoRHxdHz2ZThwIMUVbRwo08o0eviGTP24IHMCoqHyMVpTATmicfxm1Q-V__RZqKc9pJS6Rqo4WvzWpEp_2uC42aG3Usy-j79FdsLi1d/s400/16px-Feed-icon.svg.png" border="0" /></a></span><span lang="EN-US" style="font-size:100%;"> or with letter </span><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpGUwee3XXHUKNIvy3CfJzPZuFuETAOcCKPhrdTlGby_qqg_VoX83sIEqBgCe3txl8JbD7nO0Dam50AmY3p7ctMjw6tLafWOccpuvClsj-psnoIKzJ6DkENxN1AN_KWPbLN9QRiJCpiWit/s1600-h/XML.gif"><img id="BLOGGER_PHOTO_ID_5024725930850891650" style="cursor: pointer;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpGUwee3XXHUKNIvy3CfJzPZuFuETAOcCKPhrdTlGby_qqg_VoX83sIEqBgCe3txl8JbD7nO0Dam50AmY3p7ctMjw6tLafWOccpuvClsj-psnoIKzJ6DkENxN1AN_KWPbLN9QRiJCpiWit/s400/XML.gif" border="0" /></a> </span><v:imagedata title="RSS" src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C03%5Cclip_image003.gif"><v:imagedata title="XML" src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C03%5Cclip_image004.gif"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ruxskNRrSVQH22TlsrKePF2CSw2Y3E2QNWD4SlWodL5iN-8kTjg1lYoQLsE3ahNVEM5_wOZU_24ttBqldsFhODyKZ1Is1fKh9QbkxbEFyBi7eO0BwYMMlCLq3LOEG8XifSW7sUIbg_BB/s1600-h/RSS.gif"><img id="BLOGGER_PHOTO_ID_5024725832066643826" style="cursor: pointer;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ruxskNRrSVQH22TlsrKePF2CSw2Y3E2QNWD4SlWodL5iN-8kTjg1lYoQLsE3ahNVEM5_wOZU_24ttBqldsFhODyKZ1Is1fKh9QbkxbEFyBi7eO0BwYMMlCLq3LOEG8XifSW7sUIbg_BB/s400/RSS.gif" border="0" /></a></span><span lang="EN-US" style="font-size:100%;">. It lets people to choose to subscribe.</span></v:imagedata></v:imagedata></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">Most Variously used standard today refers to RSS 2.0 (Really simple Syndication), Rich Site Summary (RSS 0.91, RSS 1.0), RDF Site Summary (RSS 0.9 and 1.0).</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">RSS module is to extend the basic XML schema established for more robust syndication of content.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:100%;"><b><span lang="EN-US"><span style=";font-family:trebuchet ms;font-size:180%;" >History</span></span></b></span></p><p class="MsoNormal"><br /><span style="font-size:100%;"><b><span lang="EN-US"><o:p></o:p></span></b></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">However, before RSS, several similar formats existed for syndication, but none achieved widespread popularity as using today. The earliest could be dated back to 1995. Ramanathan V. Guha at Apple Computer’s Advanced Technology Group developed the Meta Content Framework (MCF). Guha left Apple for Netscape and adapted MCF to use XML and create the version Resource Description Framework (RDF). RDF can be referred to the first version of RSS.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In March 1999, RSS 0.9 was named and used in My Netscape portal. So the first browser supported RSS was Netscape.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In 2001, AOL’s acquisition and reconstructing of Netscape, RSS/XML was redesigned.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">A working group and mailing list, RSS-DEV was set up by various users. They modified RSS 0.91 and claimed that was the property of his company. RSS‘s specification competition begun.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In Sep 2002, a final successor to RSS 0.92, known as RSS 2.0 released, emphasizing “Really Simple Syndication” as the 3 letter abbreviation.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In Nov 2002, New York Times offered its readers to subscribe to RSS news feeds and drove the RSS format’s becoming a de facto standard.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In Jan 2005, Sean B. Palmer, Christopher Schmidt, and Cody Woodard produced a preliminary draft of RSS 1.1, removing little-used features from 1.0.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In Dec 2005, Microsoft IE team and Outlook team announced in their blogs that they will be adopting the icon - orange square with white radio waves the industry standard and related formats such as Atom which first used in Mozilla Firefox browser <v:imagedata title="16px-Feed-icon" src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C03%5Cclip_image001.png"></v:imagedata></span><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirRypNV1PdkS9WLapkVyjMZoVe4OqHCMs1Q1beyoRHxdHz2ZThwIMUVbRwo08o0eviGTP24IHMCoqHyMVpTATmicfxm1Q-V__RZqKc9pJS6Rqo4WvzWpEp_2uC42aG3Usy-j79FdsLi1d/s1600-h/16px-Feed-icon.svg.png"><img id="BLOGGER_PHOTO_ID_5024725638793115490" style="cursor: pointer;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirRypNV1PdkS9WLapkVyjMZoVe4OqHCMs1Q1beyoRHxdHz2ZThwIMUVbRwo08o0eviGTP24IHMCoqHyMVpTATmicfxm1Q-V__RZqKc9pJS6Rqo4WvzWpEp_2uC42aG3Usy-j79FdsLi1d/s400/16px-Feed-icon.svg.png" border="0" /></a>.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">In Jan 2006, Rogers Cadenhead relaunched the RSS Advisory Board in order to move the RSS format forward.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:100%;"><b><span lang="EN-US"><span style="font-size:180%;"><span style="font-family:trebuchet ms;">Incompatibilities between RSS 2.x/1.x</span></span></span></b></span></p><p class="MsoNormal"><br /><span style="font-size:100%;"><b><span lang="EN-US"><o:p></o:p></span></b></span></p><p class="MsoNormal"><span style="font-size:100%;"><b><span lang="EN-US"><o:p></o:p></span></b></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">As noted in the history, there are different version of RSS, falling into 2 major branches (RDF and 2.*). The RDF, or RSS 1.x branch includes: RSS 0.90 (originated from Netscape RSS version), RSS 1.0 (by the RSS-DEV Working Group), RSS 1.1(updated and replace 1.0).</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The RSS 2.x branch includes the following versions: RSS 0.91 (simplified RSS version by Netscape), RSS 0.92-0.94(expansions of the RSS 0.91 format), RSS 2.0.1 (proclaimed to be “frozen”, stand for Really Simple Syndication).</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The latest part, later version in each branch are backward-compatible with earlier versions. Most syndication software supports both branches.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The extension mechanisms make it possible for each branch to track innovations in the other. RSS 2.x is the first one to support enclosures (podcasting). However, this extension is available for the RSS 1.x branch. Likewise, RSS 2.x does not support providing full-text in addition to a synopsis, but RSS 1.x can be used as an extension.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">The most serious compatibility problem is with HTML markup. Userland’s RSS reader didn’t filter out HTML markup from feeds which led to the inconsistency in how software handles HTML markup.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /><span style="font-size:0;"></span></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:100%;"><b><span lang="EN-US"><span style="font-size:180%;"><span style="font-family:trebuchet ms;">Atom - New specification to RSS 1.x/2.x</span></span></span></b></span></p><p class="MsoNormal"><br /><span style="font-size:100%;"><b><span lang="EN-US"><o:p></o:p></span></b></span></p><p class="MsoNormal"><span style="font-size:100%;"><b><span lang="EN-US"><o:p></o:p></span></b></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">A third group began a new syndication specification, Atom, in June 2003. It adopted by IETF (see RFC 4287).The relative benefits of Atom compared to the two RSS branches are debating within the Web-syndication community.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">Supporters claimed its relying on standard XML features, by specifying a payload container that can handle many different kinds of content without ambiguous, and having a specification maintained by a recognized standard organization.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;"><br /></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:100%;">Critics claim that Atom introduces a third branch of syndication specification, further confusing the marketplace.<br /></span></p><p class="MsoNormal"><span lang="EN-US"><o:p></o:p></span></p><br /><span style="font-style: italic; color: rgb(255, 153, 255);">Reference:</span><br /><ul><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/RSS">http://en.wikipedia.org/wiki/RSS</a></span></li><li><span style="font-size:85%;">Python Cookbook 2ed.</span><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com1tag:blogger.com,1999:blog-3132094112114117756.post-22072744302049798852007-01-22T10:43:00.000+08:002007-02-01T22:49:08.748+08:00WK2 - My Homepage release now(beta version)!<div align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijyvN5Dx-cyyoV06Lhn84bluryXZDT8VqY6YT9rNJTS0Qyk_yurbKLlI6mJnVEhYl896Vs_XlKHRb6uiSSxjxnZigCy6KxTS69N-yO3rBxH9GxVVTNz_Ep8q2FtKYZkZRFzeg05PwTGmXE/s1600-h/home.bmp"><img id="BLOGGER_PHOTO_ID_5023427390438618946" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijyvN5Dx-cyyoV06Lhn84bluryXZDT8VqY6YT9rNJTS0Qyk_yurbKLlI6mJnVEhYl896Vs_XlKHRb6uiSSxjxnZigCy6KxTS69N-yO3rBxH9GxVVTNz_Ep8q2FtKYZkZRFzeg05PwTGmXE/s400/home.bmp" border="0" /></a><br /><div style="text-align: center;"><span style="color: rgb(51, 51, 255);"><em><strong><span style="font-size:85%;">figure 1 Home Page entry look.</span><br /></strong></em><br /></span></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji2zf9MiLxDuFqrlI_7ljgMss2GX623hH4eUWZ_y9mWFJBekU7kbcq2Q0FLOHphyphenhyphenyDY7ViI_yzda1pdkMeD7j0r421ZGlk3ZMzffWDAWnvs0kDQ3DRCGAystwcRbwWsCd-5ajGULYmZbDD/s1600-h/bookmarks.bmp"><img id="BLOGGER_PHOTO_ID_5022948922491909938" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji2zf9MiLxDuFqrlI_7ljgMss2GX623hH4eUWZ_y9mWFJBekU7kbcq2Q0FLOHphyphenhyphenyDY7ViI_yzda1pdkMeD7j0r421ZGlk3ZMzffWDAWnvs0kDQ3DRCGAystwcRbwWsCd-5ajGULYmZbDD/s400/bookmarks.bmp" border="0" /></a><strong><span style="font-style: italic;font-size:85%;" ><span style="color: rgb(51, 51, 255);">figure 2 Bookmarks page entry look.</span></span><br /></strong><br /><br />Go around for more detail experience and have fun!! Click <a href="http://202.85.193.10/jay/index.html">here</a>!</div>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com2tag:blogger.com,1999:blog-3132094112114117756.post-25351926766366177372007-01-21T03:22:00.000+08:002007-02-14T00:50:10.728+08:00WK1 - Web 2.0 - new term to the WWW.Web 2.0, a phrase coined by O'Reilly Media in 2004, refers to a perceived or proposed second generation of Internet-based services - such as social networking sites, communication tools that emphasize online collaboration and sharing among users.<br /><br />Since 2004, some technicians and markets have adopted the phrase. However the exact meaning remains open to debate, notably Tim Berners Lee, have questioned whether the term has meaning.<br /><br />Web 2.0 hints at improved form of WWW. Some advocates suggest weblogs, social bookmarks, RSS feeds, Web APIs, and online Web services imply a significant change in web usage.<br /><br />At the early time of Web 2.0, which employed as a synonym for "Semantic Web", and indeed they are two concept and they complement each other.<br /><br />Tim O'Reilly give out his "4+1" level in the hierarchy of Web 2.0 which is embodied by examples of companies or products:<br />• Level 3 application, the most "web 2.0", which could only exist on the internet, deriving their power from the human connections and network effects Web 2.0 makes possible, and growing in effectiveness the more use them. He gave as examples: eBay, Wikipedia, Skype.<br />• Level 2 application, which can operate offline but gain advantages from going online, such as Flickr, Webshot.<br />• Level 1 application, also available offline but gain feature online, e.g. Writely (since 10 Oct 2006: Google Docs & Spreadsheets, offering group-editing capability online) and iTunes.<br />• Level 0 applications, would work as well offline, such as Yahoo! Local, and Google Maps.<br />• None-web application, like email, IM tools, and telephone.<br /><br />Web 2.0 websites exhibit some basic characteristics.<br />• Network as platform;<br />• Users owning the data on the site and exercising control over that data (YouTube, weblog);<br />• An architecture of participation and democracy that encourages users to add value to the application as they use it (Wikipedia, Flickr);<br />• A rich, interactive, user-friendly interface based on Ajax or similar; frameworks (Google map);<br />• Some social-networking aspects;<br />• Public goods.<br /><br />A web 2.0 website features a number of the following techniques:<br />• Ajax-based (rich application techniques)<br />• CSS<br />• Semantically valid XHTML / the use of Microformats<br />• Syndication and aggregation of data in RSS/Atom<br />• Clean and meaningful URLs<br />• Extensive use of folksonomies<br />• Weblog publishing<br />• Mashups<br />• REST or XML Webservices APIs<br /><br />Web 2.0 infrastructure may need the following major protocols:<br />• REST (Representational State Transfer) indicates a way to access and manipulate data on a server using the HTTP verbs GET, POST, PUT and Delete.<br />• SOAP involves POSTing XML messages and requests a server that may contain quite complex, but pre-defined, instructions for the server to follow.<br />(in both protocol, API defines access to the service. Servers use proprietary APIs, but standard web-service APIs have also come into wide use. Most communications with web services involve some form of XML.<br /><br />Criticism issues involve in the Web 2.0:<br />• What "Web 2.0" actually means, implies, or requires, the term mean different things to different people. (Some company proclaims itself "Web 2.0" for attempting at self-promotion than actual endorsement of the ideas behind Web 2.0. Some people still insist on the idea of Web 2.0, which doesn't mean the new version of WWW, but just continues to use "Web 1.0" technologies and concepts.)<br />• May cause "a second bubble" or "Bubble 2.0". Too many companies attempt to build up product with lack of business model.<br /><br /><span style="color: rgb(255, 153, 255); font-style: italic;">Reference:</span><br /><ul><li><span style="font-size:85%;"><a href="http://en.wikipedia.org/wiki/Web_2.0">http://en.wikipedia.org/wiki/Web_2.0</a></span><br /></li></ul>Cheng Chun Kithttp://www.blogger.com/profile/05082686663009021600noreply@blogger.com0