<?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-5950309259069207053</id><updated>2012-01-25T00:29:46.787-08:00</updated><category term='this'/><category term='distributed'/><category term='scala'/><category term='actionscript functions'/><category term='java'/><category term='FlexSprite'/><category term='flex 3'/><category term='Fail Overs'/><category term='scope'/><category term='Degrafa Flex Skin'/><category term='best practices'/><category term='web development'/><category term='migration'/><category term='continuations'/><category term='Flex Programmatic skinning'/><category term='action script'/><category term='J2ee'/><category term='flex'/><category term='hadoop'/><category term='equinox'/><category term='spring osgi'/><category term='parellel'/><category term='Flex Sprite'/><category term='nested'/><category term='osgi'/><category term='Highly available web'/><category term='gird computing'/><category term='Jetty'/><category term='map reduce'/><category term='Clustering'/><category term='Flex Biulder Design View'/><category term='declaration of style conflicts with previous version'/><category term='anonymous function'/><category term='ria'/><category term='Comet style requests'/><category term='actionscript'/><category term='computing'/><category term='code generation'/><title type='text'>The Beginner</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-7333070290408444001</id><published>2008-07-15T14:29:00.000-07:00</published><updated>2008-07-15T14:30:39.747-07:00</updated><title type='text'>help me raise money for battle-knight , its a game :)</title><content type='html'>Please click the link below and help me earn 3 silver coins.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s6.battleknight.co.uk/index.php?loc=hire&amp;ref=MTMwNzAx"&gt;http://s6.battleknight.co.uk/index.php?loc=hire&amp;ref=MTMwNzAx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-7333070290408444001?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/7333070290408444001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=7333070290408444001' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/7333070290408444001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/7333070290408444001'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/07/help-me-raise-money-for-battle-knight.html' title='help me raise money for battle-knight , its a game :)'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-1824374780711265473</id><published>2008-06-04T07:35:00.001-07:00</published><updated>2008-06-04T07:39:59.671-07:00</updated><title type='text'>Pasting Code in Blogspot</title><content type='html'>I hate writing html by hand, and to write html to display java/as/flex code in a page, is very painful. I was searching for a tool which would generate the html for me, escape all symbols to html tags. And i found &lt;a href="http://francois.schnell.free.fr/tools/BloggerPaste/BloggerPaste.html"&gt;this&lt;/a&gt;, and it works like a charm. I thought i would list it here, would be helpful for a trespasser.&lt;br /&gt;&lt;br /&gt;I used this tool to paste code for my blog "programmtic skins in Flex Builder" and it worked great. Just a matter of 5 seconds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-1824374780711265473?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/1824374780711265473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=1824374780711265473' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/1824374780711265473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/1824374780711265473'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/06/pasting-code-in-blogspot.html' title='Pasting Code in Blogspot'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-6527687358780391800</id><published>2008-05-21T08:50:00.000-07:00</published><updated>2008-06-04T08:33:52.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Programmatic skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='Degrafa Flex Skin'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Biulder Design View'/><title type='text'>Programmatic Skinning in Flex Builder 3</title><content type='html'>Flex is the "HOT" technology these days. Apart from the technology, performance and other advantages behind it, for end users it is very pleasing to look at. When it comes to look and feel, pretty much everything can be done using Javascript too, but flex was developed particularly for "Rich" applications, so it makes creating rich user interfaces easy for the developer. Not to mention, its more efficient and more maintainable for the developer. Flex Builder for Flex is pretty much the Visual Studio for ASP.NET (lot of differences and lot of similarities here). Flex Builder really makes working with Flex easier. And by default, adobe provides a lot of components, which you can use to layout using Flex Builder. Using these components is fine, until you need a different component. Flex also provides support to create custom components and skin them programatically (there are also other ways).&lt;br /&gt;&lt;br /&gt;There are a lot of articles and blogs online which talk about how to write programmatic skins, but these skins can only be seen when the Flex application actually runs. What do I need to do if I want to see the applied programmatic skin in the Flex Builder Design view, so i can play around with my layout?&lt;br /&gt;&lt;br /&gt;There are some steps that need to be followed. And what better way there is to show the examples? I wish this blogging site supported code snippets, but it doesnt , so i will provide links to code.&lt;br /&gt;&lt;br /&gt;The Application mxml is &lt;a href="http://www.friendsnippets.org/snippet/308/"&gt;ProgrammaticSkinning.mxml&lt;/a&gt; and the skin classes are &lt;a href="http://www.friendsnippets.org/snippet/309/"&gt;FlatColorRectangleSkin.as&lt;/a&gt; , &lt;a href="http://www.friendsnippets.org/snippet/310/"&gt;FlatColorRoundedRectangleSkin.as&lt;/a&gt;, &lt;a href="http://www.friendsnippets.org/snippet/311/"&gt;GradientRectangleSkin.as&lt;/a&gt; and &lt;a href="http://www.friendsnippets.org/snippet/312/"&gt;NodeSkin.mxml&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The custom class is &lt;a href="http://www.friendsnippets.org/snippet/313/"&gt;Node.as&lt;/a&gt; and the style sheet is &lt;a href="http://www.friendsnippets.org/snippet/314/"&gt;styles.css&lt;/a&gt;. The code in these classes is straight forward, so i wont explain them all. But Node.as and NodeSkin.mxml are special.&lt;br /&gt;&lt;br /&gt;1.    Node.as should be put in a  different library project, if this class exists in the same project, the skins wont be rendered in Flex Builder design view. I dont know the reason for this, if anybody knows, please let me know.&lt;br /&gt;&lt;br /&gt;2.    Node class in order to support skins, has to override updateDisplayList method, get the SkinClass, create an instance of the class, set the skin Name , set stylename on the skin to this(for the skin to inherit all style properties from the component), set the size of the skin to the component or appropriate (we want the size of skin to be grater than 0, to be able to see it), and add the skin as a child.&lt;br /&gt;&lt;br /&gt;3.    If anyone wants to use Degrafa for skinning, look at NodeSkin.mxml. This is my favourite. We can use Degrafa tags to define our tags.&lt;br /&gt;&lt;br /&gt;That said, we can create our custom components, style them in any way we want, use them in Flex Builder, drag-n-drop in Flex Builder design view and play with the layout.&lt;br /&gt;&lt;br /&gt;Also, here is a  component you can extend  form if you want your component to be skinnable.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;package charts&lt;br /&gt;{&lt;br /&gt;import flash.display.DisplayObject;&lt;br /&gt;import flash.events.MouseEvent;&lt;br /&gt;&lt;br /&gt;import mx.core.IFlexDisplayObject;&lt;br /&gt;import mx.core.UIComponent;&lt;br /&gt;import mx.effects.Zoom;&lt;br /&gt;import mx.effects.easing.Bounce;&lt;br /&gt;import mx.styles.ISimpleStyleClient;&lt;br /&gt;&lt;br /&gt;public class SkinnableComponent extends UIComponent&lt;br /&gt;{&lt;br /&gt; private var zoomAll:Zoom = new Zoom();&lt;br /&gt;&lt;br /&gt; public function SkinnableComponent()&lt;br /&gt; {&lt;br /&gt;  scaleX = 0.5;&lt;br /&gt;  scaleY = 0.5;&lt;br /&gt;  addEventListener(MouseEvent.ROLL_OVER, doZoom);&lt;br /&gt;  addEventListener(MouseEvent.ROLL_OUT, doZoom);&lt;br /&gt; &lt;br /&gt;  zoomAll.zoomWidthTo = 1;&lt;br /&gt;  zoomAll.zoomHeightTo =1;&lt;br /&gt;  zoomAll.zoomWidthFrom = 0.5;&lt;br /&gt;  zoomAll.zoomHeightFrom = 0.5;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected override function updateDisplayList(unscaledWidth:Number,&lt;br /&gt;                                      unscaledHeight:Number):void&lt;br /&gt; {&lt;br /&gt;        showSkin("upSkin");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; protected function showSkin(skinName:String):void&lt;br /&gt;    {&lt;br /&gt;        var skinClass:Class = Class(getStyle(skinName));&lt;br /&gt;        var skin:IFlexDisplayObject = IFlexDisplayObject(getChildByName(skinName));&lt;br /&gt;&lt;br /&gt;        if (!skin)&lt;br /&gt;        {         &lt;br /&gt;            if (skinClass)&lt;br /&gt;            {&lt;br /&gt;                skin = IFlexDisplayObject(new skinClass());&lt;br /&gt;                skin.name = skinName;&lt;br /&gt;    (skin as ISimpleStyleClient).styleName = this;&lt;br /&gt;                addChild(DisplayObject(skin));&lt;br /&gt;                skin.setActualSize(unscaledWidth, unscaledHeight);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;  &lt;br /&gt;    protected function doZoom(event:MouseEvent):void&lt;br /&gt; {&lt;br /&gt;          if (zoomAll.isPlaying)&lt;br /&gt;              zoomAll.reverse();&lt;br /&gt;          else&lt;br /&gt;              zoomAll.play([event.target], event.type == MouseEvent.ROLL_OUT ? true : false);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Comments, advices and help are always welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-6527687358780391800?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/6527687358780391800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=6527687358780391800' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6527687358780391800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6527687358780391800'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/05/programmatic-skinning-in-flex-builder-3.html' title='Programmatic Skinning in Flex Builder 3'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-741350066377278295</id><published>2008-05-20T08:45:00.000-07:00</published><updated>2008-06-04T07:13:04.123-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Comet style requests'/><category scheme='http://www.blogger.com/atom/ns#' term='Jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='continuations'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Comet Style Requests and continuations</title><content type='html'>Let me start the introduction to this post by quoting an excerpt from an &lt;a href="http://www.irishdev.com/NewsArticle.aspx?id=2166"&gt;article &lt;/a&gt;"&lt;span id="NewsBody" class="bodyNS"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mail.google.com/mail/help/chat.html"&gt;GMail’s GTalk integration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jotlive.com/"&gt;Jot Live&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://renkoo.com/"&gt;Renkoo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cgiirc.sourceforge.net/"&gt;cgi:irc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://meebo.com/"&gt;Meebo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So what makes these apps special? What makes them different from other things that might at first glance appear similar? Fundamentally, they all use long-lived HTTP connections to reduce the latency with which messages are passed to the server. In essence, they do &lt;em&gt;not&lt;/em&gt; poll the server occasionally. Instead the server has an open line of communication with which it can &lt;em&gt;push&lt;/em&gt; data to the client.&lt;/p&gt;&lt;p&gt;&lt;span id="NewsBody" class="bodyNS"&gt;The architecture relies on a view of data which is event driven on both sides of the HTTP connection&lt;/span&gt;"&lt;/p&gt;The above style of communication is now widely used in Flex, but it is not "long-lived Http". So is this style of communication possible in Http? Sure with Comet style requests we can have long lived requests so that ajax clients, apart form polling, can also enjoy the "server-push" data. But what about the effects of this long lived Http connections? How does the server (servlet container) handle these requests?&lt;br /&gt;&lt;br /&gt;It is considered that "thread-per-request" is a better model than "thread-per-connection", when serving thousands of clients simulataneously (not for serving max requests per second). But with long lived connections, the "thread-per-request" model doesnt hold good. Consider a thousand ajax clients haing long lived connections toa  server. With &lt;/span&gt;&lt;span id="NewsBody" class="bodyNS"&gt;"thread-per-request" model, the server will run out  of threads to process new requests.  So a new approach is needed on the server side, if Comet style requests are to  be supported scalably.&lt;br /&gt;&lt;br /&gt;One of the new approaches is "Continuations". If continuations is a new term for any, whats the best site to check for its meaning other than &lt;a href="http://en.wikipedia.org/wiki/Continuation"&gt;wikipedia&lt;/a&gt;? This link gives an  excellent introduction to continuations (atleast to me, i didnt find any page which describes the concept in such accurate simple words) .&lt;br /&gt;&lt;br /&gt;Now the greedy question is "Can i use it in Java? Can i use it to develop web applications in Java?". Yes! Jetty supports continuations on the server side. For more information, visit their &lt;a href="http://docs.codehaus.org/display/JETTY/Continuations"&gt;wiki &lt;/a&gt;site.&lt;br /&gt;&lt;br /&gt;The basic idea is to have long lived connections, but to used threads effeciently. Continuations seem to support that, they only allocate threads to these long-lived connections when an event occurs, threads don't waste time waiting for blocking IO etc.&lt;br /&gt;&lt;br /&gt;I also found an &lt;a href="http://www.artima.com/lejava/articles/distributed_continuationsP.html"&gt;article&lt;/a&gt; on continuations in Rife and scalability with Terracota.&lt;br /&gt;Also Scala, has support for continuations. But more on that in an other post.&lt;br /&gt;&lt;/span&gt;&lt;span id="NewsBody" class="bodyNS"&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-741350066377278295?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/741350066377278295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=741350066377278295' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/741350066377278295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/741350066377278295'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/05/comet-style-requests-and-continuations.html' title='Comet Style Requests and continuations'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-3329239242323587773</id><published>2008-05-03T13:38:00.000-07:00</published><updated>2008-05-03T13:56:06.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Sprite'/><category scheme='http://www.blogger.com/atom/ns#' term='FlexSprite'/><title type='text'>FlexSprite</title><content type='html'>FlexSprite is defined like this "public class FlexSprite extends Sprite". As far as Sprite goes, the docs quote that&lt;br /&gt;&lt;br /&gt;"  The Sprite class is a basic display list building block: a display list node that can display  graphics and can also contain children.   &lt;p&gt;A Sprite object is similar to a movie clip, but does not have a timeline. Sprite is an  appropriate base class for objects that do not require timelines. For example, Sprite would be a  logical base class for user interface (UI) components that typically do not use the timeline.&lt;/p&gt;   &lt;p&gt;The Sprite class is new in ActionScript 3.0. It provides an alternative to the functionality of  the MovieClip class, which retains all the functionality of previous ActionScript releases to  provide backward compatibility."&lt;/p&gt;It would be handy to know the difference between movieclip, timelines and Sprite, but thats for an another post.&lt;br /&gt;&lt;br /&gt;And FlexSprite adds extends Sprite to override the toString() method. It overrides the toString() method  to return a string indicating the location of the object within the hierarchy of DisplayObjects in the application.&lt;br /&gt;&lt;p&gt;It iterates through the parent heirarchy untill it reaches the stage object and returns the object location heirarchy.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-3329239242323587773?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/3329239242323587773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=3329239242323587773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3329239242323587773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3329239242323587773'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/05/flexsprite.html' title='FlexSprite'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-6231811239090054835</id><published>2008-03-04T13:11:00.001-08:00</published><updated>2008-03-04T13:32:56.800-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='flex 3'/><category scheme='http://www.blogger.com/atom/ns#' term='declaration of style conflicts with previous version'/><title type='text'>Migration to Flex 3</title><content type='html'>declaration of style conflicts with previous version !&lt;br /&gt;&lt;br /&gt;If you see the above error when compiling your flex 3 application, then it is most probably because you are compiling your project linked to a swc file that is compiled in flex 2. To solve the above problem, find out the swc's or library project's your project is depending on, and compile those projects and files using flex 3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-6231811239090054835?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/6231811239090054835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=6231811239090054835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6231811239090054835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6231811239090054835'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/03/migration-to-flex-3.html' title='Migration to Flex 3'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-8820873530582351720</id><published>2008-02-25T09:08:00.000-08:00</published><updated>2008-02-26T07:05:25.759-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='anonymous function'/><category scheme='http://www.blogger.com/atom/ns#' term='nested'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript functions'/><category scheme='http://www.blogger.com/atom/ns#' term='scope'/><category scheme='http://www.blogger.com/atom/ns#' term='this'/><title type='text'>Flex MXML, Functions and Nested Functions</title><content type='html'>In my previous post &lt;a href="http://abeginner.blogspot.com/2008/02/anonymous-functions-in-flex.html"&gt;Anonymous Functions in Flex&lt;/a&gt;, I mentioned about the inconsistent behaviour of nested functions. I decided to dvelve deeper and see if it was a bug or if i was missing something. I started out with the language specification, which was very disappointing, still,  had some information on how functions in actionscript behave.&lt;br /&gt;&lt;br /&gt;The following lines are taken from the specification document :&lt;br /&gt;&lt;br /&gt;/**********************************************************************************&lt;br /&gt;&lt;p&gt;Function objects have a property named &lt;code&gt;prototype&lt;/code&gt; whose value is used to initialize the intrinsic delegate property of the objects it creates. The &lt;code&gt;prototype&lt;/code&gt; property has a default value of a new instance of the class Object. Building on the previous example:&lt;/p&gt; &lt;div class="listing"&gt; &lt;pre&gt;function A() { this.x = 10 }&lt;br /&gt;function B() {}&lt;br /&gt;B.prototype = new A&lt;br /&gt;var o = new B&lt;br /&gt;trace(o.x)     // traces 10&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt;&lt;p&gt;The value of &lt;code&gt;o&lt;/code&gt; is an instance of &lt;code&gt;B,&lt;/code&gt; which delegates to an instance of &lt;code&gt;A&lt;/code&gt;, which has a property named &lt;code&gt;x&lt;/code&gt; with value of 10.&lt;/p&gt; &lt;p&gt;Constructor methods inside of a class are also used to create objects. But, unlike constructor functions, constructor methods create objects with a set of fixed properties (traits) associated with its class and a delegate that is also an instance of its class.&lt;/p&gt; &lt;div class="listing"&gt; &lt;pre&gt;class A {&lt;br /&gt;var x&lt;br /&gt;function A() { this.x = 10 }&lt;br /&gt;}&lt;br /&gt;var o = new A&lt;br /&gt;trace(o.x)     // traces 10&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt;&lt;p&gt;There are some subtle differences between the preceding example and the one involving a function constructor:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;code&gt;x&lt;/code&gt; is a fixed property of each instance of &lt;code&gt;A&lt;/code&gt; rather than a dynamic property.&lt;/li&gt;&lt;li&gt;&lt;code&gt;A.prototype&lt;/code&gt; is an instance of &lt;code&gt;A&lt;/code&gt; rather than an instance of Object.&lt;/li&gt;&lt;li&gt;The expression &lt;code&gt;A(expr)&lt;/code&gt; does not call the function &lt;code&gt;A&lt;/code&gt; defined in class &lt;code&gt;A&lt;/code&gt;. It results in an explicit conversion of the value of &lt;code&gt;expr&lt;/code&gt; to the type &lt;code&gt;A&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Class methods are functions that are defined with the &lt;code&gt;static&lt;/code&gt; attribute inside of a class definition. A class method cannot be used as a constructor and does not define the &lt;code&gt;this&lt;/code&gt; reference. Class methods are in the scope of the class object in which they are defined.&lt;/p&gt; &lt;p&gt;Instance methods are functions that are defined without the &lt;code&gt;static&lt;/code&gt; attribute and inside a class definition. Instance methods are associated with an instance of the class in which they are defined. Instance methods can override or implement inherited class or interface methods and always have a value bound to &lt;code&gt;this&lt;/code&gt;.&lt;/p&gt; The value of &lt;code&gt;this&lt;/code&gt; in an instance method is the value of the instance the method belongs to.&lt;br /&gt;&lt;pre&gt;************************************************************************************/&lt;/pre&gt;Having said that, consider the example below : (The examples below have syntax errors, i had to do so, r else the page would not display these tags properly, please correct them, if you r copy/pasting)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;&lt;br /&gt;&lt;br /&gt;mx:Button id="ti" click="getText()" label="uhuh"/&gt;&lt;br /&gt;mx:Script&gt;&lt;br /&gt;                     ADD CDATA TAG HERE WHEN COMPILING&lt;br /&gt; import mx.core.UIComponent;&lt;br /&gt; import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt; private var global_var:String = "global_var";&lt;br /&gt;&lt;br /&gt; private function getText():void&lt;br /&gt; {&lt;br /&gt;  Alert.show("Level 1 : "+global_var+"\n\n"+this.ti.label);&lt;br /&gt;  var inner1:Function = function():void&lt;br /&gt;   {&lt;br /&gt;    Alert.show("Level 2 : "+global_var+"\n\n"+this.ti.label)&lt;br /&gt;    var inner2:Function = function():void&lt;br /&gt;    {&lt;br /&gt;     Alert.show("Level 3 : "+global_var+"\n\n"+this.ti.label);&lt;br /&gt;    }&lt;br /&gt;    inner2();&lt;br /&gt;   };&lt;br /&gt;  inner1();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;]]&gt;&lt;br /&gt;/mx:Script&gt;&lt;br /&gt;/mx:Application&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the above example, getText() is a instance method, and the flex compiler sets this method's this reference to the Application instance.  So, Level 1 is good, but the functions inner2 and inner3 are not instance methods and their this reference is not set to anything, we have to set it.&lt;br /&gt;And how do we do it? We do it by calling the function, specifying the prototype object/target object for that function using call method. Below is a working example.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;&lt;br /&gt;&lt;br /&gt;mx:Button id="ti" click="getText()" label="uhuh"/&gt;&lt;br /&gt;mx:Script&gt;&lt;br /&gt;                     ADD CDATA TAG HERE WHEN COMPILING&lt;br /&gt; import mx.core.UIComponent;&lt;br /&gt; import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt; private var global_var:String = "global_var";&lt;br /&gt;&lt;br /&gt; private function getText():void&lt;br /&gt; {&lt;br /&gt;  Alert.show("Level 1 : "+global_var+"\n\n"+this.ti.label);&lt;br /&gt;  var inner1:Function = function():void&lt;br /&gt;   {&lt;br /&gt;    Alert.show("Level 2 : "+global_var+"\n\n"+this.ti.label)&lt;br /&gt;    var inner2:Function = function():void&lt;br /&gt;    {&lt;br /&gt;     Alert.show("Level 3 : "+global_var+"\n\n"+this.ti.label);&lt;br /&gt;    }&lt;br /&gt;    inner2.call(this);&lt;br /&gt;   };&lt;br /&gt;  inner1.call(this);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;]]&gt;&lt;br /&gt;/mx:Script&gt;&lt;br /&gt;/mx:Application&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice inner2.call(this) and inner1.call(this)? But how come the inner functions access global_var variable, any explanation? In the Adobe Documentation, programming_actionscript3.pdf,  Under section "Understanding variable scope", these lines are specified :&lt;br /&gt;&lt;br /&gt;/*******************************************************************************&lt;br /&gt;ActionScript variables, unlike variables in C++ and Java, do not have block-level scope. A&lt;br /&gt;block of code is any group of statements between an opening curly brace ( { ) and a closing&lt;br /&gt;curly brace ( } ). In some programming languages, such as C++ and Java, variables declared&lt;br /&gt;inside a block of code are not available outside that block of code. This restriction of scope is&lt;br /&gt;called block-level scope, and does not exist in ActionScript. If you declare a variable inside a&lt;br /&gt;block of code, that variable will be available not only in that block of code, but also in any&lt;br /&gt;other parts of the function to which the code block belongs.&lt;br /&gt;*******************************************************************************/&lt;br /&gt;&lt;br /&gt;The above answers our question, but the specification talks nothing about variable scopes. Its a relief to know there is a neat solution for the nested functions problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-8820873530582351720?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/8820873530582351720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=8820873530582351720' title='261 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/8820873530582351720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/8820873530582351720'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/02/flex-mxml-functions-and-nested.html' title='Flex MXML, Functions and Nested Functions'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>261</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-3570355915929081160</id><published>2008-02-21T07:07:00.001-08:00</published><updated>2008-02-25T10:09:35.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='anonymous function'/><category scheme='http://www.blogger.com/atom/ns#' term='action script'/><title type='text'>Anonymous "functions" in Flex</title><content type='html'>I will not start this post with an introduction to what an anonymous function is. I assume most of you already know it. So, i was very happy with the notion of Function being a type in action script. That means i can define a function type and create multiple copies of it, probably not that useful. But i can pass around functions to other functions, treat them as values and perform operations on functions, i can combine functions in a way we write mathematic functions on paper, probably not exactly like that, because actionscript does not support operator overloading. Forget operator loading, actionscript does not support function overloading, it also does not allow a constructor to be private. What is wierd is that, private constructors were supported untill actionscript 2, but discarded in actionscript 3.&lt;br /&gt;&lt;br /&gt;So as an example, consider this&lt;br /&gt;&lt;br /&gt;function action(condition:Fucntion, how:Function, preProcess:Function, postProcess:Function)&lt;br /&gt;{&lt;br /&gt; while(condition())&lt;br /&gt; {&lt;br /&gt;         preProcess();&lt;br /&gt;         how();&lt;br /&gt;         postProcess();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;It is not important how we implement this, the important point is the concept of abstracting the operations/functions  and creating reusable  functions, and avoid code duplication. There are many more advantages of treating functions as values, a similar concept in C++ is a function object or a functor, but those uses and advantages in a  later blog.&lt;br /&gt;&lt;br /&gt;So, actionscript provides a function type, and also supports anonymous functions which is great, BUT BUT, the anonymous functions are screwed up, their scopes are not at all consistent. When you refer to the variable "this" in a anonymous function, the result is not similar when you refer "this" in a function defined by name.  so we cannot do this,&lt;br /&gt;&lt;br /&gt;remoteObj.send(args,&lt;br /&gt;     function(event:ResultEvent):void&lt;br /&gt;     {&lt;br /&gt;             PopupManager.closePopup(this);&lt;br /&gt;     }&lt;br /&gt;     , fault_handler_function);&lt;br /&gt;&lt;br /&gt;The above results in a runtime error. So we have to do this&lt;br /&gt;&lt;br /&gt;remoteObj.send(args, result_handler, fault_handler_function);&lt;br /&gt;&lt;br /&gt;private function result_handler(event:ResultEvent):void&lt;br /&gt;{&lt;br /&gt; PopupManager.removePopup(this);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why this inconsistency, and why isnt this specified anywhere in the documentation. Is there a actionscript specification these people are working on? Is it avilable anywhere on the internet?&lt;br /&gt;&lt;br /&gt;An update to this subject, the solution is posted &lt;a href="http://abeginner.blogspot.com/2008/02/flex-mxml-functions-and-nested.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I did a quick search and i found the specification for actionscript 3. &lt;a href="http://livedocs.adobe.com/specs/actionscript/3/wwhelp/wwhimpl/js/html/wwhelp.htm"&gt;http://livedocs.adobe.com/specs/actionscript/3/wwhelp/wwhimpl/js/html/wwhelp.htm&lt;/a&gt;. Is this supposed to be the specification for a language, well, it doesnt at all look like it and it is a total waste.  It looks like just an another tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-3570355915929081160?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/3570355915929081160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=3570355915929081160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3570355915929081160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3570355915929081160'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/02/anonymous-functions-in-flex.html' title='Anonymous &quot;functions&quot; in Flex'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-3052743616547501132</id><published>2008-02-07T10:50:00.001-08:00</published><updated>2008-02-07T10:54:38.046-08:00</updated><title type='text'>MySql - Permissions</title><content type='html'>I spent a lot of time reading the official documentation and a lot of tutorials and blogs, but didnt find what i wanted, untill i found &lt;a href="http://www.databasejournal.com/features/mysql/article.php/3311731"&gt;this&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; article. The information is to the point and does not miss a single point.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.databasejournal.com/article.php/1474351"&gt;Ian Gliffin&lt;/a&gt; is the man who wrote this, and he has a lot of articles on &lt;a href="http://www.databasejournal.com/article.php/1474351"&gt;Mysql&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-3052743616547501132?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/3052743616547501132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=3052743616547501132' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3052743616547501132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3052743616547501132'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/02/mysql-permissions.html' title='MySql - Permissions'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-9057009333729269772</id><published>2008-02-01T10:57:00.000-08:00</published><updated>2008-02-01T13:13:32.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='best practices'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>Code Generation - Good or Bad?</title><content type='html'>I am planning to put my thoughts about this subject on my blog. But wanted to know what people think about this in the meantime.&lt;br /&gt;&lt;br /&gt;Please leave comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-9057009333729269772?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/9057009333729269772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=9057009333729269772' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/9057009333729269772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/9057009333729269772'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/02/code-generation-good-or-bad.html' title='Code Generation - Good or Bad?'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-6326689381101191917</id><published>2008-01-30T07:46:00.000-08:00</published><updated>2008-05-29T07:26:50.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><title type='text'>Flex Chops</title><content type='html'>If you are reading this blog, i would assume you are familiar with flex. So i wouldnt introduce you to flex. Nor would i like to point you to different articles on the web out there. I would like to share my thoughts of the Flex framework and its internals, as i make my way through the learning process.&lt;br /&gt;&lt;br /&gt;Adobe Flex has some decent pdf's online to guide developers on how to get started, but the tutorials only get the developers to start, they dont help the developer to become an expert. There are some books on flex and actionscript and lots of them releasing soon, but most of the books dont teach you anything new. If you have some previous experience in an object oriented language, functional language and a language which supports dynamic typing, reading a majority of the books is a waste of time and money. One good book which is geared towards Flex develpment and best practices is &lt;b class="sans"&gt;&lt;a href="http://www.amazon.com/Internet-Applications-Adobe-Secrets-Masters/dp/097776222X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201708600&amp;amp;sr=8-1"&gt;Rich Internet Applications with Adobe Flex &amp;amp; Java&lt;/a&gt;. &lt;/b&gt;&lt;span class="sans"&gt;Of the 5 books that i have read on Flex and Actionscript, this book is my favourite and shows the best ways to develop flex components and applications. Also the book &lt;/span&gt;&lt;a href="http://www.amazon.com/Foundation-Actionscript-3-0-Animation-Making/dp/1590597915/ref=sr_1_6?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201708957&amp;amp;sr=1-6"&gt;&lt;b class="sans"&gt;Foundation Actionscript 3.0 Animation: Making Things Move!&lt;/b&gt;&lt;/a&gt;&lt;span class="sans"&gt; provides a good insight into the basics of flash platform, the Stage compoenent, Timelines, frame events, etc. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Flex is a GUI framework, and flex is not only about MXML, its also about customizing business and layout components, and the knowledge about the internals of Flex framework is a must for a serious flex developer. So to learn the internals, i will follow the old saying "source code is the best documentation". I plan to write a series of articles on flex, sharing my thoughts. I will start with the FlexSprite and UIComponent classes, the base classes for all display compoents in flex.&lt;br /&gt;Any comments/corrections are appreciated :).&lt;br /&gt;&lt;span class="sans"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-6326689381101191917?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/6326689381101191917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=6326689381101191917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6326689381101191917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/6326689381101191917'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/01/flex-chops.html' title='Flex Chops'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-3095086933091042156</id><published>2008-01-29T08:14:00.000-08:00</published><updated>2008-02-06T12:00:36.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='map reduce'/><category scheme='http://www.blogger.com/atom/ns#' term='parellel'/><category scheme='http://www.blogger.com/atom/ns#' term='gird computing'/><category scheme='http://www.blogger.com/atom/ns#' term='distributed'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Parellel Computation on Distributed Systems - Map-Reduce Paradigm</title><content type='html'>If you ever wonder how google does its fancy searching lightning fast, &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;this&lt;/a&gt; should give an idea.&lt;br /&gt;It is interesting how the idea was derived from Lisp(functional programming languages are good for computations with no state attached, am i right?) and iterators were used to read massive amounts of data. It again shows us that being equipped with knowledge about different programming languages and paradigms pays off.&lt;br /&gt;&lt;br /&gt;Also if you are a Java developer, you are lucky. Because 90% of any functionality is implemented in terms of libraries and frameworks, and a simple search in google will reveal the java project. Apache has an implementation of Map-Reduce called &lt;a href="http://hadoop.apache.org/core/"&gt;Hadoop&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also you might want to check out the different Java Frameworks that allow &lt;a href="http://www.manageability.org/blog/stuff/open-source-grid-cluster-java"&gt;Grid Computing&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-3095086933091042156?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/3095086933091042156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=3095086933091042156' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3095086933091042156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/3095086933091042156'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/01/parellel-computation-on-distributed.html' title='Parellel Computation on Distributed Systems - Map-Reduce Paradigm'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-1739413850099980434</id><published>2008-01-29T07:19:00.001-08:00</published><updated>2008-01-29T07:47:10.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='Clustering'/><category scheme='http://www.blogger.com/atom/ns#' term='Highly available web'/><category scheme='http://www.blogger.com/atom/ns#' term='Fail Overs'/><title type='text'>Basics on J2EE Clustering</title><content type='html'>I was looking for some information on what clustering is and how it can be used with J2EE. For people sharing the same interests, check out the links below&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/jw-02-2001/jw-0223-extremescale.html"&gt;Abraham Kang&lt;/a&gt; writes elaborately about the basics of clustering, gives a good insight into different kinds of clustering and the clustering capabilties of different ApplicationServers. His list of advantages and disadvantages with different strategies is a highlight. Beware, the article is a little out of date ( writtten on 02/23/01), but the basics are solid.&lt;br /&gt;&lt;br /&gt;Read his &lt;a href="http://www.javaworld.com/javaworld/jw-08-2001/jw-0803-extremescale2.html"&gt;part II&lt;/a&gt;  here to get the bigger picture on load balancing techniques and some tips (most of them already know these) on clustering.&lt;br /&gt;&lt;br /&gt;An another introduction to clustering &lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=J2EEClustering"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-1739413850099980434?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/1739413850099980434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=1739413850099980434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/1739413850099980434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/1739413850099980434'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/01/basics-on-j2ee-clustering.html' title='Basics on J2EE Clustering'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-5753399256911205991</id><published>2008-01-25T14:20:00.000-08:00</published><updated>2008-01-28T13:10:36.975-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='spring osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><title type='text'></title><content type='html'>An Introduction to OSGI.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://dev2dev.bea.com/pub/a/2007/12/osgi-introduction.html"&gt;An Introduction to OSGi on the Server Side&lt;/a&gt; by Daniel Rubio -- Daniel Rubio introduces OSGi, an environment that facilitates modularizing an application into smaller and more manageable pieces, with packaging, JVM, and class loader graph support.&lt;/p&gt;Does somebody really know the pros and cons of JMX and OSGI?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I came across some interesting links on OSGI and Web Development, thought i would list them here.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;a href="http://mea-bloga.blogspot.com/2007/08/web-development-is-so-90s.html"&gt;Chris Aniszczyk&lt;/a&gt; discusses web development with Equinox HTTP Service.&lt;br /&gt;&lt;br /&gt;If you want to check out how equinox can be used to develop visit &lt;a href="http://www.eclipse.org/equinox/server/"&gt;Server-Side Equinox&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.eclipse.org/equinox/server/"&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;and &lt;a href="http://www.eclipse.org/equinox/server/http_in_container.php"&gt;Equinox in a Servlet Container.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://neilbartlett.name/downloads/extensions_vs_services.pdf"&gt;Neil Bartlett&lt;/a&gt; discusses about Eclipse Extensions and OSGI. This article is a must read for someone interested in knowing about Equinox, OSGI, OSGI Declarative Services and Spring OSGI. Gives a nice introduction and the rationale behind these technologies.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-5753399256911205991?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/5753399256911205991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=5753399256911205991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/5753399256911205991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/5753399256911205991'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2008/01/introduction-to-osgi.html' title=''/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5950309259069207053.post-4539382786919117950</id><published>2006-10-16T12:32:00.000-07:00</published><updated>2008-01-28T14:21:06.540-08:00</updated><title type='text'>What is important ?</title><content type='html'>If you are bored and dont know what to do now, leave a comment on what is really important for you when it comes to work?&lt;br /&gt;&lt;br /&gt;Money?&lt;br /&gt;Job Satisfaction?&lt;br /&gt;Sexy Employee in the next seat?&lt;br /&gt;........?&lt;br /&gt;&lt;br /&gt;For me, its a combination of Money, Job Satisfaction and Comfort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5950309259069207053-4539382786919117950?l=abeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abeginner.blogspot.com/feeds/4539382786919117950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5950309259069207053&amp;postID=4539382786919117950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/4539382786919117950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950309259069207053/posts/default/4539382786919117950'/><link rel='alternate' type='text/html' href='http://abeginner.blogspot.com/2006/10/j2ee.html' title='What is important ?'/><author><name>Sawan Kuntala</name><uri>http://www.blogger.com/profile/04355320545781044484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
