<?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-4069731548805942350</id><updated>2011-11-27T17:13:41.228-08:00</updated><category term='java webapps hosting free'/><category term='chart library'/><category term='postgresql'/><category term='postgres'/><category term='java browser api'/><category term='volume bar'/><category term='debug ajax'/><category term='java facebook api'/><category term='web code editor'/><category term='collaboration'/><category term='2.0 html parser'/><category term='companion js'/><category term='firebug'/><category term='java vs. php'/><category term='javascrip enabled'/><category term='gwt'/><category term='bug tracking'/><category term='chart webservice free'/><category term='hosting jsp gratis'/><category term='teaming'/><category term='open source'/><category term='php ide'/><category term='fbml ide'/><category term='library'/><category term='joomla plugin'/><category term='auto_increment'/><category term='firefox'/><category term='dojo 1.1.2'/><category term='java vs c++'/><category term='job'/><category term='css'/><category term='php editor'/><category term='web 2.0'/><category term='extjs themes'/><category term='keylogger'/><category term='macro'/><category term='facebook application'/><category term='lavoro roma'/><category term='interoperable'/><category term='gantt'/><category term='javascript bot'/><category term='trac alternative'/><category term='pie'/><category term='facebook app ide'/><category term='rails ide'/><category term='ereditarieta mysql'/><category term='java ide'/><category term='mysql'/><category term='java'/><category term='dbms inheritance'/><category term='ajax sparklines'/><category term='javascript enabled browser'/><category term='firebug for internet explorer'/><category term='debug internet explorer'/><category term='html charts'/><category term='sequence'/><category term='gwtext change theme'/><category term='uploading a file via ajax'/><category term='web chart'/><category term='ruby ide'/><category term='hosting java gratuito'/><category term='oracle'/><category term='dwr'/><category term='how to dynamically update a dijit tree'/><category term='java browser'/><category term='dojo'/><category term='ajax controls'/><category term='bar'/><category term='javascript debug'/><category term='open source teaming'/><category term='mib parsing'/><category term='html'/><category term='cross platform chart'/><category term='snmp'/><category term='facebook app hosting'/><category term='zcl'/><category term='php vs java'/><category term='dojo dynamic store'/><category term='gwt swap themes'/><category term='json'/><category term='svn'/><category term='subversion'/><category term='google app engine'/><category term='how to write facebook application'/><category term='java better than php'/><category term='shibboleth'/><category term='class table inheritanche'/><category term='javascript'/><category term='joomla'/><category term='open socure'/><category term='perl'/><category term='barra di controllo'/><category term='fedetation'/><category term='google chart api'/><category term='open source project managment'/><category term='mib file'/><category term='css bot'/><category term='ldap'/><category term='svn web interface'/><category term='opensource'/><category term='browser'/><category term='javascript chart'/><category term='ajax store'/><category term='javascript sparklines'/><category term='table inheritance mapping hibernate'/><category term='hibernate search inheritance'/><category term='how to chart in webapplications'/><category term='mercurial web interface'/><category term='gwtext'/><category term='hibernate'/><category term='mini-chart'/><category term='zembly'/><category term='mib'/><category term='mouselogger'/><category term='counter'/><category term='ajax'/><category term='logger'/><category term='java performance'/><category term='jsp free hosting'/><category term='ajax browser api'/><category term='java free hosting'/><category term='net-snmp'/><category term='ItemFileReadStore'/><category term='dwr 3.0 development status'/><category term='ie'/><category term='refresh dojo tree'/><category term='how to update dojo tree'/><category term='lightweigth sparklines'/><category term='firefox plugins'/><category term='slider'/><category term='offerte lavoro'/><category term='textual-convention'/><category term='ajax debug'/><category term='refreshing tree content'/><category term='saml2'/><category term='saml'/><category term='java to javascript serialization'/><category term='dwr hibernate integration'/><category term='servlet free hosting'/><category term='free java hosting'/><category term='java sparklines'/><category term='microsoft script debugger'/><category term='issue tracker'/><category term='open source project'/><category term='java twitter api'/><category term='shibboleth2'/><category term='mercurial'/><title type='text'>creativeprogramming.it</title><subtitle type='html'>Programming Arts</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-9167950426198475545</id><published>2009-11-24T16:52:00.001-08:00</published><updated>2009-11-24T16:52:59.706-08:00</updated><title type='text'>creativeprogramming.it new blog</title><content type='html'>&lt;a href="http://www.creativeprogramming.it/blogs/wp/"&gt;http://www.creativeprogramming.it/blogs/wp/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-9167950426198475545?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/9167950426198475545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=9167950426198475545&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/9167950426198475545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/9167950426198475545'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/11/creativeprogrammingit-new-blog.html' title='creativeprogramming.it new blog'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-1315918663666741539</id><published>2009-09-25T02:55:00.000-07:00</published><updated>2009-09-25T02:57:49.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='open source project'/><category scheme='http://www.blogger.com/atom/ns#' term='fedetation'/><category scheme='http://www.blogger.com/atom/ns#' term='interoperable'/><category scheme='http://www.blogger.com/atom/ns#' term='shibboleth'/><category scheme='http://www.blogger.com/atom/ns#' term='saml'/><category scheme='http://www.blogger.com/atom/ns#' term='joomla plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='shibboleth2'/><category scheme='http://www.blogger.com/atom/ns#' term='saml2'/><category scheme='http://www.blogger.com/atom/ns#' term='open socure'/><title type='text'>Joomla SAML2 Auth Extension</title><content type='html'>I'm glad to annunce the opening of my first owned open source project:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://asset-3.kenai.com/attachments/images/project/idemauth-1.jpg?20090911.3ccef79" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://asset-3.kenai.com/attachments/images/project/idemauth-1.jpg?20090911.3ccef79" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://asset-3.kenai.com/attachments/images/project/idemauth-1.jpg?20090911.3ccef79" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;SAML2 authentication for Joomla! A Joomla extension to support saml2 based SSO systems integrating simpleSAMLphp in joomla.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt; &lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;For use it in production you need only to install a component ad a plugin, and configure it with a web ui.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can &lt;b&gt;download &lt;/b&gt;it at:&amp;nbsp;&lt;a href="http://dev.garr.it/idemauth/"&gt;http://dev.garr.it/idemauth/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Videotutorial - How to install a SAML2 SP 15 minutes :&amp;nbsp;&lt;a href="http://dev.garr.it/idemauth/SPin15mins/15mins.html"&gt;http://dev.garr.it/idemauth/SPin15mins/15mins.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;You can &lt;/b&gt;aslo&lt;b&gt; join the open source project&lt;/b&gt; on Kenai (i'm open to anyone):&amp;nbsp;&lt;a href="http://kenai.com/projects/idemauth"&gt;http://kenai.com/projects/idemauth&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;Stefano Gargiulo.&lt;/i&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/4069731548805942350-1315918663666741539?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/1315918663666741539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=1315918663666741539&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1315918663666741539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1315918663666741539'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/09/joomla-saml2-auth-extension.html' title='Joomla SAML2 Auth Extension'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-2920174905036131635</id><published>2009-09-01T14:33:00.001-07:00</published><updated>2009-09-01T14:38:32.997-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='free java hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting java gratuito'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>VideoTutorial -- How to get your first java application on GoogleAppEngine (with persistence!)</title><content type='html'>This video tutorial is a straightforward way to getting started with google app engine java development.&lt;br /&gt;&lt;br /&gt;It's an "hello world" application with a java persiscence (OR/M) demo.&lt;br /&gt;&lt;br /&gt;"terrific"!&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/P3GT4-m_6RQ&amp;hl=it&amp;fs=1&amp;"&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/P3GT4-m_6RQ&amp;hl=it&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;2.0 developer life it's easy..&lt;br /&gt;enjoy again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-2920174905036131635?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/2920174905036131635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=2920174905036131635&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2920174905036131635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2920174905036131635'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/09/videotutorial-how-to-get-your-first.html' title='VideoTutorial -- How to get your first java application on GoogleAppEngine (with persistence!)'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3356744394368402596</id><published>2009-08-30T14:39:00.000-07:00</published><updated>2009-09-04T15:17:35.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zcl'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='java twitter api'/><category scheme='http://www.blogger.com/atom/ns#' term='java facebook api'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook app ide'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook app hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='how to write facebook application'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook application'/><category scheme='http://www.blogger.com/atom/ns#' term='zembly'/><category scheme='http://www.blogger.com/atom/ns#' term='fbml ide'/><title type='text'>2.0 Amazing tools: Creating facebook applications with Zembly and integrating them in external java webapps with ZCL gateway</title><content type='html'>Developers 2.0 have an easy life, open source communities are revolutionating the way of writing code: incapusulation of complexity is the key, sharing knowledge is the engine!&lt;br /&gt;&lt;br /&gt;Then how to write an &lt;span style="font-weight: bold;"&gt;amazing &lt;/span&gt;Facebook extension for your java web-application and get more people to your 2.0 app?&lt;br /&gt;it's Simple, incapsulate Facebook Apps complexity in Zembly, then incapsulate Zembly complexity in ZCL, then use ZCL in your app!&lt;br /&gt;&lt;br /&gt;But what's Zembly? Zembly is a wonderfull idea: an all-in-browser &lt;span style="font-weight: bold;"&gt;social&lt;/span&gt; development environment in wich you can create applications for social networks using a set of APIs, code-editors, &lt;span style="font-weight: bold;"&gt;and re-using and customizing&lt;/span&gt; community developed widgets (that's the magic: in Zembly open source is mandatory!!!)&lt;br /&gt;&lt;br /&gt;Zembly features:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Bring your creativity, bring your skills, bring your friends&lt;br /&gt;&lt;br /&gt; * Browser-based: Do everything in your browser. No downloads or installs.&lt;br /&gt; * Social programming: Create apps socially with other users, and reuse pieces and parts that they create. You choose the level of collaboration, from keeping everything private to making your app public and open source. We call it social programming.&lt;br /&gt; * Social networking: Connect with other zembly developers, watch their activity feeds, and send them messages. Be an expert, or get to know one, while working side-by-side with people in your social graph.&lt;br /&gt; * Templates: Community-provided templates let you create a useful application with a click. Even after you've created your application, it remains a template that you can easily customize with its graphical customization page. When you're ready, you can choose to customize every aspect of your application with zembly's IDE-class editor.&lt;br /&gt; * Cloning: Find an application or widget you like in zembly and clone it to make it your own, subject to the original author's permission of course.&lt;br /&gt; * IDE-class editor: When you want absolute control, use zembly's exclusive IDE-class editor to tweak any aspect of your app. Features like full syntax highlighting, error annotations, code completion, and automatic formatting and full language support for HTML, CSS, JavaScript, FBML, and FBJS give you all the power you need to make advanced changes your application.&lt;br /&gt; * Programming model: zembly makes consuming popular web APIs like Yahoo, Google, Flickr, Amazon, Twitter, YouTube, Dapper, and more trivially easy, with a single line of code. zembly's philosophy is that the web is your library.&lt;br /&gt; * BYOAPI: Have your own server or API? Describe it to zembly and then call it from your app. Or, publish your API to other zembly users and let them call it from their apps. zembly can make just about any RESTful API easy callable from your app with a single line of code. You can call APIs outside of zembly from your Java or JavaFx application.&lt;br /&gt; * Built-in hosting: Not only is zembly the fastest and easiest way to create your application, it's the fastest and easiest way to deploy it. Click the publish button and your app just runs. Best of all, zembly apps elastically scale on Sun's cloud infrastructure so you don't need to worry about creating or maxing our your own datacenter.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;yes, you've read correct: Zembly is aslo a free hosting service for Facebook apps (and not only Facebook apps..)&lt;br /&gt;&lt;br /&gt;Oh i'm loving my work, and i'm loving my Era: open source is the new kind of freedom!!!&lt;br /&gt;&lt;br /&gt;But stop phyloshopying, let's get concrete:&lt;br /&gt;&lt;br /&gt;here there are the Zembly-Facebook how-tos (videotutorials)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dnijQ_FVhHY&amp;amp;hl=it&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/dnijQ_FVhHY&amp;amp;hl=it&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;!--&lt;br /&gt;google_ad_client = "pub-7341718794342853";&lt;br /&gt;/* 300x250, creato 30/08/09 */&lt;br /&gt;google_ad_slot = "0706836104";&lt;br /&gt;google_ad_width = 300;&lt;br /&gt;google_ad_height = 250;&lt;br /&gt;//--&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&lt;br /&gt;src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0-QPbUAbIzM&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/0-QPbUAbIzM&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and here there is the ZCL (Zembly Client Libary) - Java how-to:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kenai.com/projects/zcl/pages/GettingStartedGuide"&gt;http://kenai.com/projects/zcl/pages/GettingStartedGuide&lt;/a&gt;&lt;br /&gt;&lt;a href="http://kenai.com/projects/zcl/pages/Home"&gt;http://kenai.com/projects/zcl/pages/Home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;then what other i can say??&lt;br /&gt;&lt;br /&gt;Eeeenjoooy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3356744394368402596?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3356744394368402596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3356744394368402596&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3356744394368402596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3356744394368402596'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/08/20-amazing-tools-creating-facebook.html' title='2.0 Amazing tools: Creating facebook applications with Zembly and integrating them in external java webapps with ZCL gateway'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-340940379324462359</id><published>2009-08-21T15:04:00.000-07:00</published><updated>2009-08-23T15:25:19.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='counter'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='auto_increment'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>PostgreSQL serial vs. MySQL auto_increment vs.  Oracle sequence</title><content type='html'>In PostgreSQL integer counters are more advanced than the MySQL auto_increments:&lt;br /&gt;&lt;br /&gt;Them are sequences (like in Oracle) this mean that them can be used like "shared counters in the db" (very usefull in my opinion to implement a global object id between tables and can be usefull aslo in class table inheritance implementations)&lt;br /&gt;&lt;br /&gt;This powerfull strument is a little boring to implement in Oracle:&lt;br /&gt;&lt;br /&gt;you need to create the sequence:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create table mytable (id number,txt varchar(255));&lt;br /&gt;&lt;br /&gt;create sequence mytable_seq&lt;br /&gt;start with 1&lt;br /&gt;increment by 1&lt;br /&gt;nomaxvalue; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and to associate it to the column inserts with a trigger:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create trigger mytable_seq_trigger&lt;br /&gt;before insert on test&lt;br /&gt;for each row&lt;br /&gt;begin&lt;br /&gt;select mytable_seq.nextval into :new.id from dual;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or instead of the trigger you can simply hardcode sequence next value call into insert statments:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;insert into mytable values(mytable_seq.nextval, 'yes but who does &lt;br /&gt;hardcoded inserts today?');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;but i think the best way to do this in Oracle is the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create table mytable (id number default mytable_seq.nextval,&lt;br /&gt; txt varchar(255));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;in this way you emulate the mysql way, that's usefull too: infact in this way if you want, you can specify the id value in an insert query or get the magic just not providing any value for the id in the insert query.&lt;br /&gt;&lt;br /&gt;this method is also the PostgreSQL's one, infact postgre combine the simplicty and comfort of MySQL auto_increments with the power of Oracle sequences:&lt;br /&gt;&lt;br /&gt;how to declare auto_increment in  postgre:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create table mytable (id serial, name chararter varying(255));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;that's all!&lt;br /&gt;&lt;br /&gt;but "serial" is just a shortcut-keyword: this is the real auto generated sql code :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE SEQUENCE inscritto_column_seq&lt;br /&gt;  INCREMENT 1&lt;br /&gt;  MINVALUE 1&lt;br /&gt;  MAXVALUE 9223372036854775807&lt;br /&gt;  START 1&lt;br /&gt;  CACHE 1;&lt;br /&gt;ALTER TABLE inscritto_column_seq OWNER TO rdbapp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ALTER TABLE mytable ALTER COLUMN id&lt;br /&gt;        SET DEFAULT nextval('mytable_column_seq'::regclass); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(i think in MySQL too happen a thing of this type, but the difference is that in PostgreSQL you can create and manage manually sequences like in Oracle, and take advantage of them power... for instance think at how easy and secure can be getting the last_insert_id of a table: &lt;span style="font-weight:bold;"&gt;select currval('ente_column_seq'::regclass);&lt;/span&gt; )&lt;br /&gt;&lt;br /&gt;but attention, in Postgre you got an error when try to change an integer column to serial:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create table mytable (id integer, name chararter varying(255));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;alter table mytable alter column id type serial; &lt;br /&gt;(ERROR: Type serial does not exist)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;this can be an issue?&lt;br /&gt;&lt;br /&gt;uhm.. no! that's how to alter integer to sequences in postgre:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE SEQUENCE mytable_id_seq&lt;br /&gt;        INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;&lt;br /&gt;    ALTER TABLE test_table ALTER COLUMN test_column&lt;br /&gt;        SET DEFAULT nextval('mytable_id_seq'::regclass); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note: if you have data in the table, instead of  &lt;pre&gt;MINVALUE 1&lt;/pre&gt;  use the value returned form this query: &lt;pre&gt;select max(id) from mytable;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-340940379324462359?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/340940379324462359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=340940379324462359&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/340940379324462359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/340940379324462359'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/08/postgresql-serial-vs-mysql.html' title='PostgreSQL serial vs. MySQL auto_increment vs.  Oracle sequence'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-2015243322734984930</id><published>2009-08-19T14:24:00.000-07:00</published><updated>2009-09-02T07:44:31.982-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt swap themes'/><category scheme='http://www.blogger.com/atom/ns#' term='gwtext change theme'/><category scheme='http://www.blogger.com/atom/ns#' term='extjs themes'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='gwtext'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>GWT-Ext -- How to programmatically swap themes</title><content type='html'>This is the source code of the nice combobox used for live changing the css theme in the gwtext demo showcase (&lt;a href="http://www.gwt-ext.com/demo/"&gt;http://www.gwt-ext.com/demo/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class ThemeChanger extends ComboBox {&lt;br /&gt;&lt;br /&gt;public ThemeChanger() {&lt;br /&gt;&lt;br /&gt; final Store store = new SimpleStore(new String[]{"theme", "label"}, new Object[][]{&lt;br /&gt;           new Object[]{"themes/green/css/xtheme-green.css", "Green"},&lt;br /&gt;           new Object[]{"themes/slate/css/xtheme-slate.css", "Slate"},&lt;br /&gt;       new Object[]{"js/ext/resources/css/xtheme-gray.css", "Gray"},&lt;br /&gt;       new Object[]{"xtheme-default.css", "Aero Glass"},&lt;br /&gt;       new Object[]{"themes/indigo/css/xtheme-indigo.css", "Indigo"},&lt;br /&gt;       new Object[]{"themes/silverCherry/css/xtheme-silverCherry.css", "Silver Cherry"}&lt;br /&gt; });&lt;br /&gt;&lt;br /&gt; store.load();&lt;br /&gt;&lt;br /&gt; setFieldLabel("Select Theme");&lt;br /&gt; setEditable(false);&lt;br /&gt; setStore(store);&lt;br /&gt; setDisplayField("label");&lt;br /&gt; setForceSelection(true);&lt;br /&gt; setTriggerAction(ComboBox.ALL);&lt;br /&gt; setValue("Green");&lt;br /&gt; setFieldLabel("Switch theme");&lt;br /&gt; addListener(new ComboBoxListenerAdapter() {&lt;br /&gt;    public void onSelect(ComboBox comboBox, Record record, int index) {&lt;br /&gt;       String theme = record.getAsString("theme");&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            CSS.swapStyleSheet("theme", theme);&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt; });&lt;br /&gt; setWidth(100);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;don't forget to add the related css includes in the GWT.xml file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; &lt;br /&gt;js/ext/resources/css/form.css&lt;br /&gt;js/ext/resources/css/ext-all.css&lt;br /&gt;js/ext/resources/css/xtheme-gray.css&lt;br /&gt;js/ext/resources/css/xtheme-xxx ecc...&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-2015243322734984930?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/2015243322734984930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=2015243322734984930&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2015243322734984930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2015243322734984930'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/08/gwt-ext-how-to-programmatically-swap.html' title='GWT-Ext -- How to programmatically swap themes'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-2938351015458174885</id><published>2009-08-18T01:43:00.000-07:00</published><updated>2009-08-20T10:43:09.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web chart'/><category scheme='http://www.blogger.com/atom/ns#' term='how to chart in webapplications'/><category scheme='http://www.blogger.com/atom/ns#' term='html charts'/><category scheme='http://www.blogger.com/atom/ns#' term='pie'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript chart'/><category scheme='http://www.blogger.com/atom/ns#' term='google chart api'/><category scheme='http://www.blogger.com/atom/ns#' term='cross platform chart'/><category scheme='http://www.blogger.com/atom/ns#' term='bar'/><category scheme='http://www.blogger.com/atom/ns#' term='chart library'/><category scheme='http://www.blogger.com/atom/ns#' term='chart webservice free'/><title type='text'>Google Chart API - the easy way to chart it!</title><content type='html'>My fall in love with google is getting concrete:&lt;br /&gt;&lt;br /&gt;I found Google Chart API: the easy way to generate charts in a web-application (less developing time, less computational cost, less loading time)&lt;br /&gt;&lt;br /&gt;The Google Chart API is a sort of "png-webservice" that generates for you png charts on demand (on http request)..&lt;br /&gt;&lt;br /&gt;Is very performant, and the only system dependence to get this "chart libary" working is an internet network connection on the client browser ( is not good for intranet-only webapps)&lt;br /&gt;&lt;br /&gt;for instance if I wanna draw into blogger my own chart:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample 1 - Virtual machines load&lt;/span&gt;&lt;br /&gt;&lt;a title="google chart api demo" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://chart.apis.google.com/chart?cht=bvs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chd=t:80,50,30%7C50,90,60&amp;amp;chds=0,160&amp;amp;chs=100x100&amp;amp;chl=vm1%7Cvm2%7Cvm3"&gt;&lt;img style="cursor: pointer; width: 100px; height: 100px;" src="http://chart.apis.google.com/chart?cht=bvs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chd=t:80,50,30%7C50,90,60&amp;amp;chds=0,160&amp;amp;chs=100x100&amp;amp;chl=vm1%7Cvm2%7Cvm3" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://chart.apis.google.com/chart?cht=bvs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chd=t:80,50,30%7C50,90,60&amp;amp;chds=0,160&amp;amp;chs=600x100&amp;amp;chl=vm1%7Cvm2%7Cvm3"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I need just to call the following url:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chart.apis.google.com/chart?cht=bvs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chd=t:80,50,30%7C50,90,60&amp;amp;chds=0,160&amp;amp;chs=100x100&amp;amp;chl=vm1%7Cvm2%7Cvm3"&gt;http://chart.apis.google.com/chart?cht=bvs&amp;amp;chco=4D89F9,C6D9FD&amp;amp;chd=t:80,50,30|50,90,60&amp;amp;chds=0,160&amp;amp;chs=100x100&amp;amp;chl=vm1|vm2|vm3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and embed it in as src in an html img tag.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With Google Chart API you can draw millions of  bar, pie, xy, area and other types of charts a day without having a draw engine running eating cpu on your server (think at critical cpu environvents, embedded systems, ecc.) aslo your server bandwith is saved in this, because the png file transfer is beetween Google and the client browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Sample 2 - My Ajax Framework Utilization&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:40,30,25,5&amp;amp;chs=450x200&amp;amp;chl=Dojo%20Toolkit%7CGWT%7CDWR%7CjQuery"&gt;&lt;img style="cursor: pointer; width: 450px; height: 200px;" src="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:40,30,25,5&amp;amp;chs=450x200&amp;amp;chl=Dojo%20Toolkit%7CGWT%7CDWR%7CjQuery" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:40,30,25,5&amp;amp;chs=450x200&amp;amp;chl=Dojo%20Toolkit%7CGWT%7CDWR%7CjQuery"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Table 1 - Comparsion of Charting Solutions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Google Chart API&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Server Side Chart Library&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Javascript Chart Library&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Server CPU Saving&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Client CPU Saving&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Server Bandwith Saving&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Client Bandwith Saving&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Server-Language Agnostic (Cross Platform)&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Cross Browser Compatibilty&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;non-full&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Live Ajax Charts&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Mouseover and OnClick on chart elements&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;Panning and Zooming&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;no&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;yes&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As reported in the table, if you need advanced features like mouse events on chart elements, panning, live updates etc. Google Chart API is not enough: you need a javascript chart library (i suggest dojo chart that's the more stable and complete in my opinion http://dojocampus.org/explorer/#Dojox_Charting_2D_Updating ) but pay attention if you need stability: javascript charting is a cutting-edge technology!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Obviously you can simulate live updates for fun:  :D (do not try this in production!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample 3 - Real Time Quotations&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="actions-dia" src="http://chart.apis.google.com/chart?cht=lc&amp;chs=400x125&amp;chd=t:52,34,20,55,40,63,18,67,23,45,31&amp;chdl=CreativeProgramming%20Inc." /&gt;&lt;br /&gt;&lt;br /&gt;&lt;input value="start live checking" onclick="randomizeActionsDia();" type="button"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-2938351015458174885?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/2938351015458174885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=2938351015458174885&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2938351015458174885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2938351015458174885'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/08/google-chart-api-easy-way-to-chart-it.html' title='Google Chart API - the easy way to chart it!'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-8845238012914141913</id><published>2009-08-14T03:25:00.000-07:00</published><updated>2009-08-14T03:38:09.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java vs c++'/><category scheme='http://www.blogger.com/atom/ns#' term='java vs. php'/><category scheme='http://www.blogger.com/atom/ns#' term='java performance'/><title type='text'>a little java performance highlighted quote...</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Why use Java instead of some other language like C or C++?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;Java is a very portable language that allows for&lt;b&gt; quick development&lt;/b&gt; of &lt;b&gt;robust&lt;/b&gt;&lt;b&gt; applications&lt;/b&gt; that work on a wide array of platforms without recompilation. Java &lt;b&gt;has special support for networking and concurrent processing&lt;/b&gt;, which has been particularly improved in recent versions. Its &lt;b&gt;exception handling&lt;/b&gt; capabilities make it possible to create very robust and stable applications, and it can provide a wealth of &lt;b&gt;debugging information&lt;/b&gt; when a problem does occur so that its cause can be quickly identified.&lt;/div&gt;&lt;div&gt;OpenDS is based on Java SE 5, which provides excellent performance. Java &lt;b&gt;bytecode&lt;/b&gt; is&lt;b&gt; natively compiled at runtime, &lt;/b&gt;which benefits from&lt;b&gt; inspecting the running code &lt;/b&gt;and&lt;b&gt; can result &lt;/b&gt;in performance that &lt;b&gt;exceeds that of C and C++ applications&lt;/b&gt;. Further, there are a number of &lt;b&gt;profiling and other performance analysis tools* &lt;/b&gt;for Java that can help&lt;b&gt; identify potential hotspots&lt;/b&gt; and&lt;b&gt; areas of contention&lt;/b&gt;. Finally, Java applications can benefit from performance improvements in the JVM, which is an area that is frequently being improved.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;from: &lt;a href="https://www.opends.org/wiki/page/ProjectDefinition"&gt;https://www.opends.org/wiki/page/ProjectDefinition&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Some Java profilers are open source: try netbeans 6.7 and his magnific profiler!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-8845238012914141913?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/8845238012914141913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=8845238012914141913&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8845238012914141913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8845238012914141913'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/08/little-java-performance-highlighted.html' title='a little java performance highlighted quote...'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-748571777339978570</id><published>2009-07-30T09:31:00.000-07:00</published><updated>2009-07-30T10:01:39.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='dwr'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo dynamic store'/><category scheme='http://www.blogger.com/atom/ns#' term='dwr hibernate integration'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='web code editor'/><category scheme='http://www.blogger.com/atom/ns#' term='uploading a file via ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='dwr 3.0 development status'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='java to javascript serialization'/><title type='text'>DWR 3.0 And Bespin are Coming</title><content type='html'>I found this interesting experiment by mozilla labs (it is a good promise: in guarantee of this  the fact that in it is involved the &lt;a href="http://directwebremoting.org/dwr"&gt;DWR&lt;/a&gt; father: &lt;a href="http://directwebremoting.org/blog/joe"&gt;Joe Walker&lt;/a&gt;)&lt;br /&gt;&lt;a href="https://bespin.mozilla.com/"&gt;&lt;br /&gt;https://bespin.mozilla.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and what about DWR? DWR is an amazing open source AJAX Framework for Java, with an awesome reverse ajax support and a lot of lovely features like compleate java-to-javascript object serialization (anything, including file input to java byte stream for easy uploading a file via ajax)  &lt;a href="http://www.butterdev.com/dwr/2008/12/dwr-and-hibernate-3x/"&gt;hibernate integration&lt;/a&gt;, the best anti-hajacking security system, and in the upcoming 3.0 release with a fantastic server-side dojo datastore integration (you'll forgot json files and can start to write java methods that populates dijit widgets).&lt;br /&gt;&lt;br /&gt;Stay tuned on this blog:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.butterdev.com/category/dwr/"&gt;http://www.butterdev.com/category/dwr/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-748571777339978570?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/748571777339978570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=748571777339978570&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/748571777339978570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/748571777339978570'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/07/dwr-30-and-bespin-are-coming.html' title='DWR 3.0 And Bespin are Coming'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-1465068164251587206</id><published>2009-07-28T10:10:00.001-07:00</published><updated>2009-07-29T04:42:53.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hosting jsp gratis'/><category scheme='http://www.blogger.com/atom/ns#' term='java free hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='php vs java'/><category scheme='http://www.blogger.com/atom/ns#' term='servlet free hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='java better than php'/><category scheme='http://www.blogger.com/atom/ns#' term='java webapps hosting free'/><category scheme='http://www.blogger.com/atom/ns#' term='java vs. php'/><category scheme='http://www.blogger.com/atom/ns#' term='java performance'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting java gratuito'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp free hosting'/><title type='text'>Google App Engine - Amazing free hosting service for your java and phyton webapps</title><content type='html'>Someone said you: &lt;span style="font-style: italic;"&gt;"bla bla bla... PHP is better, PHP is faster and the proof of this is that you can't find a free hosting service for &lt;/span&gt;&lt;span style="font-style: italic;"&gt;java&lt;/span&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;span&gt; ? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:'Comic Sans MS';font-size:180%;"  &gt;PFIU!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;now you can get&lt;span style="font-weight: bold;"&gt; free java webapplication hosting&lt;/span&gt; on the &lt;span style="font-weight: bold;"&gt;google&lt;/span&gt;'s scalable and powerfull computing cloud (supporting over 5.000.000 access/day):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html"&gt;http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://appengine.google.com/"&gt;http://appengine.google.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;:D i'm starting to love google.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;P.S.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To the said people: this Google choice is the proof that PHP is good and faster for developing simple  web&lt;span style="font-weight: bold;"&gt;pages&lt;/span&gt; but when you get large, when you grow and deal with  web&lt;span style="font-weight: bold;"&gt;application&lt;/span&gt;s, java is  faster in developing and also in running phase.&lt;br /&gt;&lt;br /&gt;Note: PHP is faster for simple webpages &lt;span style="font-weight: bold;"&gt;just in terms of developing time&lt;/span&gt;, but the runtime speed is worse than the jsp (servlet) one, this because PHP is interpreted line to line (is a scripting language) contrariwise Java is compiled in bytecode, for understanding and believing in the advantage of this you can constate that most famous and official PHP accellerators, like the &lt;span style="text-decoration: underline;"&gt;Zend Optimizer&lt;/span&gt; (that boosts PHP speed up to 6X), &lt;span style="font-weight: bold;"&gt;works compiling PHP code into bytecode and chaching it&lt;/span&gt;:  mumble... mumble.. &lt;span style="font-weight: bold;"&gt;this is a java servlet container emulation&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;At this point the "Someone" will say to you another commonplace: &lt;span style="font-style: italic;"&gt;"yes, but Zend Optimizer speeds up PHP 6x because is written in C, but a java servlet container stands to be slower than classic PHP.."&lt;/span&gt; then you can open this page &lt;a href="http://quercus.caucho.com/"&gt;http://quercus.caucho.com/&lt;/a&gt; and show to your lovely friend that there is &lt;span style="font-weight: bold;"&gt;a 100% Java implementation&lt;/span&gt; of PHP5, six times faster then the original one!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes, i think i'm going to write a serious "Java vs. PHP" post...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-1465068164251587206?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/1465068164251587206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=1465068164251587206&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1465068164251587206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1465068164251587206'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/07/google-app-engine-host-your-webapps.html' title='Google App Engine - Amazing free hosting service for your java and phyton webapps'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-8004497619869247864</id><published>2009-07-27T04:31:00.000-07:00</published><updated>2009-08-20T05:21:55.114-07:00</updated><title type='text'>JSON Over SOAP: Easing webservices</title><content type='html'>&lt;h3  style="font-weight: normal;font-family:georgia;" class="post-title entry-title"&gt;&lt;span style="font-size:100%;"&gt;In last years XML (SOAP) affirmed itself as the standard in the "language-agnostic" webservice scenario. But there are theoretical and pratical disavantages using only XML for webservices:&lt;/span&gt;&lt;/h3&gt;&lt;div class="post-body entry-content"&gt;&lt;ul&gt;&lt;li&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;XML &lt;/span&gt; is too verbose = a lot of  network overhead to carry a few data&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;XML &lt;/span&gt; is heavy to parse (semantically strong) = CPU overhead in the encoding and the decoding process&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Wide range of libraries for parsing XML but often them are too large and invasive = implicit problems of portability, &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;time &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;overhead for systems analysts to avoid conflicts with system libraries etc.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Too powerfull: There is not a standard way to&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;o encode objects*, lists and arrays = time &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;overhead &lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt; for developers to implement the serializer and deserializer (x2 if client and server are written in 2 different languages)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;An example?&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; Try to write an XML webservice that returns a nested associative array from a PHP application to a java one, you'll get:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;a lot of code&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;perplexity in deciding the format for encoding and decoding the array (and the time involved to develop the code)&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt; computational slow&lt;/span&gt;ness &lt;/li&gt;&lt;/ul&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;How to improve this?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An artifact &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;idea might be to use the simplicity of JSON over the robustness of an XML webservice to encoding complex data structures in a string (return type = string = json):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;in the wsdl keep a simple string return type:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; message name="getTestArrayWS" &amp;gt;&lt;br /&gt;&amp;lt; part name="Result" type="xsd:string" &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JSON &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;is a data exchange format conceptually similar to XML (language agnostic), but much more lightweight. Libraries for JSON encoding are embedded in PHP5 and much other languages, and is very easy to find  a lightweight one for any programming language, the process of encoding and decoding is very simple, lightweight and &lt;span style="font-weight: bold;"&gt;standard&lt;/span&gt; (the JSON syntax is similar to that of JavaScript objects, this signifies that you can nest and encode array, maps, objects, lists and wathever you want, using less syntax then XML)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;With json can easily encode nested arrays and objects, let see an example:&lt;br /&gt;&lt;br /&gt;PHP server:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;function getTestArrayWS()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;{&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$ste = new Person ();&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$ste-&gt; name = "Stefano";&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$arr=array();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$arr["left"]=$ste;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$arr["right"]=array("three" =&gt; 3);&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;echo json_encode($arr);&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;}&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style="font-weight: bold;"&gt;json_output:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;"left":{ "nome":"Stefano"},"right":{"three":"3"}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;PHP &lt;/span&gt;client example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre wrap=""&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$wsdl= &lt;a class="moz-txt-link-rfc2396E" href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://localhost:8080/concatService/concatServiceService%3FWSDL&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhg3sYOTNCtmf3AV2cn8bu7u4vXfNw"&gt;"http://localhost:8080/testService/testService.WSDL"&lt;/a&gt; ;&lt;/span&gt; $&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;$proxy = new SoapClient($wsdl);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;$json_output&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;= $proxy-&gt;getTestArrayWS();&lt;/span&gt; &lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"  style="font-size:100%;"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-family:courier new;"&gt;$arr = json_decode($json_output);&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;java &lt;/span&gt;client example:&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Service service = &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; //&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;... here I get the stub from the wsdl of the webservice ..&lt;/span&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;omissis...&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;omissis ...&lt;/span&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;for info see: &lt;a href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXRPC5.html&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhgcuGJqpIfyNYsALMkPwl1hvVWEJA"&gt;http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXRPC5.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;ProxyClass myStub = (ProxyClass) service.get();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;String json_output = myStub.getTestArrayWS();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;pre class="displaycode"  style="font-family:courier new;"&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;JSONObject arr = (JSONObject) parser.parse(json_output);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;for (Object key : arr.keySet()) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style="font-size:85%;"&gt;//... is a Map containing the tagged items from WS!&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;References and links:&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;WSDL: &lt;a href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://www.w3.org/TR/wsdl&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhjqkUinm6aL4fxbZ_VUm6wWVbec_g"&gt;http://www.w3.org/TR/wsdl&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;PHP Soap Client: &lt;a href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://it.php.net/soap&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhjjrWpLa5kT7b52zChQav7oWurdHQ"&gt;http://it.php.net/soap&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Java JSON Library used in the &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;example:&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;&lt;a href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/json-simple/&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhitwu0HKZMnO234uAnZHPQdPZv5Yw"&gt;&lt;span style="font-size:85%;"&gt;http://code.google.com/p/json-simple/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;JSON Examples: &lt;a href="http://209.85.129.132/translate_c?hl=it&amp;amp;sl=it&amp;amp;tl=en&amp;amp;u=http://www.json.org/example.html&amp;amp;rurl=translate.google.it&amp;amp;usg=ALkJrhiJakb6LyCk6w2GCo7o38QrNGF9Sw"&gt;http://www.json.org/example.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; &lt;span style="font-size:85%;"&gt; Interesting discussion: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a style="font-family: verdana;" href="http://www.oreillynet.com/xml/blog/2007/01/json_vs_soap_a_question_worth.html"&gt;http://www.oreillynet.com/xml/blog/2007/01/json_vs_soap_a_question_worth.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-8004497619869247864?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/8004497619869247864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=8004497619869247864&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8004497619869247864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8004497619869247864'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/07/over-json-soap-easing-webservices.html' title='JSON Over SOAP: Easing webservices'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3808638080709040049</id><published>2009-06-30T01:09:00.000-07:00</published><updated>2009-06-30T01:14:54.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php ide'/><category scheme='http://www.blogger.com/atom/ns#' term='rails ide'/><category scheme='http://www.blogger.com/atom/ns#' term='php editor'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby ide'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='java ide'/><title type='text'>Netbeans 6.7 Released!</title><content type='html'>Netbeans is really becoming "the only IDE you need",  with an amazing PHP support, try it:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/downloads/"&gt;http://www.netbeans.org/downloads/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Don't Eclipse the Sun: Netbeans is easier to use and powerfull.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3808638080709040049?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3808638080709040049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3808638080709040049&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3808638080709040049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3808638080709040049'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/06/netbeans-67-released.html' title='Netbeans 6.7 Released!'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-7237297731612352415</id><published>2009-06-26T07:06:00.000-07:00</published><updated>2009-07-20T11:52:58.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='table inheritance mapping hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='ereditarieta mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms inheritance'/><category scheme='http://www.blogger.com/atom/ns#' term='class table inheritanche'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate search inheritance'/><title type='text'>Hibernate Joined Subclass Inheritance Mapping (Annotations) - HowTo</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style=";font-family:verdana;font-size:85%;"&gt;Today's tutorial is on two arguments: Implementing Class Inheritance Mapping with Hibernate and applying Hibernate Search Indexing on it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prefaction:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Class Inheritance Strategy selected is Joined Sublcass and the dbms used for the demo is mysql (yes, inheritance in mysql is possible thanks to hibernate obviously! :P)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;"&gt;1) Database Structure:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE `NetworkAsset` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`dbId` int NOT NULL AUTO_INCREMENT PRIMARY KEY,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`inventoryNo` varchar,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`macAddress` varchar,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`vendor` varchar,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`model` varchar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE `PresonalComputer` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`employee` varchar,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`operativeSystem` varchar,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`ipAddress` varchar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`dbId` int NOT NULL PRIMARY KEY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CONSTRAINT `PCInheritanceLaze` FOREIGN KEY (`dbId`) REFERENCES `NetworkAsset` (`dbId`)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-style: italic;font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-size:85%;"&gt;(Note: this way  is the best way to implement a joined-subclass constraint on a DBMS that&lt;br /&gt;doesn't supports native inheritance)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CREATE TABLE `Switch` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`portCount` int NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`managmentIpAddress` varchar NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`LanDescription` varchar NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;`dbId` int NOT NULL PRIMARY KEY,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CONSTRAINT `SWInheritanceLaze` FOREIGN KEY (`dbId`) REFERENCES `NetworkAsset` (`dbId`)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;)&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Hibernate CTI Mapping POJOs (with Annotations)&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;Note: the used annotations import is:&lt;br /&gt;import javax.persistence.*&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;@Table(name="NetworkAsset"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;    ,catalog="CreativeProgrammingDemoDB"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;@Inheritance(strategy=InheritanceType.JOINED)&lt;/span&gt;&lt;br /&gt;public class NetworkAsset  implements java.io.Serializable {&lt;br /&gt;private int dbId;&lt;br /&gt;private String inventoryNo&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;   ...other filelds...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;&lt;br /&gt;@Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;    @Column(name="db_id", unique=true, nullable=false)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;@GeneratedValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;public int getDbId() {&lt;br /&gt;return this.dbId;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setDbId(int dbId) {&lt;br /&gt;this.dbId = dbId;&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;  ...other getter and setters...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;}&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;@Table(name="PersonalComputer"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;    ,catalog="CreativeProgrammingDemoDB"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;public class PersonalComputer  &lt;span style="color: rgb(255, 0, 0);"&gt;extends NetworkAsset&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;//private int dbId;   &lt;span style="color: rgb(255, 0, 0);"&gt;  Note: don't add the id field in subclass POJO: it's inherited!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;private String ipAddress;&lt;br /&gt;private String employee;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;   ...other filelds...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;&lt;br /&gt;@Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;    @Column(name="employee", unique=true, nullable=false)&lt;/span&gt;&lt;br /&gt;public int getEmployee() {&lt;br /&gt;return this.dbId;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setEmployee(String employee) {&lt;br /&gt;this.employee = employee;&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;  ...other getter and setters...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span&gt;&lt;br /&gt;That's all for mapping joined sublass inheritance with annotations...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;more info on the classic xml way and other CTI techniques: &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html"&gt;http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=";font-family:courier new;font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-7237297731612352415?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/7237297731612352415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=7237297731612352415&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/7237297731612352415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/7237297731612352415'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/06/hibernate-search-and-class-inheritance.html' title='Hibernate Joined Subclass Inheritance Mapping (Annotations) - HowTo'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-2613021359423061508</id><published>2009-06-12T04:53:00.000-07:00</published><updated>2009-07-20T10:51:31.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript enabled browser'/><category scheme='http://www.blogger.com/atom/ns#' term='java browser'/><category scheme='http://www.blogger.com/atom/ns#' term='2.0 html parser'/><category scheme='http://www.blogger.com/atom/ns#' term='library'/><category scheme='http://www.blogger.com/atom/ns#' term='java browser api'/><category scheme='http://www.blogger.com/atom/ns#' term='css bot'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript bot'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax browser api'/><category scheme='http://www.blogger.com/atom/ns#' term='javascrip enabled'/><title type='text'>Java Browser API</title><content type='html'>I found this interesting web  browser entirely written in java:&lt;br /&gt;&lt;a href="http://lobobrowser.org/"&gt;&lt;br /&gt;http://lobobrowser.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;it is GPL, supports HTML 4,CSS2, JavaFX and Javascript* (with AJAX support)&lt;br /&gt;&lt;a href="http://lobobrowser.org/browser/api-info.jsp"&gt;&lt;br /&gt;http://lobobrowser.org/browser/api-info.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;*Javascript support is limited, for instance some dojo and extjs apps doesn't works with the browser..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-2613021359423061508?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/2613021359423061508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=2613021359423061508&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2613021359423061508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/2613021359423061508'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/06/java-browser-api.html' title='Java Browser API'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-4057484144039135946</id><published>2009-06-10T03:10:00.000-07:00</published><updated>2009-06-10T03:34:08.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial web interface'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='gantt'/><category scheme='http://www.blogger.com/atom/ns#' term='issue tracker'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='open source teaming'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='svn web interface'/><category scheme='http://www.blogger.com/atom/ns#' term='teaming'/><category scheme='http://www.blogger.com/atom/ns#' term='trac alternative'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='open source project managment'/><category scheme='http://www.blogger.com/atom/ns#' term='bug tracking'/><title type='text'>Redmine - project managment and bug tracking made simple</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Looking for an open source project managment tool? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Redmine is an evolved an easy to use multi-project managment environment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Looking for enterprise collaborative teaming tool with activity reports?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Redmine does it, and integrates LDAP for authentication.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Looking for an integrated svn or mercurial extention more simple and powerfull than trac?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Redimine manages repository in an awesome way,  for instance the following svn commit:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;svn commit -m "this patch &lt;span style="font-weight: bold;"&gt;closes #245&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;closes the ticket and relates the diffs to the ticket history.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Your system support team has planned to kill you at your next request?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Redmine is entireley configurable by his web interface: no system support effort is required after installation&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation is a "next request" and you want to live enough see redmine working?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://bitnami.org/product/redmine"&gt;download the cross-platform bundled installer &lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(provided by &lt;a href="http://bitnami.org/"&gt;bitnami.org&lt;/a&gt; - &lt;span style="font-style: italic;"&gt;Open Soruce.  Simplified. &lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issues with subversion repository LDAP authentication?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm going to write an how to on this.  stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-4057484144039135946?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/4057484144039135946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=4057484144039135946&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/4057484144039135946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/4057484144039135946'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/06/redmine-project-managment-and-bug.html' title='Redmine - project managment and bug tracking made simple'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3915720620388723106</id><published>2009-06-03T12:22:00.000-07:00</published><updated>2009-06-03T12:25:15.097-07:00</updated><title type='text'>javascript is evolving!</title><content type='html'>&lt;div&gt;Googlers introduces the ecmascript5 (aka javascript2) changes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://ajaxian.com/archives/ecmascript-5-changes-to-javascript"&gt;http://ajaxian.com/archives/ecmascript-5-changes-to-javascript&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i can't still wait for it!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3915720620388723106?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3915720620388723106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3915720620388723106&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3915720620388723106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3915720620388723106'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2009/06/javascript-is-evolving.html' title='javascript is evolving!'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3851175274827842072</id><published>2008-10-16T04:28:00.000-07:00</published><updated>2009-07-26T10:09:44.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='how to dynamically update a dijit tree'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='refresh dojo tree'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo 1.1.2'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax store'/><category scheme='http://www.blogger.com/atom/ns#' term='refreshing tree content'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='how to update dojo tree'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemFileReadStore'/><title type='text'>Save the forest: don't destroy() dijit.Trees!</title><content type='html'>&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:trebuchet ms;"&gt;Some messages in various ajax forums ask for a solution to reload the whole content of a dojo tree with a dynamic item store.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;No one has proposed a good response:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Someone said: destroy the tree and re-make it! Sure.. but  what will happen to my dojo connects on the tree nodes? and the dojo tree status (opened folders ecc.)? a bloodshed! no one of my connected widgets will survive after this brutal operation..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Some other said: use a ContentPane to embed the tree and reload its href: Fantastic.. ^_^ This is the same to destroy and recreate the tree but with an extra overhead due to the contentPane.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Some other other said: Use my customized reload() function.. good.! i'm just sorry to see that non one of these solutions works..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Some infidels said: This is not possible.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;I say: you can save a dijit.Tree.. don't cut it: prune it! and it'll re-grow wonderfully &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;This is my reload function that works:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 102); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:-webkit-monospace;font-size:10px;"  &gt;&lt;span style="font-size:100%;"&gt;dojo.&lt;span style="color: rgb(102, 0, 102);"&gt;extend&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;dijit.&lt;span style="color: rgb(102, 0, 102);"&gt;Tree&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;,&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;refresh&lt;span style="color: rgb(51, 153, 51);"&gt;:&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;root&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;._getRootOrFirstNode&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;node&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;._getNextNode&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;root&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;parent&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;node.&lt;span style="color: rgb(102, 0, 102);"&gt;getParent&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;parent&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;        parent.&lt;span style="color: rgb(102, 0, 102);"&gt;removeChild&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;node&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;    node.&lt;span style="color: rgb(102, 0, 102);"&gt;destroyRecursive&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;._itemNodeMap&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(102, 0, 102);"&gt;store&lt;/span&gt;._loadFinished&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(102, 0, 102);"&gt;store&lt;/span&gt;.&lt;span style="color: rgb(102, 0, 102);"&gt;fetch&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;._store2model&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;this&lt;/span&gt;._load&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;parent&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 153, 51);"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;root.&lt;span style="color: rgb(102, 0, 102);"&gt;getParent&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;parent&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;parent.&lt;span style="color: rgb(102, 0, 102);"&gt;removeChild&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;root&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;root.&lt;span style="color: rgb(102, 0, 102);"&gt;destroyRecursive&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;},&lt;br /&gt;refresh: function(store){&lt;br /&gt;   var root=this._getRootOrFirstNode();&lt;br /&gt;   while((node=this._getNextNode(root))!=null){&lt;br /&gt;           var parent = node.getParent();&lt;br /&gt;           if(parent){&lt;br /&gt;               parent.removeChild(node);&lt;br /&gt;           }&lt;br /&gt;           node.destroyRecursive();&lt;br /&gt;   }&lt;br /&gt;   this._itemNodeMap={};&lt;br /&gt;   this.store._loadFinished = false;&lt;br /&gt;   this.store=store;&lt;br /&gt;   this._store2model();&lt;br /&gt;   this._load();&lt;br /&gt;   var parent = root.getParent();&lt;br /&gt;   if(parent){&lt;br /&gt;       parent.removeChild(root);&lt;br /&gt;   }&lt;br /&gt;   root.destroyRecursive();&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;that you can simply use in this way:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 102); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:-webkit-monospace;font-size:10px;"  &gt;&lt;span style="font-size:100%;"&gt;dijit.&lt;span style="color: rgb(102, 0, 102);"&gt;byId&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'mytree'&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(102, 0, 102);"&gt;refresh&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;newStore=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;new dojo.data.ItemFileReadStore({url: myURL });&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 102); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:-webkit-monospace;font-size:10px;"  &gt;&lt;span style="font-size:100%;"&gt;dijit.&lt;span style="color: rgb(102, 0, 102);"&gt;byId&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'mytree'&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(102, 0, 102);"&gt;refresh&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;newStore)&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 102); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:-webkit-monospace;font-size:10px;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;good dojing to all!&lt;br /&gt;Bye.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3851175274827842072?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3851175274827842072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3851175274827842072&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3851175274827842072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3851175274827842072'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2008/10/save-forest-dont-destroy-dijittrees.html' title='Save the forest: don&apos;t destroy() dijit.Trees!'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3549154990641147974</id><published>2008-08-21T08:59:00.001-07:00</published><updated>2008-08-26T05:20:18.181-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mib file'/><category scheme='http://www.blogger.com/atom/ns#' term='net-snmp'/><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><category scheme='http://www.blogger.com/atom/ns#' term='mib'/><category scheme='http://www.blogger.com/atom/ns#' term='mib parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='textual-convention'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>How to lookup SNMP Textual-Conventions in Perl (Net-SNMP)</title><content type='html'>For the series: &lt;i&gt;Demystifing SNMP&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;if you need to programmatically convert a value of a varbind that is defined in the mib file with a textual-convention here you can find a perl code that works:&lt;br /&gt;&lt;br /&gt;&lt;code class='perl'&gt;&lt;br /&gt;     use SNMP; #pay attention this isn't Net::SNMP!!&lt;br /&gt;&lt;br /&gt;     &amp;SNMP::addMibDirs("/yourpathtomibfiles/mibs");&lt;br /&gt;     $SNMP::save_descriptions=1;&lt;br /&gt;     &amp;SNMP::initMib();&lt;br /&gt;     &amp;SNMP::loadModules('ALL');&lt;br /&gt;      ...&lt;br /&gt;      ...&lt;br /&gt;      my $obj = $SNMP::MIB{$the_varbind_oid};&lt;br /&gt;      $TextConvention_To_IntegerValue_HashTable = $obj-&gt;{enum}; &lt;br /&gt;      #now enjoy with this hash table and your integer value&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For example ifAdminStatus is an INTEGER, but this integer means:&lt;br /&gt;(1)-&gt;up&lt;br /&gt;(2)-&gt;down&lt;br /&gt;&lt;br /&gt;whit TextConvention_To_IntegerValue_HashTable hash table you can lookup numbers to associated string values..&lt;br /&gt;but attention: you need to invert keys and values in the hash table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;here is it one example that shows how hard is to manually parse mib files:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;jnxCmCfgChgEventSource OBJECT-TYPE&lt;br /&gt;   SYNTAX     JnxCmCfChgSource&lt;br /&gt;   MAX-ACCESS read-only&lt;br /&gt;   STATUS     current&lt;br /&gt;   DESCRIPTION&lt;br /&gt;   "The source of the configuration event."&lt;br /&gt;::= { jnxCmCfgChgEventEntry 4 }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JnxCmCfChgSource ::= TEXTUAL-CONVENTION&lt;br /&gt;       STATUS       current&lt;br /&gt;       DESCRIPTION  "Identifies the source of config event."&lt;br /&gt;       SYNTAX       INTEGER {&lt;br /&gt;                        other       (1),&lt;br /&gt;                        cli         (2),&lt;br /&gt;                        junoscript  (3),&lt;br /&gt;                        synchronize (4),&lt;br /&gt;                        snmp        (5),&lt;br /&gt;                        button      (6),&lt;br /&gt;                        autoinstall (7),&lt;br /&gt;                        unknown     (8)&lt;br /&gt;                    } &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Net-SNMP rocks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3549154990641147974?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3549154990641147974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3549154990641147974&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3549154990641147974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3549154990641147974'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2008/08/how-to-lookup-snmp-textual-conventions.html' title='How to lookup SNMP Textual-Conventions in Perl (Net-SNMP)'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-1907392292150972795</id><published>2007-12-25T11:00:00.000-08:00</published><updated>2007-12-25T11:12:37.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft script debugger'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug for internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='debug ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='debug internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='companion js'/><title type='text'>Companion js: il firebug per internet explorer</title><content type='html'>Ecco un tool che funzionalmente è molto simile a Firebug: Companion JS offre una comoda console per il debbugger javascript di internet explorer molto simile a quella di firebug (Non è un debbugger vero e proprio ma solamente un interfaccia grafica verso Microsoft Script Debugger)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.my-debugbar.com/wiki/CompanionJS/HomePage"&gt;Download it!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img height=300 width=410 src="http://www.my-debugbar.com/wiki/uploads/CompanionJS/introducing-cjs.png" title="companion js" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-1907392292150972795?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/1907392292150972795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=1907392292150972795&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1907392292150972795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1907392292150972795'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/companion-js-il-firebug-per-internet.html' title='Companion js: il firebug per internet explorer'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3486157859957196934</id><published>2007-12-20T09:02:00.000-08:00</published><updated>2007-12-20T09:09:20.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax debug'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>IE Tab, il browser 2 in 1</title><content type='html'>La vita dello sviluppatore del 2.0 a volte è dura, soprattutto quando si tratta di rendere compatibile un applicazione ajax con piu browser, ci si ritrova a rimbalzare tra IE e Firefox passando il tempo ad tra un crash e l'altro di winzozz troppo impegnato a caricare le finestre delle suddette applicazioni..&lt;br /&gt;&lt;br /&gt;con questo strumento invece potete avere IE incluso in firefox e con un semplice click osservare come si comporta la vostra applicazione nell'altro browser:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/it/firefox/addon/1419"&gt;https://addons.mozilla.org/it/firefox/addon/1419&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-3486157859957196934?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3486157859957196934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3486157859957196934&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3486157859957196934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3486157859957196934'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/browser-2-in-1.html' title='IE Tab, il browser 2 in 1'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-4841456921049424269</id><published>2007-12-20T09:00:00.000-08:00</published><updated>2007-12-20T09:18:31.862-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java sparklines'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript sparklines'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax sparklines'/><category scheme='http://www.blogger.com/atom/ns#' term='mini-chart'/><category scheme='http://www.blogger.com/atom/ns#' term='lightweigth sparklines'/><title type='text'>sparklines</title><content type='html'>Ecco un altro bel prodotto della mente di&lt;a href="http://ejohn.org/about/" class="name"&gt;&lt;strong&gt; John&lt;/strong&gt; Resig&lt;/a&gt;, autore di jQuery e ragazzo prodigio del javascript della mozilla foundation.&lt;br /&gt;&lt;br /&gt;Un bel tocco di classe lightweight per le vostre web application che vi renderà facile come non mai mostrare dei piccoli grafici cartesiani nelle pagine html:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ejohn.org/projects/jspark/"&gt;http://ejohn.org/projects/jspark/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;provatelo! è davvero semplice e leggero.&lt;br /&gt;&lt;br /&gt;enjoy yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-4841456921049424269?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/4841456921049424269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=4841456921049424269&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/4841456921049424269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/4841456921049424269'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/sparklines.html' title='sparklines'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-1253818206495504090</id><published>2007-12-18T09:47:00.000-08:00</published><updated>2007-12-20T09:23:36.048-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='lavoro roma'/><category scheme='http://www.blogger.com/atom/ns#' term='offerte lavoro'/><title type='text'>Offerta di Lavoro</title><content type='html'>jdk s.r.l azienda leader nello sviluppo di applicazioni java offre 6 posti di lavoro a:&lt;br /&gt;&lt;br /&gt;Programmatori Java&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jdk.it"&gt;www.jdk.it&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Location: Roma&lt;br /&gt;N° posti: 6&lt;br /&gt;Retribuzione: 1000 € netti al mese&lt;br /&gt;Contratto: 1 anno rinnovabile&lt;br /&gt;Tipo attività: sviluppo di software in team&lt;br /&gt;Inizio lavori: 2 gennaio 2008&lt;br /&gt;Capacità richieste: 2 mesi di esperienza con java (non necessariamente lavorativa, anche i corsi e gli esami universitari fanno testo)&lt;br /&gt;Per informazioni 380.3406681&lt;br /&gt;&lt;br /&gt;Curriculum at stefano.gargiulo@roma1.infn.it&lt;br /&gt;&lt;br /&gt;I cv piu interessanti verrano selezionati e smistati verso:&lt;br /&gt; &lt;br /&gt;l'Esperesso (Zona C.Colombo, Roma)&lt;br /&gt;Banca di Roma (Roma)&lt;br /&gt;ACI (Roma)&lt;br /&gt;&lt;br /&gt;cerchiamo anche 1 programmatore php.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-1253818206495504090?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/1253818206495504090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=1253818206495504090&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1253818206495504090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/1253818206495504090'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/offerta-di-lavoro.html' title='Offerta di Lavoro'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-8559310337296911323</id><published>2007-12-17T04:48:00.000-08:00</published><updated>2007-12-18T09:40:01.164-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript debug'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax debug'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>Debug 2.0</title><content type='html'>Finora dal punto di vista del developer l'unico lato negativo nello sviluppare applicazioni ajax era l'assenza di strumenti di debugging che permettessero un veloce tracing dell'errore (ad esempio quando si ha a che fare con oggetti del DOM creati dinamicamente è impossibile vederne il codice sorgente con la "mostra sorgente pagina"del browser e bisogna idearsi alert e altre soluzioni ben poco eleganti affinche' ci si possa capire qualcosa in fase di debug) Ma adesso basta! Ecco a voi un ottimo strumento che vi risparmierà tante arrabiature:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.getfirebug.com/?link=1" title="Firebug is a free web development tool for Firefox"&gt;&lt;img src="http://www.getfirebug.com/images/firebug-web-development.png" border="0" alt="Firebug - Web Development Evolved"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Firebug è un plugin di firefox davvero strabiliante, che vi permette di monitorare  gli eventi javascript, le chiamate ajax (analizzando i paramentri, i tempi di risposta ed i contenuti dei postback), inoltre vi permette di definire dei breakpoint e dei watch sulle variabili del javascript, e dulcis in fundo vi permette di esplorare il DOM e l'HTML generato dinamicamente dandovi anche la possibilita' di editarlo.. Questo diviene utile anche quando si naviga in webapplication sviluppate da terzi, ad esempio l'altra settimana dovevamo recuperare tutti i messaggi contenuti nella quarantena di sophos pure message ed inoltrarli ai relativi desitnatari, purtroppo i messaggi da inlotrare erano quasi 100 mila e l'interfaccia web permetteva di selezionarne solo 1000 per volta... sarebbe stato un po scomodo fare 100 volte la stessa query.. quindi cosa abbiamo fatto? grazie a firebug abbiamo cambiato il valore della select box che indicava il massimo numero di messaggi che sophos deve mostrare nella query :&lt;br /&gt;&lt;br /&gt;value=1000 -&gt; value=100000&lt;br /&gt;&lt;br /&gt;in questo modo senza operazioni invasive siamo riusciti ad hackerare il sistema (che era carente di controlli lato server) per fargli fare cio' che volevamo.&lt;br /&gt;&lt;br /&gt;fatene buon uso!&lt;br /&gt;&lt;br /&gt;per internet explorer invece vi rimando a questo articolo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.monstuff.com/archives/000291.html"&gt;http://blog.monstuff.com/archives/000291.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-8559310337296911323?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/8559310337296911323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=8559310337296911323&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8559310337296911323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/8559310337296911323'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/debug-20.html' title='Debug 2.0'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-5197079185533225525</id><published>2007-12-01T15:40:00.000-08:00</published><updated>2007-12-17T04:48:04.474-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logger'/><category scheme='http://www.blogger.com/atom/ns#' term='keylogger'/><category scheme='http://www.blogger.com/atom/ns#' term='mouselogger'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>movelogger</title><content type='html'>Ecco un bellissimo esempio di codice javascript per registrare macro dai movimenti del mouse e dagli eventi che accadono  su una pagina web:&lt;br /&gt;&lt;a href="http://pure.rednoize.com/movelogger/"&gt;&lt;br /&gt;http://pure.rednoize.com/movelogger/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Davvero molto utile per un applicazione ajax visto che può essere usato sia per monitorare l'attività svolta dagli utenti che per creare dei tutorial o delle stored procedures.&lt;br /&gt;&lt;br /&gt;http://pure.rednoize.com/2007/10/18/record-mouse-movement-using-javascript-and-ajax/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4069731548805942350-5197079185533225525?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/5197079185533225525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=5197079185533225525&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/5197079185533225525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/5197079185533225525'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/movelogger.html' title='movelogger'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4069731548805942350.post-3216966424762975952</id><published>2007-12-01T13:31:00.001-08:00</published><updated>2007-12-18T10:48:16.212-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='volume bar'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='slider'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax controls'/><category scheme='http://www.blogger.com/atom/ns#' term='barra di controllo'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>slider in javascript</title><content type='html'>Con questo primo posto andremo a vedere come realizzare in 5 minuti un' add-on davvero carina per un sito web 2.0:&lt;br /&gt;&lt;br /&gt;la barra di regolazione analogica (slider bar).&lt;br /&gt;&lt;br /&gt;Ecco alcune applicazioni comuni che potrete realizzare con la vostra adjustment-bar abbinata ad una tecnologia ajax:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;regolare il livello di zoom di un immagine&lt;/li&gt;&lt;li&gt;regolare il range temporale di un grafico generato dal server&lt;/li&gt;&lt;li&gt;regolare il volume di un contenuto multimediale&lt;/li&gt;&lt;li&gt;regolare la trasparenza di una scheda o di un oggetto del DOM (alpha)&lt;/li&gt;&lt;/ul&gt;e molto altro..&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;Vi servirà&lt;/font&gt;&lt;font style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;/font&gt;&lt;ul&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;1 script per il drag &amp;amp; drop degli oggetti DOM&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;1 oggetto div&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;un immagine che rappresenta la linea della nostra barra di regolazione&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font style="font-weight: bold;"&gt;un bottone o un immagine per creare il nostro selector&lt;/font&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;ma partiamo subito con un esempio pratico:&lt;br /&gt;&lt;br /&gt;ho un immagine e voglio creare una barra che ne regoli il livello di ingrandimento del thumbinal...&lt;br /&gt;&lt;br /&gt;img id="imgtest" width=20 heigth=20" ...&lt;br /&gt;&lt;br /&gt;&lt;img id="imgtest" src="http://bp3.blogger.com/_EjUiHJ_WDSY/R2f3ELFCDEI/AAAAAAAAAFc/QXKbqyjfURk/s320/firefoxad.jpg" height="20" width="20"&gt;&lt;br /&gt;&lt;br /&gt;adesso prendo un immagine di una linea che mi rappresenterà la barra di regolazione...&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 490px; position: relative;" id="imgcontrol"&gt;&lt;br /&gt;&lt;input value="clicca qui per attivare la demo" onclick="Drag.init(document.getElementById('regchart'));" type="button"&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Controllo Zoom Immagine :&lt;/h2&gt;&lt;br /&gt;0% &lt;img src="http://jnttest.roma1.infn.it/linea.gif" width="350"&gt;100%&lt;div id="regchart" style="border: 1px solid black; padding: 3px; position: relative; width: 3px; top: -18px; left: 50px; height: 15px; cursor: pointer; z-index: 1;"&gt;&lt;/div&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/4069731548805942350-3216966424762975952?l=creativeprogramming.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://creativeprogramming.blogspot.com/feeds/3216966424762975952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4069731548805942350&amp;postID=3216966424762975952&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3216966424762975952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4069731548805942350/posts/default/3216966424762975952'/><link rel='alternate' type='text/html' href='http://creativeprogramming.blogspot.com/2007/12/regulation-bar-in-javascript.html' title='slider in javascript'/><author><name>Stefano Gargiulo</name><uri>http://www.blogger.com/profile/02976482984647278410</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_EjUiHJ_WDSY/S02iWatftfI/AAAAAAAAAJg/kNvSaVA7PfM/s1600-R/AIbEiAIAAABDCIK8_YXj5NvMaiILdmNhcmRfcGhvdG8qKDE1MDVkNzUxYTUwYjA1ZjM5OTllMmU5MGI3ZDNkYjM2YzhhMzBlNGEwAZ8taDQHAEFDruoNFplcMCqD1wBk'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_EjUiHJ_WDSY/R2f3ELFCDEI/AAAAAAAAAFc/QXKbqyjfURk/s72-c/firefoxad.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
