<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Dk4BRns8fip7ImA9WhRUEE0.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610</id><updated>2012-01-19T21:29:17.576+01:00</updated><category term="logging" /><category term="puremvc" /><category term="centos" /><category term="Jasper" /><category term="meego" /><category term="air" /><category term="java" /><category term="amf3" /><category term="seam" /><category term="wifi" /><category term="sni" /><category term="httpd" /><category term="logger" /><category term="flex comiler" /><category term="aop" /><category term="livecycle" /><category term="tx-datasource" /><category term="openssl" /><category term="cairngorm" /><category term="adobe" /><category term="flash player 10" /><category term="itemrenderer" /><category term="blazeds" /><category term="flex" /><category term="beta" /><category term="seo" /><category term="mvc" /><category term="social networks" /><category term="nokia" /><category term="flash builder" /><category term="spring" /><category term="devoxx" /><category term="symbian" /><category term="web service" /><category term="tilelist" /><category term="smarthphone" /><category term="sem" /><category term="eclipse" /><category term="qt" /><category term="flex builder" /><category term="weaving" /><category term="tomcat ltw" /><title>Ziletov blog</title><subtitle type="html">JEE/RIA and beautiful software architectures blog. Useful articles and tutorials on programming and development techniques.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.miloszikic.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ZiletovBlog" /><feedburner:info uri="ziletovblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEIFRHY8eSp7ImA9WhZQGU4.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-4246253026205075661</id><published>2011-04-27T22:35:00.000+02:00</published><updated>2011-04-27T22:35:15.871+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T22:35:15.871+02:00</app:edited><title>Using different fill colors for positive and negative values in AreaChart</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Recently I have been playing with Flex AreaChart component and wanted to have different color fills for positive and negative values. This is not available out of the box and in order to achieve this new areaRenderer needs to be created.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;I found great forum thread that tackles similar thing (&lt;a href="http://forums.adobe.com/message/3005273"&gt;http://forums.adobe.com/message/3005273&lt;/a&gt;) and this component needed few improvements to have good stroke colors on negative side as well.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;The biggest challenge was the part where line drops from positive to negative value and should change colors in between values and vice versa. Luckily there is&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: Monaco; font-size: 11px;"&gt;renderedBase &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;property available that holds info where is the zero point and with a little bit of trigonometry we can find out where are the important points where we need to split the line and draw different colors.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;And at the end here is the code:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;AreaChartRenderer&lt;/i&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;style type="text/css"&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
&lt;/style&gt;   &lt;br /&gt;
&lt;pre class="brush: as3"&gt;package 
{
 
 import flash.display.Graphics;
 import flash.geom.Rectangle;
 
 import mx.charts.chartClasses.GraphicsUtilities;
 import mx.charts.renderers.AreaRenderer;
 import mx.graphics.IFill;
 import mx.graphics.IStroke;
 import mx.graphics.SolidColor;
 import mx.graphics.SolidColorStroke;
 
 public class AreaChartRenderer extends AreaRenderer
 {
  
  private var strokePositive:uint              = 0x127625;
  private var strokeNegative:uint              = 0xCC2800;
  
  private var fillPositive:uint                = 0x127625;
  private var alphaPositive:Number             = 0.2;
  private var fillNegative:uint                = 0xCC2800;
  private var alphaNegative:Number             = 0.2;
  
  
  private static var noStroke:SolidColorStroke = new SolidColorStroke(0, 0, 0);
  
  /**
   *  @private
   */
  override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
  {
   super.updateDisplayList(unscaledWidth, unscaledHeight);
   if (!data)
   {
    return;
   }
   
   
   var fill:IFill     = null;
   var stroke:IStroke = null;
   
   var form:String    = getStyle("form");
   
   var g:Graphics     = graphics;
   g.clear();
   
   
   
   var boundary:Array /* of Object */                 = data.filteredCache;
   var n:int                          = boundary.length;
   if (n == 0)
   {
    return;
   }
   
   var xMin:Number;
   var xMax:Number = xMin = boundary[0].x;
   var yMin:Number;
   var yMax:Number = yMin = boundary[0].y;
   
   var v:Object;
   
   // loop through items and prepare fills
   for (var i:int = 0; i &amp;lt; n; i++)
   {
    v = boundary[i];
    
    xMin = Math.min(xMin, v.x);
    yMin = Math.min(yMin, v.y);
    xMax = Math.max(xMax, v.x);
    yMax = Math.max(yMax, v.y);
    
    if (!isNaN(v.min))
    {
     yMin = Math.min(yMin, v.min);
     yMax = Math.max(yMax, v.min);
    }
    
    //middle values
    var x1:Number, y1:Number;
    
    if (boundary[i + 1] != null &amp;amp;&amp;amp; boundary[i].item.value &amp;gt; 0 &amp;amp;&amp;amp; boundary[i + 1].item.value &amp;lt; 0)
    {
     // we have a transtion from positive to negative. We need to break this down to 2 areas for filling
     
     // determine middle point
     
     // y middle point
     
     y1 = data.renderedBase;
     
     x1 = Math.sqrt(Math.pow((boundary[i + 1].x - boundary[i].x), 2) * Math.pow((y1 - boundary[i].y), 2) / Math.pow((boundary[i + 1].y - boundary[i].y), 2)) + boundary[i].x;
     
     // color positive
     fill = new SolidColor(fillPositive, alphaPositive);
     stroke = new SolidColorStroke(strokePositive);
     
     
     fill.begin(g, new Rectangle(xMin, yMin, x1 - xMin, y1 - yMin), null);
     GraphicsUtilities.drawPolyLine(g, boundary, i, i + 2, "x", "y", noStroke, form);
     g.lineTo(x1, data.renderedBase);
     g.lineTo(boundary[i].x, data.renderedBase);
     g.endFill();
     
     // positive stroke
     drawStroke(g, boundary, i, stroke, form, x1, y1);
     
     // color negative
     fill = new SolidColor(fillNegative, alphaNegative);
     stroke = new SolidColorStroke(strokeNegative);
     
     fill.begin(g, new Rectangle(x1, y1, xMax - x1, yMax - y1), null);
     GraphicsUtilities.drawPolyLine(g, boundary, i, i + 2, "x", "y", noStroke, form);
     g.lineTo(boundary[i + 1].x, data.renderedBase);
     g.lineTo(x1, data.renderedBase);
     g.endFill();
     
     drawStroke(g, boundary, i, stroke, form, boundary[i + 1].x, boundary[i + 1].y, x1, y1);
     
     
    }
    else if (boundary[i + 1] != null &amp;amp;&amp;amp; boundary[i].item.value &amp;lt; 0 &amp;amp;&amp;amp; boundary[i + 1].item.value &amp;gt; 0)
    {
     // we have a transtion from negative to positive. We need to break this down to 2 areas for filling
     
     // determine middle point
     
     // y middle point
     
     y1 = data.renderedBase;
     
     x1 = Math.sqrt(Math.pow((boundary[i + 1].x - boundary[i].x), 2) * Math.pow((y1 - boundary[i].y), 2) / Math.pow((boundary[i + 1].y - boundary[i].y), 2)) + boundary[i].x;
     
     
     // color negative
     fill = new SolidColor(fillNegative, alphaNegative);
     stroke = new SolidColorStroke(strokeNegative);
     
     fill.begin(g, new Rectangle(xMin, yMin, x1 - xMin, y1 - yMin), null);
     GraphicsUtilities.drawPolyLine(g, boundary, i, i + 2, "x", "y", noStroke, form);
     g.lineTo(x1, data.renderedBase);
     g.lineTo(boundary[i].x, data.renderedBase);
     g.endFill();
     
     drawStroke(g, boundary, i, stroke, form, x1, y1);
     
     // color positive
     fill = new SolidColor(fillPositive, alphaPositive);
     stroke = new SolidColorStroke(strokePositive);
     
     
     fill.begin(g, new Rectangle(x1, y1, xMax - x1, yMax - y1), null);
     GraphicsUtilities.drawPolyLine(g, boundary, i, i + 2, "x", "y", noStroke, form);
     g.lineTo(boundary[i + 1].x, data.renderedBase);
     g.lineTo(x1, data.renderedBase);
     g.endFill();
     
     drawStroke(g, boundary, i, stroke, form, boundary[i + 1].x, boundary[i + 1].y, x1, y1);
    }
    else
    {
     
     if (boundary[i].item.value &amp;gt; 0)
     {
      fill = new SolidColor(fillPositive, alphaPositive);
      stroke = new SolidColorStroke(strokePositive);
     }
     else
     {
      fill = new SolidColor(fillNegative, alphaNegative);
      stroke = new SolidColorStroke(strokeNegative);
     }
     
     
     if (i &amp;lt; n - 1)
     {
      fill.begin(g, new Rectangle(xMin, yMin, xMax - xMin, yMax - yMin), null);
      GraphicsUtilities.drawPolyLine(g, boundary, i, i + 2, "x", "y", noStroke, form);
      g.lineTo(boundary[i + 1].x, data.renderedBase);
      g.lineTo(boundary[i].x, data.renderedBase);
      g.endFill();
      
      
      drawStroke(g, boundary, i, stroke, form);
     }
    }
   }
   
   
   
  }
  
  /**
   * Draws a line with a given stroke between 2 points. It either uses boundary point array or start and end points 
   * 
   * 
   */  
  
  private function drawStroke(g:Graphics, boundary:Array, i:int, stroke:IStroke, form:String, endX:Number = NaN, endY:Number = NaN, startX:Number = NaN, startY:Number = NaN):void
  {
   
   if (isNaN(startX))
   {
    g.moveTo(boundary[i].x, boundary[i].y);
   } else {
    g.moveTo(startX, startY);
   }
   
   var colorStroke:SolidColorStroke = stroke as SolidColorStroke;
   g.lineStyle(colorStroke.weight, colorStroke.color, colorStroke.alpha);
   
   if (boundary[i].element.minField != null &amp;amp;&amp;amp; boundary[i].element.minField != "")
   {
    g.lineTo(boundary[i + 1].x, boundary[i + 1].min);
    
    GraphicsUtilities.drawPolyLine(g, boundary, i + 1, i, "x", "min", noStroke, form, false);
   }
   else
   {
    if (isNaN(endX))
    {
     g.lineTo(boundary[i + 1].x, boundary[i + 1].y);
    }
    else
    {
     g.lineTo(endX, endY);
    }
   }
   
   g.endFill();
  }
 }
}
&lt;/pre&gt;&lt;br /&gt;
Sample Application:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:xml"&gt;&lt;s:application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"&gt;

    &lt;fx:script&gt;
        
    &lt;/fx:script&gt;


    &lt;mx:areachart dataprovider="{values}" height="100%" id="areaChart" paddingleft="5" paddingright="5" showdatatips="true" width="45%"&gt;

        &lt;mx:horizontalaxis&gt;
            &lt;mx:categoryaxis categoryfield="Month"&gt;
        &lt;/mx:categoryaxis&gt;&lt;/mx:horizontalaxis&gt;

        &lt;mx:series&gt;
            &lt;mx:areaseries arearenderer="AreaChartRenderer" displayname="value" form="curve" yfield="value"&gt;
        &lt;/mx:areaseries&gt;&lt;/mx:series&gt;
    &lt;/mx:areachart&gt;

    &lt;mx:legend dataprovider="{areaChart}"&gt;

&lt;/mx:legend&gt;&lt;/s:application&gt;



&lt;/pre&gt;&lt;br /&gt;
And here is the final result:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LcKd91weE3U/Tbh9sqyiwDI/AAAAAAAACPY/w1RuOv_9vg0/s1600/multicolorchart.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://4.bp.blogspot.com/-LcKd91weE3U/Tbh9sqyiwDI/AAAAAAAACPY/w1RuOv_9vg0/s320/multicolorchart.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;p&gt;Happy charting!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-4246253026205075661?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xoJ6XtPlHMTHVpipbCPZFItiPKU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xoJ6XtPlHMTHVpipbCPZFItiPKU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xoJ6XtPlHMTHVpipbCPZFItiPKU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xoJ6XtPlHMTHVpipbCPZFItiPKU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/o9H5T12bYlA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/4246253026205075661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=4246253026205075661" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4246253026205075661?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4246253026205075661?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/o9H5T12bYlA/using-different-fill-colors-for.html" title="Using different fill colors for positive and negative values in AreaChart" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-LcKd91weE3U/Tbh9sqyiwDI/AAAAAAAACPY/w1RuOv_9vg0/s72-c/multicolorchart.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.miloszikic.com/2011/04/using-different-fill-colors-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEGR307eSp7ImA9WhZTFk4.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-3036443293684745356</id><published>2011-03-20T15:17:00.000+01:00</published><updated>2011-03-20T15:17:06.301+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-20T15:17:06.301+01:00</app:edited><title>Flex ArrayIndexOutOfBounds Exception in SDK 4.1 on incremental builds</title><content type="html">&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans', arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;There is an ArrayIndexOutOfBounds exception with the latest final build of&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;Flex&lt;/span&gt;&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;SDK&lt;/span&gt;&amp;nbsp;4.1 which manifests itself with incremental builds. Hopefully problem is solved!&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;There is no official full&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;sdk&lt;/span&gt;&amp;nbsp;release out there but in order to solve this you should replace mxmlc.&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;jar&lt;/span&gt;&amp;nbsp;in libs folder of your existing&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;sdk&lt;/span&gt;location.&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Good mxmlc.&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;jar&lt;/span&gt;&amp;nbsp;file can be downloaded from:&amp;nbsp;&lt;a href="https://bugs.adobe.com/jira/secure/attachment/62348/mxmlc.jar" style="color: #67753a;" target="_blank"&gt;https://bugs.adobe.com/jira/&lt;wbr&gt;&lt;/wbr&gt;secure/attachment/62348/mxmlc.&lt;wbr&gt;&lt;/wbr&gt;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;jar&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;And the complete Jira issue is at:&amp;nbsp;&lt;a href="https://bugs.adobe.com/jira/browse/SDK-26799" style="color: #67753a;" target="_blank"&gt;https://bugs.adobe.com/jira/&lt;wbr&gt;&lt;/wbr&gt;browse/&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #d9e7b0; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #202020;"&gt;SDK&lt;/span&gt;-26799&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Enjoy your incremental builds again :)&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;(it seams that this occurs when you are using halo and spark components al together only)&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&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/1404651776875741610-3036443293684745356?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fIiqmMveFA7hbjGBCa_1U8ZKm3Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fIiqmMveFA7hbjGBCa_1U8ZKm3Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fIiqmMveFA7hbjGBCa_1U8ZKm3Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fIiqmMveFA7hbjGBCa_1U8ZKm3Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/gYYq1uHYZhE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/3036443293684745356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=3036443293684745356" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3036443293684745356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3036443293684745356?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/gYYq1uHYZhE/flex-arrayindexoutofbounds-exception-in.html" title="Flex ArrayIndexOutOfBounds Exception in SDK 4.1 on incremental builds" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2011/03/flex-arrayindexoutofbounds-exception-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQFRX49fip7ImA9Wx9aFk0.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-3925115046460961758</id><published>2011-03-08T19:01:00.000+01:00</published><updated>2011-03-08T19:01:54.066+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T19:01:54.066+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><title>Embed fonts in Flex but smartly!</title><content type="html">&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Embeded fonts have so many advantages instead of using system ones. As Adobe stated already over this topic:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;ul style="margin-bottom: 0px; margin-left: 16px; margin-right: 16px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 16px;"&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Client environment does not need the font to be installed.&lt;/div&gt;&lt;/li&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Embedded fonts can be rotated and faded.&lt;/div&gt;&lt;/li&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Embedded fonts are anti-aliased, which means that their edges are smoothed for easier readability. This is especially apparent when the text size is large.&lt;/div&gt;&lt;/li&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Embedded fonts provide smoother playback when zooming.&lt;/div&gt;&lt;/li&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Text appears exactly as you expect when you use embedded fonts.&lt;/div&gt;&lt;/li&gt;
&lt;li style="line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 6px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="line-height: 16px; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;When you embed a font, you can use the advanced anti-aliasing information that provides clear, high-quality text rendering in SWF files. Using advanced anti-aliasing greatly improves the readability of text, particularly when it is rendered at smaller font sizes.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;But there are drawbacks as well:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Increased application size (longer download time)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Problems with combining halo and spark components (halo must use embed-as-cff: false)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Increased compile time (more hitting over the keyboard and shouting ccmooon cmooooon :D )&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So there must be some way to have both of 2 worlds of embeded vs non-embeded fonts and enjoy the coolness of embeded fonts. And yes, there is. There are some optimizations available like embeding just the range of characters.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Flex 4 SDK brought us &amp;nbsp;'''fontswf''' tool to pack your fonts as swf, which I find as a great way to manage application fonts.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;fontswf&lt;/b&gt; has some good arguments to optimize what you get as an output at the end eg. enter character range to be exported.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Sample command line:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;fontswf -u U+0041-U+005A,U+0061-U+007A,U+0030-U+0039,U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E &amp;nbsp;-a Arial -o arial arial.ttf&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;More about this tool and command line arguments: &lt;a href="http://bit.ly/gshXnH"&gt;http://bit.ly/gshXnH&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;And a bit about ranges (explanation what has been done above):&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 0041-U 005A, /* Upper-Case [A..Z] */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 0061-U 007A, /* Lower-Case a-z */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 0030-U 0039, /* Numbers [0..9] */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 0020-U 002F, /* Punctuation */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 003A-U 0040, /* Punctuation */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 005B-U 0060, /* Punctuation */&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;U 007B-U 007E; /* Punctuation */&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-3925115046460961758?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-cx9KHrtB6uw_KqB-E1S0PBKw94/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-cx9KHrtB6uw_KqB-E1S0PBKw94/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-cx9KHrtB6uw_KqB-E1S0PBKw94/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-cx9KHrtB6uw_KqB-E1S0PBKw94/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/mD1H6JVoh5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/3925115046460961758/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=3925115046460961758" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3925115046460961758?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3925115046460961758?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/mD1H6JVoh5g/embed-fonts-in-flex-but-smartly.html" title="Embed fonts in Flex but smartly!" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2011/03/embed-fonts-in-flex-but-smartly.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4FSH8_cCp7ImA9WhZTE0Q.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-5422922129862325592</id><published>2011-03-07T21:24:00.002+01:00</published><updated>2011-03-17T22:21:59.148+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T22:21:59.148+01:00</app:edited><title>Coding in the Cloud</title><content type="html">&lt;span class="Apple-style-span" style="background-color: #f3f3f3; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Update (03-17) new Cloud ide is available from the creators of Exo platform&amp;nbsp;&lt;a href="http://cloud-ide.com/"&gt;http://cloud-ide.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Everyone is speaking that we are in the years of Cloud. Cloud is everywhere. It leverages your infrastructure, it lowers operational costs, it scales whenever and how you need it, it helps you have your data wherever you go... well I will not discuss previously stated but it is definitely time for clouds to offer us something more. To allow us to live completely in the web. And for developers it means having great development tools online.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;There is always a question over how useful is this but with the todays trend to have internet connected devices with not so great processing power and trend for collaboration on every step this might have a great potential. It would be great that you can code check over what your team is doing while you're on your tablet device and even contribute if you want. &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;....and how close are we to there.. well it seams its around the corner but there are still missing parts so this can be really productive.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Here is the list what is available that came to my attention:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://c9.io/"&gt;http://c9.io/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://compilr.com/"&gt;http://compilr.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://shiftedit.net/"&gt;http://shiftedit.net&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://codepad.org/"&gt;http://codepad.org/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://jsbin.com/"&gt;http://jsbin.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.coderun.com/"&gt;http://www.coderun.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.bungeeconnect.com/"&gt;http://www.bungeeconnect.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://ideone.com/"&gt;http://ideone.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.online-php.com/"&gt;http://www.online-php.com/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.willryan.co.uk/WWWorkspace"&gt;http://www.willryan.co.uk/WWWorkspace&lt;/a&gt;/ - this one more a prototype that can be fired up locally&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;And some of this have really cool features like collaborative editing and live chat, language validation and even compilation they still lack a lot of what you get in your favourite IDEs right now. Eg.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;support running just JavaScript&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;some have evaluation ability but fail with good editing features.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;you cannot add additional libraries to your project&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;there is no way to simulate running web applications&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;etc..&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So basically what we have now is a syntax highlighting and some evaluation... but there is some cool factor in all this and certainly there would be some interesting updates and newcomers in this area so definitely something to watch.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;If you ask for my favorite at this time, I am setting my eye on Cloud9. They are basing their engine on &lt;a href="http://ace.ajax.org/"&gt;ACE&lt;/a&gt;&amp;nbsp;which is a successor of Mozilla Bespin (or SkyWriter) project so definitely have a good base.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So don't trow out your IDEs ... for now...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-5422922129862325592?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y3kzdNes9vdqj-8XOaAeeHnv_Y4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y3kzdNes9vdqj-8XOaAeeHnv_Y4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y3kzdNes9vdqj-8XOaAeeHnv_Y4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y3kzdNes9vdqj-8XOaAeeHnv_Y4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/q4GMTGb8Qtc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/5422922129862325592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=5422922129862325592" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5422922129862325592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5422922129862325592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/q4GMTGb8Qtc/coding-in-cloud.html" title="Coding in the Cloud" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2011/03/coding-in-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcNQnY5cSp7ImA9Wx9RF0Q.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-6764751889146700494</id><published>2010-12-19T22:10:00.001+01:00</published><updated>2010-12-19T22:11:33.829+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-19T22:11:33.829+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="web service" /><title>Interacting with WSSE Services from Flex</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Connecting to WSSE (Web Service Security Environment) from Flex is a rarely met. Recently I had a requirement to implement backend integration using WSSE UsernameToken Profile.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;If you want to know more about WSSE you can look at the official oasis specifications:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" style="color: blue;"&gt;WSSE specification&lt;/a&gt;&amp;nbsp;(PDF) at OASIS.&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf"&gt;Username token profile&lt;/a&gt; (PDF) of WS-Security&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf" style="color: blue;"&gt;X.509 token profile&lt;/a&gt;&amp;nbsp;(PDF) of WS-Security.&lt;/span&gt;&lt;/li&gt;
&lt;li style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0.pdf" style="color: blue;"&gt;SAML token profile&lt;/a&gt;&amp;nbsp;(PDF) of WS-Security.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;I would cover now just the Username token profile which is the biggest chance that you'll met in your environment.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;Username token can use PasswordText or PasswordDigest for authentication and PasswordDigest is created like this:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-size: 12px; line-height: 16px;"&gt;PasswordDigest = Base64 (SHA1 (Nonce + CreationTimestamp + Password)) (UTF8 Encoded)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;SHA1 is not available by default in Flex SDK but hopefully there &lt;a href="https://github.com/mikechambers/as3corelib"&gt;as3corelib is available&lt;/a&gt;&amp;nbsp;(thanks Mike). It contain a method that can encode this for us:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #333333; line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp;SHA1.hashToBase64(String)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;And now all we have to do is to assemble proper headers to send to our WSSE service call and here is how:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class="brush: as3"&gt;private function callWS(username:String, pass:String, nonce:String, currentDate:Date):void{
    
    authWS.clearHeaders();
    
    // convert date to UTC time
    currentDate = DateUtil.getUTCDate(currentDate);

    var base64:Base64Encoder = new Base64Encoder();
    base64.encode(nonce);
     
    nonce = base64.toString();
  
    
    var passString:String = nonce+df.format(currentDate)+pass;
    
    var passDigest:String = SHA1.hashToBase64(passString);
    var securityQName:QName = new QName(SECEXT_NS, "Security");
    
    var xmlContent:XML =&lt;wsse:Security
     xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
     soapenv:mustUnderstand="1"
     &gt;
     &lt;wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-2"&gt;
         &lt;wsu:Created&gt;{df.format(currentDate)}&lt;/wsu:Created&gt;
         &lt;/wsu:Timestamp&gt;
         &lt;wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-1"&gt;
         &lt;wsse:Username&gt;{username}&lt;/wsse:Username&gt;
         &lt;wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"&gt;{passDigest}&lt;/wsse:Password&gt;
         &lt;wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"&gt;{nonce}&lt;/wsse:Nonce&gt;
         &lt;wsu:Created&gt;{df.format(currentDate)}&lt;/wsu:Created&gt;
         &lt;/wsse:UsernameToken&gt;
     &lt;/wsse:Security&gt;;
    
    var securityHeader:SOAPHeader = new SOAPHeader(securityQName,xmlContent);
    
    authWS.addHeader(securityHeader);
    
    var obj:Object = new Object();
    obj.param1 = value1;
     
    authWS.getOperation("someOperation").arguments = obj;
    authWS.getOperation("someOperation").send();
   }


&lt;/pre&gt;&lt;br /&gt;
And web service is declared regularly. Here is the example in mxml:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&lt;fx:Declarations&gt;
  &lt;s:WebService id="authWS" wsdl="http://pathToYourService?wsdl"
       load="authWS_loadHandler(event)"
       result="authWS_resultHandler(event)"
       fault="authWS_faultHandler(event)"
       &gt;&lt;/s:WebService&gt;
  &lt;mx:DateFormatter formatString="YYYY-MM-DDTHH:NN:SSZ" id="df" &gt; &lt;/mx:DateFormatter&gt;
&lt;/fx:Declarations&gt;
&lt;/pre&gt;&lt;br /&gt;
And thats about it. Take note to use &lt;strong&gt;SHA1.hashToBase64(String)&lt;/strong&gt; method to generate your password digest and be sure to always get the UTC time and thats about it.&lt;br /&gt;
&lt;br /&gt;
Happy integration!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-6764751889146700494?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W5yKPSmqIi_pcXq2sQ96TCP5mx4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W5yKPSmqIi_pcXq2sQ96TCP5mx4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W5yKPSmqIi_pcXq2sQ96TCP5mx4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W5yKPSmqIi_pcXq2sQ96TCP5mx4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/vfUZik9Nhb8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/6764751889146700494/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=6764751889146700494" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6764751889146700494?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6764751889146700494?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/vfUZik9Nhb8/interacting-with-wsse-services-from.html" title="Interacting with WSSE Services from Flex" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/12/interacting-with-wsse-services-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUEQX89cSp7ImA9Wx9TGEo.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-3321111001748900606</id><published>2010-11-27T17:43:00.000+01:00</published><updated>2010-11-27T17:43:20.169+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-27T17:43:20.169+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="devoxx" /><title>Devoxx 2010 Review</title><content type="html">&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Drago mi je da sam imao priliku da ove godine posetim Devoxx. Kartu za isti je obezbedio lokalni JUG &lt;a href="http://javasvet.rs/"&gt;JavaSvet&lt;/a&gt;&amp;nbsp;a ostatak troškova je pokrio &lt;a href="http://www.gecko.rs/"&gt;Gecko Solutions&lt;/a&gt;&amp;nbsp;(firma u kojoj radim).&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Poseta Devoxxu je bio pun pogodak i korisno je naći se među svim ljudima strogo zagriženih tehnoloških monstruma :)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Reportažu možete pogledati na stranici &lt;a href="http://javasvet.rs/sastanak/devoxx2010/index.html"&gt;java sveta&lt;/a&gt;. I ako vam se cela ova priča svidi, vidimo se sledeće godine! A obzirom na gužvu za sledeću će biti potrebno mnogo ranije nabaviti karte :(&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;... hmm this is in Serbian !? Well I am Serbian and it is a local JUG community.. but if you still want to read the Devoxx 2010 Review try the &lt;a href="http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=sr&amp;amp;tl=en&amp;amp;u=http://javasvet.rs/sastanak/devoxx2010/index.html"&gt;google translation of the article&lt;/a&gt;. It gives a very decent output. Great job google!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-3321111001748900606?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0MTo9PSOamjY_SgRGta7VQuDpvY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0MTo9PSOamjY_SgRGta7VQuDpvY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0MTo9PSOamjY_SgRGta7VQuDpvY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0MTo9PSOamjY_SgRGta7VQuDpvY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/RrgMukyiHlA" height="1" width="1"/&gt;</content><link rel="related" href="http://javasvet.rs/sastanak/devoxx2010/index.html" title="Devoxx 2010 Review" /><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/3321111001748900606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=3321111001748900606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3321111001748900606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3321111001748900606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/RrgMukyiHlA/devoxx-2010-review.html" title="Devoxx 2010 Review" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/11/devoxx-2010-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIMQn04fSp7ImA9Wx5aFEU.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-6800946901940911520</id><published>2010-11-11T16:16:00.000+01:00</published><updated>2010-11-11T16:16:23.335+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-11T16:16:23.335+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="centos" /><category scheme="http://www.blogger.com/atom/ns#" term="openssl" /><category scheme="http://www.blogger.com/atom/ns#" term="sni" /><category scheme="http://www.blogger.com/atom/ns#" term="httpd" /><title>Apache and NameBased SSL VHosts with SNI</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In my company we have one server which needs to server various sites with the ability to have different certificates. Since it has 1 public IP address this can only be achieved through using &lt;a href="http://www.google.com/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=SNI"&gt;SNI&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;SNI is available with &lt;a href="http://www.gnu.org/software/gnutls/"&gt;GNUTLS &lt;/a&gt;and with &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; starting from 0.9.8f.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Since this server is Centos 5.5 it doesn't come with the appropriate version of OpenSSL. In order to have this up and running best way to do it is to compile OpenSSL along with Apache httpd from the source.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Prior to doing anything it is important to uninstall devel packages:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&lt;i&gt;&lt;b&gt;yum remove {httpd,openssl}-devel&lt;/b&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Now download OpenSSL 1.0.0a (you can use different version, but I worked with this):&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;wget&amp;nbsp;http://www.openssl.org/source/openssl-1.0.0a.tar.gz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;tar xzvf&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;openssl-1.0.0a.tar.gz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;cd openssl-1.0.0a&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;./configure&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;make&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;make install&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This will install it to the /usr/local/ssl. Now copy openssl from /usr/local/ssl/bin/openssl to /usr/bin/openssl.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Download latest apache http server source&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;wget http://mirror.candidhosting.com/pub/apache//httpd/httpd-2.2.17.tar.gz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;tar xzvf&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;httpd-2.2.17.tar.gz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;cd&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;httpd-2.2.17&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;and now it is important to enable ssl and specify path to openssl in the configure script. I included almost all of the apache modules here except Ldap (I had problems compiling it, and since we don't use it here I decided to leave it out). You can always compile additional modules if you like.&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;./configure --enable-so --enable-ssl --with-ssl=/usr/local/ssl \&lt;br /&gt;
--enable-auth-anon \&lt;br /&gt;
--enable-auth-dbm \&lt;br /&gt;
--enable-auth-digest \&lt;br /&gt;
--enable-cache \&lt;br /&gt;
--enable-cern-meta \&lt;br /&gt;
--enable-charset-lite \&lt;br /&gt;
--enable-dav \&lt;br /&gt;
--enable-dav-fs \&lt;br /&gt;
--enable-deflate \&lt;br /&gt;
--enable-disk-cache \&lt;br /&gt;
--enable-expires \&lt;br /&gt;
--enable-ext-filter \&lt;br /&gt;
--enable-file-cache \&lt;br /&gt;
--enable-headers \&lt;br /&gt;
--enable-info \&lt;br /&gt;
--enable-logio \&lt;br /&gt;
--enable-mem-cache \&lt;br /&gt;
--enable-mime-magic \&lt;br /&gt;
--enable-isapi \&lt;br /&gt;
--enable-proxy \&lt;br /&gt;
--enable-proxy-connect \&lt;br /&gt;
--enable-proxy-ftp \&lt;br /&gt;
--enable-proxy-http \&lt;br /&gt;
--enable-rewrite \&lt;br /&gt;
--enable-speling \&lt;br /&gt;
--enable-unique-id \&lt;br /&gt;
--enable-usertrack \&lt;br /&gt;
--enable-vhost-alias&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;when this is finished run&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;make&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;make install&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This will put apache in the /usr/local/apache2 folder.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;And you are ready to go.. now you can generate certificates per Host Name and add them to your Virtual Hosts and it will work.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Apache has a guide following this topic as well:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI"&gt;http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;And here is great tutorial on OpenSSL usage:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.tc.umn.edu/~brams006/selfsign.html"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;http://www.tc.umn.edu/~brams006/selfsign.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Verdana, sans-serif;"&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/1404651776875741610-6800946901940911520?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YNX08VsUxS1mcUMdk5sgXfR_Gyo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YNX08VsUxS1mcUMdk5sgXfR_Gyo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YNX08VsUxS1mcUMdk5sgXfR_Gyo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YNX08VsUxS1mcUMdk5sgXfR_Gyo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/_MBYC5mdcf0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/6800946901940911520/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=6800946901940911520" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6800946901940911520?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6800946901940911520?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/_MBYC5mdcf0/apache-and-namebased-ssl-vhosts-with.html" title="Apache and NameBased SSL VHosts with SNI" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/11/apache-and-namebased-ssl-vhosts-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcAQnw8fyp7ImA9WxFbEEQ.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-1194532679278038600</id><published>2010-07-02T19:00:00.000+02:00</published><updated>2010-07-02T19:00:43.277+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-02T19:00:43.277+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wifi" /><title>Fujitsu Siemens Amilo Launch Manager and Windows 7 - enable Wireless</title><content type="html">For all of you that have Amilo laptops which don't have Launch Manager available for new Win 7 here is simple solution to run your wireless again!&lt;br /&gt;
I spent quite a time until finally managed to enable this card. I thought that enabling card just in bios will do the trick but cards have to be enabled from inside os as well and since Launch Manager will not work in default installation this will not work.&lt;br /&gt;
&lt;br /&gt;
And hopefully running Launch Manager in compatibility mode did the trick.&lt;br /&gt;
So steps are:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;go to &lt;a href="http://uk.ts.fujitsu.com/support/"&gt;fsc support page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;find your laptop and downlod launch manager for Windows XP&lt;/li&gt;
&lt;li&gt;extract it and then right click go to compatibility view and select run as "windows xp (service pack 2)" - didn't work for me with service pack 3&lt;/li&gt;
&lt;li&gt;enable "run as administrator" as well&lt;/li&gt;
&lt;li&gt;install it and reboot&lt;/li&gt;
&lt;li&gt;Voila! Press your launch key and it should work.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;This solution is probably the same for all other laptops with similar problems. So give it a try (don't trow away your old good buddies yet :)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&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/1404651776875741610-1194532679278038600?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ncUCK_jFgnwHBupveWHWa4kudm8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ncUCK_jFgnwHBupveWHWa4kudm8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ncUCK_jFgnwHBupveWHWa4kudm8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ncUCK_jFgnwHBupveWHWa4kudm8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/0SbU9L37s2I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/1194532679278038600/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=1194532679278038600" title="22 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1194532679278038600?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1194532679278038600?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/0SbU9L37s2I/fujitsu-siemens-amilo-launch-manager.html" title="Fujitsu Siemens Amilo Launch Manager and Windows 7 - enable Wireless" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>22</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/07/fujitsu-siemens-amilo-launch-manager.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04AQn4ycSp7ImA9WxFXE0U.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-6919391682496197288</id><published>2010-05-20T20:57:00.001+02:00</published><updated>2010-05-20T20:59:03.099+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-20T20:59:03.099+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="meego" /><category scheme="http://www.blogger.com/atom/ns#" term="nokia" /><category scheme="http://www.blogger.com/atom/ns#" term="qt" /><category scheme="http://www.blogger.com/atom/ns#" term="smarthphone" /><category scheme="http://www.blogger.com/atom/ns#" term="symbian" /><title>Is Nokia smart enough for the SmartPhone Wars</title><content type="html">Everybody is buzzing about it. It is among us. The SmartPhone Wars is getting huge day by day and it is not going to stop soon. Today we have&lt;a href="http://developer.apple.com/iphone/index.action"&gt; iPhoneOS&lt;/a&gt;, &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;, &lt;a href="http://na.blackberry.com/eng/developers/"&gt;RIM&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/windowsmobile/default.aspx"&gt;Windows Mobile&lt;/a&gt;, &lt;a href="http://www.bada.com/"&gt;Bada&lt;/a&gt;,&lt;a href="https://brewmobileplatform.qualcomm.com/devnet/index.jsp"&gt; Brew&lt;/a&gt;,&lt;a href="http://developer.symbian.org/"&gt; Symbian&lt;/a&gt; and &lt;a href="http://meego.com/developers"&gt;MeeGo &lt;/a&gt;and probably some that I left out.. Ohh man what a list!&lt;br /&gt;
&lt;br /&gt;
It is &lt;b&gt;great&lt;/b&gt; for the end users. They get all new features, a lot of cool and flashy buzzwords and services, a lot information to process and it augments every day. Beside this they get new UX patterns with almost each new smart OS out there so they are never bored. Ok maybe too much to process but this wars bring technology to the people. Smart phones are becoming cheaper by the day.&lt;br /&gt;
&lt;br /&gt;
And one more thing a lot of smart phone producers oriented mobile phones production as a fashion accessory. Thats very neat for producers since they are almost pushing people to buy new phone every season. No one wants to be sooooo yesterday and carry around phone produced 6 months ago!! :)&lt;br /&gt;
&lt;br /&gt;
But what is in there for 3rd party developers: huge amount of SDKs and APIs and then again ability to reuse the same idea on multiple platforms. Kinda hell for development and there is no notice of standardization in near future. So where to look what to do first.&lt;br /&gt;
&lt;br /&gt;
Certainly one good thing is to &lt;a href="http://www.google.com/trends?q=android,+iphone,+windows+mobile,+symbian,+rim&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0"&gt;follow trends&lt;/a&gt;. They can say a lot about current state but how to predict a future!? Well thats almost impossible but following blogs and watching out on marketing campaigns can help a lot. At the end some of this smart os platforms will go up. And right now I think that Nokia has that potential.&lt;br /&gt;
&lt;br /&gt;
Yeah they are the biggest company out there and being big makes some stuff going slow. But they are still number one in selling mobile phones. They can soon become a big number one with over 95% sell rate of regular phone (s40 devices). That is good.. keeps money coming in but you can not leave on old glory.&lt;br /&gt;
&lt;br /&gt;
With Smart Phones Nokia is kinda 3 years behind their competition. BUT there are some very smart moves this company is doing at this moment. They have 2 great products on the way:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;new version of Symbian os with multitouch support (&lt;a href="http://www.symbian.org/symbian-feature-set/symbian-releases/symbian3"&gt;Symbian^3&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://meego.com/"&gt;MeeGo &lt;/a&gt;(in partnership with Intel!)&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;And this 2 platforms are very smart. Symbian is a true embedded OS out there. It is build for devices with limited hardware and it can run on much cheaper hardware then any other smart OS out there while performing the same. Beside this battery life on symbian is much much longer then on full blown linux/unix adopted solutions for mobile platforms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Symbian is not that advanced and smooth compared to other platforms but with new release it will be. And it will be released in upcoming months. So it is practically here.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;And if you don't like Symbian there is full blown debian packed for mobile devices with a name MeeGo so you can do whatever you want without any limitations (geeky :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;What is great about this platforms? Nothing in specific but development environment is great.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;2 years ago Nokia acquired &lt;a href="http://qt.nokia.com/"&gt;QT framework&lt;/a&gt; and packed it up with mobility SDK. It is great C++ multiplatform development environment. You can easily port any application to any platform that you like (Windows, Linux, MacOS, and now Symbian and MeeGo). And as at seamed that they are falling by the day &amp;nbsp;by the pressure of other companies out there they were cooking some very neat stuff.&lt;br /&gt;
&lt;br /&gt;
QT is great refreshing SDK. Yeath it is C++ but you can call it C++ on steroids. And it is supporting Code once deploy everywhere policy which is here a huge range of devices!&lt;br /&gt;
Beside this Nokia released great IDE and a good set of productivity tools like &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/7557c13f-0b43-4805-85ce-8414bfbade57/Flowella.html"&gt;Flowella&lt;/a&gt;&amp;nbsp;(prototyping tool). Their Simulator is great. It is super fast and is a true simulator and not a full OS (like Android Simulator which is heavy and slow). It supports all cool events to simulate (as well for simulating some unexpected conditions, eg. battery going off, phone drops etc).&lt;br /&gt;
&lt;br /&gt;
So this cool developer tools can be found at&amp;nbsp;&lt;a href="http://qt.nokia.com/products/developer-tools"&gt;http://qt.nokia.com/products/developer-tools&lt;/a&gt;. Feel free to look around and to play with them. And if you like you can play with them while being competitive as well, just join &lt;a href="http://www.callingallinnovators.com/"&gt;Nokia competition.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And here is some official Nokia video:&lt;br /&gt;
&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/39D-a3OU1Nk&amp;hl=en_US&amp;fs=1&amp;rel=0"&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/39D-a3OU1Nk&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
And for the end I think that Nokia is on the right path now and poses some great potential. It certainly got my support!&lt;br /&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/1404651776875741610-6919391682496197288?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2HtivL9UGVyvNcaH_CKj9dgWb3A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2HtivL9UGVyvNcaH_CKj9dgWb3A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2HtivL9UGVyvNcaH_CKj9dgWb3A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2HtivL9UGVyvNcaH_CKj9dgWb3A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/ZwA1KoHcfqg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/6919391682496197288/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=6919391682496197288" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6919391682496197288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6919391682496197288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/ZwA1KoHcfqg/is-nokia-smart-enough-for-smartphone.html" title="Is Nokia smart enough for the SmartPhone Wars" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/05/is-nokia-smart-enough-for-smartphone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMGQnkyeyp7ImA9WxFSEUU.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-7340482214283498561</id><published>2010-04-13T21:37:00.000+02:00</published><updated>2010-04-13T21:37:03.793+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T21:37:03.793+02:00</app:edited><title>Why security is important and should we rethink one-time passwords</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Today I got mail from apache saying that their JIRA was attacked and its security mechanism breached using&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Cross-site_scripting" style="text-decoration: none;"&gt;cross site scripting (XSS) attack&lt;/a&gt;&amp;nbsp;which resulted in gaining all user data from the server hosting apache JIRA. Hopefully apache has a good policy of one-time password policy so this was not propagated to rest of their servers.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Original link:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="https://blogs.apache.org/infra/entry/apache_org_04_09_2010"&gt;https://blogs.apache.org/infra/entry/apache_org_04_09_2010&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="https://blogs.apache.org/infra/entry/apache_org_04_09_2010"&gt;&lt;/a&gt;&lt;/span&gt;Apache guys informed Atlassian of this security flaw but they didn't manage to react on time which resulted with breach in their own system:&amp;nbsp;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="http://blogs.atlassian.com/news/2010/04/oh_man_what_a_day_an_update_on_our_security_breach.html"&gt;http://blogs.atlassian.com/news/2010/04/oh_man_what_a_day_an_update_on_our_security_breach.html&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Bad news but this should be a good lesson learned for all of us and to think of security as much as possible and always question ourselves.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;And the last one consider having different passwords for all of your social services and specially for sensitive accounts!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', 'Lucida Grande', Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Oh yeah and great work for apache team on detecting and handling this.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&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/1404651776875741610-7340482214283498561?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/31O8OA2PV62XYoSdWO4X6ZD-o_I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/31O8OA2PV62XYoSdWO4X6ZD-o_I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/31O8OA2PV62XYoSdWO4X6ZD-o_I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/31O8OA2PV62XYoSdWO4X6ZD-o_I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/5PMAzHnPQM0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/7340482214283498561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=7340482214283498561" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/7340482214283498561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/7340482214283498561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/5PMAzHnPQM0/why-security-is-important-and-should-we.html" title="Why security is important and should we rethink one-time passwords" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/04/why-security-is-important-and-should-we.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcHQXs7eSp7ImA9WxFSEUU.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-1528070305170793504</id><published>2010-04-13T20:40:00.000+02:00</published><updated>2010-04-13T20:40:30.501+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T20:40:30.501+02:00</app:edited><title>Maven war plugin and non default webapp folder</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Yesterday I started mavenizing some old project (with a lot of messy legacy code that needs refactoring, but thats another story :) and it took me half an hour to figure one small thing that was in front of my eyes. Therefor I want to share this with you so you can note the same if you need it somewhere.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;It is common war project with a non default maven webapp folder. In order to fix this I configured war plugin to use a nonstandard webapp folder by using configuration element:&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333; font-size: 11px;"&gt;&lt;strong&gt;&lt;a href="http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#webappDirectory" style="color: #4477aa; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;webappDirectory&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;lt;build&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;plugins&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;plugin&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;2.1-beta-1&amp;lt;/version&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;configuration&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;webappDirectory&amp;gt;web&amp;lt;/webappDirectory&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/plugins&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/build&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;A&lt;span class="Apple-style-span" style="font-size: small;"&gt;nd this worked but I found out that I was getting .svn metadata copied to resulting war. This was very&amp;nbsp;awkward&amp;nbsp;for me so I tried to use packagingExcludes and making ignore list and then after about half an hour discovered that proper attribute should b&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;e&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 11px;"&gt;&lt;strong&gt;&lt;a href="http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#warSourceDirectory" style="color: #4477aa; text-decoration: none;"&gt;warSourceDirectory&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;and not&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;a href="http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#webappDirectory" style="color: #4477aa; text-decoration: none;"&gt;webappDirectory&lt;/a&gt;. &lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The later one is used to specify where webapp will finish and it is used to pack war file from there so I didn't notice my mistake at first.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;After changing to warSourceDirectory everything behaved normally and expected. Full reference of available options for war plugin are&amp;nbsp;available&amp;nbsp;at:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: black; font-weight: normal;"&gt;&lt;a href="http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #333333;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: black; font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hope that this post helped someone not to loose 30 minutes going into wrong direction :)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-1528070305170793504?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/emeL1XSuwob1XWfeb3ge4WVL0N8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/emeL1XSuwob1XWfeb3ge4WVL0N8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/emeL1XSuwob1XWfeb3ge4WVL0N8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/emeL1XSuwob1XWfeb3ge4WVL0N8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/13dY2ycowgE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/1528070305170793504/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=1528070305170793504" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1528070305170793504?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1528070305170793504?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/13dY2ycowgE/maven-war-plugin-and-non-default-webapp.html" title="Maven war plugin and non default webapp folder" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/04/maven-war-plugin-and-non-default-webapp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHQXg7fyp7ImA9WxBbFEU.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-4498505825172411513</id><published>2010-03-13T13:28:00.004+01:00</published><updated>2010-03-13T14:37:10.607+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-13T14:37:10.607+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flash builder" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><title>Eclipse - Flash Builder 4 Shortcuts</title><content type="html">Probably much of you power eclipse users know this already but I thought to revisit and write some command keyboard shortcuts that are very useful for me. Some of you may discover something that you were missing. Ok here we go.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CTR+3&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;easy navigate to all IDE features&lt;/li&gt;&lt;li&gt;you can type whatever you want eg ("Generate getters", "Toggle ASDoc Comments", "Whitespace", "Join lines" etc)&lt;/li&gt;&lt;li&gt;play around it and see that how cool this is&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+SHIFT+R&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Opens Resources (all files inside your projects can be found with this)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+SHIFT+T&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Opens Types &lt;/li&gt;&lt;li&gt;supports CamelCase (eg. you can type AB and this will find all classes which have AsomethingBsomething)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+O&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Quick Outline (gives you fast overview of the class with all of its members)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+ALT+H&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Open Hierarchy - easily see from where are your methods called&lt;/li&gt;&lt;li&gt;stop on a method name and play around&lt;/li&gt;&lt;li&gt;works inside Flex SDK as well!!!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+I&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Correct Indentation - select a portion or complete file and press CTRL+I&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+Q&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Go to last edit&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+E&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;List open editors&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+TAB, CTRL+SHIFT+TAB, CTRL+PgUp, CTRL+PgDn&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Shuffle through open editors&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;ALT+Up/Down, CTRL+ALT+Up/Down&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;move/copy line up or down&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+Up/Down&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Move editor up/down&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+D&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;delete current line&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;CTRL+ALT+R&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Refactor method or variable&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And at last to show all available keys at the moment press &lt;b&gt;CTRL+SHIFT+L.&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-4498505825172411513?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kMrIrOUa7zo_1JAF1KX1g0qALYo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kMrIrOUa7zo_1JAF1KX1g0qALYo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kMrIrOUa7zo_1JAF1KX1g0qALYo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kMrIrOUa7zo_1JAF1KX1g0qALYo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/3CCLIDespAo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/4498505825172411513/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=4498505825172411513" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4498505825172411513?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4498505825172411513?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/3CCLIDespAo/eclipse-flash-builder-4-shortcuts.html" title="Eclipse - Flash Builder 4 Shortcuts" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/03/eclipse-flash-builder-4-shortcuts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYGQno6cSp7ImA9WxBVFU8.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-7473247315581472997</id><published>2010-02-18T21:37:00.002+01:00</published><updated>2010-02-18T21:48:43.419+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-18T21:48:43.419+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="seo" /><category scheme="http://www.blogger.com/atom/ns#" term="sem" /><category scheme="http://www.blogger.com/atom/ns#" term="social networks" /><title>SEO/SEM presentation</title><content type="html">Recently I had a presentation on reveling the secrets behind SEO/SEM and what it has become today.&lt;br /&gt;&lt;br /&gt;In the presentation I take a look on the history of Search engine Marketing and move to concepts behind new media presentations and marketing as well as an overview on social media services.&lt;br /&gt;&lt;br /&gt;You can view and download this presentation at:&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_3220028"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/zilet/seosem-3220028" title="SEO/SEM"&gt;SEO/SEM&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seo-100218144100-phpapp01&amp;stripped_title=seosem-3220028" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seo-100218144100-phpapp01&amp;stripped_title=seosem-3220028" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/zilet"&gt;zilet&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-7473247315581472997?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EkVQdIftwrAmNDvnRtyBOwcD9TA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EkVQdIftwrAmNDvnRtyBOwcD9TA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EkVQdIftwrAmNDvnRtyBOwcD9TA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EkVQdIftwrAmNDvnRtyBOwcD9TA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/4IuT-bjedVw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/7473247315581472997/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=7473247315581472997" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/7473247315581472997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/7473247315581472997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/4IuT-bjedVw/seosem-presentation.html" title="SEO/SEM presentation" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/02/seosem-presentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YFQ347fCp7ImA9WxBVEk8.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-6107761431234359469</id><published>2010-02-15T08:50:00.004+01:00</published><updated>2010-02-15T09:05:12.004+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T09:05:12.004+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="air" /><title>AIR on Android, just around the corner</title><content type="html">Adobe announced this yesterday at World Mobile Congress 2010.&lt;br /&gt;Air for Android is expected later this year. It is optimized for mobile processors and from demos presented now shows astonish performance!&lt;br /&gt;&lt;br /&gt;And here is the video  presentation:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="256"&gt;&lt;param name="movie" value="http://tv.adobe.com/assets//swf/player.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="FlashVars" value="fileID=5135&amp;amp;context=76&amp;amp;embeded=true&amp;amp;environment=production"&gt;&lt;embed src="http://tv.adobe.com/assets//swf/player.swf" flashvars="fileID=5135&amp;amp;context=76&amp;amp;embeded=true&amp;amp;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Beside this Flash Player 10.1 was made available to content providers and mobile developers worldwide. It is expected to be released in the Q1 2010. Mobile platforms that will support the full Flash Player include Android, the BlackBerry® platform, Symbian® OS, Palm® webOS and Windows Mobile®.&lt;br /&gt;&lt;br /&gt;Now we just have to wait on Apple to loosen up and finally make an agreement with Adobe so we will have nice and beautiful flash available on apple mobile platforms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-6107761431234359469?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cIyol7ZUZxZkLSqor-_nq1SI27s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cIyol7ZUZxZkLSqor-_nq1SI27s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cIyol7ZUZxZkLSqor-_nq1SI27s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cIyol7ZUZxZkLSqor-_nq1SI27s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/oxuKHHUjQrs" height="1" width="1"/&gt;</content><link rel="related" href="http://blogs.adobe.com/flashplatform/2010/02/adobe_news_at_mobile_world_con.html" title="AIR on Android, just around the corner" /><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/6107761431234359469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=6107761431234359469" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6107761431234359469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6107761431234359469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/oxuKHHUjQrs/air-on-android-just-around-corner.html" title="AIR on Android, just around the corner" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2010/02/air-on-android-just-around-corner.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04HRHw5eSp7ImA9WxNUFEs.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-3990547355631365361</id><published>2009-11-05T23:34:00.004+01:00</published><updated>2009-11-05T23:58:55.221+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T23:58:55.221+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="logger" /><category scheme="http://www.blogger.com/atom/ns#" term="logging" /><title>Logging in Flex</title><content type="html">Server side developers have been used to use some Log4Something to provide application logging. &lt;br /&gt;&lt;br /&gt;Flex provides similar pattern to this but working a lot lately with various Flex developers they are not aware of it. All of them use trace() since it helps during debugging time but power of logging in production is avoided.&lt;br /&gt;&lt;br /&gt;If You have installed a debug version of Flash player (affects also Air running in ADL) you can configure logging by creating mm.cfg file in your %homepath% (on windows) or $home (on Linux).&lt;br /&gt;&lt;br /&gt;Sample mm.cfg file is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ErrorReportingEnable=1&lt;br /&gt;TraceOutputFileEnable=1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This will enable logging and will put the log stuff in %homepath%\Application Data\Macromedia\Flash Player\Logs\flashlog.txt.&lt;br /&gt;If You want to change the file to which Flex does the logging just add the &lt;span style="font-weight:bold;"&gt;TraceOutputFileName&lt;/span&gt; property to the mm.cfg which will point to the file on the file system. More configuration options are available on &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=logging_04.html"&gt;livedocs.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However there is a more convenient way to achieve this and a better pattern as well. This is to use the same pattern already present in all other logging frameworks.&lt;br /&gt;&lt;br /&gt;First step is to initialize logging on application startup:&lt;br /&gt;&lt;blockquote&gt;// Create a target.&lt;br /&gt;            var logTarget:TraceTarget = new TraceTarget();&lt;br /&gt;&lt;br /&gt;            // Log only messages for the classes in the mx.rpc.* and &lt;br /&gt;            // mx.messaging packages.&lt;br /&gt;            logTarget.filters=["mx.rpc.*","mx.messaging.*"];&lt;br /&gt;&lt;br /&gt;            // Log all log levels.&lt;br /&gt;            logTarget.level = LogEventLevel.ALL;&lt;br /&gt;&lt;br /&gt;            // Add date, time, category, and log level to the output.&lt;br /&gt;            logTarget.includeDate = true;&lt;br /&gt;            logTarget.includeTime = true;&lt;br /&gt;            logTarget.includeCategory = true;&lt;br /&gt;            logTarget.includeLevel = true;&lt;br /&gt;&lt;br /&gt;            // Begin logging.&lt;br /&gt;            Log.addTarget(logTarget);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This will create a default TraceTarget implementation which will in debug mode log to flashlog.txt if you have mm.cfg configured.&lt;br /&gt;&lt;br /&gt;And then in order to log:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;private static var logger:ILogger = Log.getLogger("com.test.logger.LogerSample");&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And then somewhere in the code just log in known way: logger.debug(), logger.info() etc.&lt;br /&gt;TraceTarget is not that useful for us but we can easily implement our own Targets and provide advanced loging features. &lt;a href="http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/air/logging/FileTarget.as?r=112"&gt;AS3CoreLib&lt;/a&gt; has FileTarget implemented which provides logging to file. It is easy to implement for instance WebServiceTarget, SocketTarget or similar.&lt;br /&gt;&lt;br /&gt;And one more thing for the ones used to pass the class instead of typing the string to Log.getLogger() You can implement a LogUtil class which will have a method like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;public static function getLogName (object:Object) : String {&lt;br /&gt;  if (object is Class) {&lt;br /&gt;    return getQualifiedClassName(object);&lt;br /&gt;  } else {&lt;br /&gt;    return object.toString();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now You can use a syntax like this to get logger:&lt;br /&gt;&lt;blockquote&gt;private static var logger:ILogger = Log.getLogger(LogerSample);&lt;/blockquote&gt;&lt;br /&gt;More on this topic can be read on &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=logging_09.html"&gt;logging livedocs.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-3990547355631365361?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m_n7POOBvrCjglXuKBGP1K9r1gw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m_n7POOBvrCjglXuKBGP1K9r1gw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m_n7POOBvrCjglXuKBGP1K9r1gw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m_n7POOBvrCjglXuKBGP1K9r1gw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/Z9Q8biwgz9o" height="1" width="1"/&gt;</content><link rel="related" href="http://livedocs.adobe.com/flex/3/html/help.html?content=logging_09.html" title="Logging in Flex" /><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/3990547355631365361/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=3990547355631365361" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3990547355631365361?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/3990547355631365361?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/Z9Q8biwgz9o/logging-in-flex.html" title="Logging in Flex" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/11/logging-in-flex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GRXY_cCp7ImA9WxNWFUk.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-841382485388271025</id><published>2009-10-14T19:33:00.002+02:00</published><updated>2009-10-14T19:37:04.848+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T19:37:04.848+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Jasper" /><title>Groove and JasperReports</title><content type="html">Yesterday I was trying out to the new iReport 3.6 to generate some reports. Everything went fine but on trying to run the report inside the app I've got:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This was pretty awkward since I didn't reference any of the groovy stuff inside the code nor in the reports.&lt;br /&gt;&lt;br /&gt;After opening the .jrxml source and comparing it with the older version that I had I noticed the language="groovy" attribute in the jreport element. &lt;br /&gt;&lt;br /&gt;I don't know how this got set there but seems that groovy is the default from now on. When I removed this and recompiled the report everything worked great.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-841382485388271025?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1KwKGYBPIRTc8Cq6M_RBU3yaG3s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1KwKGYBPIRTc8Cq6M_RBU3yaG3s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1KwKGYBPIRTc8Cq6M_RBU3yaG3s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1KwKGYBPIRTc8Cq6M_RBU3yaG3s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/vvmpNwL8Dw8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/841382485388271025/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=841382485388271025" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/841382485388271025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/841382485388271025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/vvmpNwL8Dw8/groove-and-jasperreports.html" title="Groove and JasperReports" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/10/groove-and-jasperreports.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYHSXw5eCp7ImA9WxJVEU0.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-9120721367535301053</id><published>2009-06-27T13:41:00.002+02:00</published><updated>2009-06-27T13:45:38.220+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T13:45:38.220+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tx-datasource" /><category scheme="http://www.blogger.com/atom/ns#" term="seam" /><title>Multiple Data sources and Seam</title><content type="html">If You are using multiple data sources with seam there is a big possibility that You will get to the problem of transaction propagation from one data source to another.&lt;br /&gt;&lt;br /&gt;With EJB it is easy since You can use REQUIRES_NEW transaction type on methods on other data source but since in Seam this is not present (for the reason I am not aware of) and if going to XA data sources is not an option than there is a simple solution that will work perfectly if You need just to read the data from one data source.&lt;br /&gt;&lt;br /&gt;Solution is to use the &lt;local-tx-datasource &gt; on the data source You need transactions on and to use &lt;no-tx-datasource &gt; for the data source from which You read data.&lt;br /&gt;&lt;br /&gt;If You require transactions on both data sources then XA is maybe the only way to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-9120721367535301053?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ATruJkPYebl9BcBGWkv-A7Q35ZU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ATruJkPYebl9BcBGWkv-A7Q35ZU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ATruJkPYebl9BcBGWkv-A7Q35ZU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ATruJkPYebl9BcBGWkv-A7Q35ZU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/k56PX5vbaGE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/9120721367535301053/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=9120721367535301053" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/9120721367535301053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/9120721367535301053?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/k56PX5vbaGE/multiple-data-sources-and-seam.html" title="Multiple Data sources and Seam" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/06/multiple-data-sources-and-seam.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMAQn4_fSp7ImA9WxJVEU0.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-1188596488457850776</id><published>2009-06-27T13:23:00.004+02:00</published><updated>2009-06-27T13:34:03.045+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T13:34:03.045+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="seam" /><title>Seam convertEntity and ValueNot valid solution</title><content type="html">There are a few things that You should note when using &lt;s:convertEntity /&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Be sure to keep one persistence context throught out the whole form&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implement equals and hashcode&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In equals method be sure not to compare against Class types since the objects are proxified and the classes doesn't comply if You compare it simple as &lt;span style="font-style:italic;"&gt;this.getClass().equals(other.getClass())&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In equals method be sure to always use getters if You are using JPA since the properties in proxy objects are not initialized if You access it directly. So always use: &lt;span style="font-style:italic;"&gt;this.getId().equals(other.getId())&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And thats about it. Happy converting :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-1188596488457850776?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uIuIFJ0EKediPnu9rsvmcbULJY4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uIuIFJ0EKediPnu9rsvmcbULJY4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uIuIFJ0EKediPnu9rsvmcbULJY4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uIuIFJ0EKediPnu9rsvmcbULJY4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/NEwRcDNpxBg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/1188596488457850776/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=1188596488457850776" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1188596488457850776?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1188596488457850776?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/NEwRcDNpxBg/seam-convertentity-adn-valuenot-valid.html" title="Seam convertEntity and ValueNot valid solution" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/06/seam-convertentity-adn-valuenot-valid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIHQXk7fSp7ImA9WxJXEU4.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-4908164518333337930</id><published>2009-06-04T18:33:00.002+02:00</published><updated>2009-06-04T18:38:50.705+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T18:38:50.705+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex builder" /><title>Export release with Non-embeded resources option</title><content type="html">In Flex Builder even if this option is checked it can happen that You don't get all the assets copied after after all!!&lt;br /&gt;&lt;br /&gt;The solution is to copy the assets manually to the bin-release folder and do the export again and voila!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-4908164518333337930?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3PIMZmEiYyPgsr5qxx2nMP0E7zc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3PIMZmEiYyPgsr5qxx2nMP0E7zc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3PIMZmEiYyPgsr5qxx2nMP0E7zc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3PIMZmEiYyPgsr5qxx2nMP0E7zc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/ssbcqbyGfjc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/4908164518333337930/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=4908164518333337930" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4908164518333337930?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4908164518333337930?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/ssbcqbyGfjc/export-release-with-non-embeded.html" title="Export release with Non-embeded resources option" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/06/export-release-with-non-embeded.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkABQHo6eSp7ImA9WxJQGEU.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-1105171085483380427</id><published>2009-06-01T22:30:00.002+02:00</published><updated>2009-06-01T22:39:11.411+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-01T22:39:11.411+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><title>Flash Builder 4 is out!</title><content type="html">Well still in beta release but there are a lot of features presented. Flash builder 4 brings a lot of features already present in the Java world for Eclipse, so there are outline, library grouping, generate getters and setters, some way of code formatting (yes with indentation correction!), generators for the event handlers (the most tiring thing before) and great designer improvements provided with the usage of Flash Catalyst (&lt;a href="http://labs.adobe.com/technologies/flashcatalyst/"&gt;http://labs.adobe.com/technologies/flashcatalyst/&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;So be sure to check it out and follow on the demonstration videos available on &lt;a href="http://labs.adobe.com/technologies/flash/videos/"&gt;http://labs.adobe.com/technologies/flash/videos/&lt;/a&gt; to get you started.&lt;br /&gt;&lt;br /&gt;And of course download the Flash Builder 4 and simply start using it :) and enjoy the new features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-1105171085483380427?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/53bEXgHYPXnAPZWgNxeiWZiSn-8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/53bEXgHYPXnAPZWgNxeiWZiSn-8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/53bEXgHYPXnAPZWgNxeiWZiSn-8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/53bEXgHYPXnAPZWgNxeiWZiSn-8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/yMwS5Z4RGmI" height="1" width="1"/&gt;</content><link rel="related" href="http://labs.adobe.com/wiki/index.php/Flash_Builder_4:Release_Notes" title="Flash Builder 4 is out!" /><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/1105171085483380427/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=1105171085483380427" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1105171085483380427?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1105171085483380427?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/yMwS5Z4RGmI/flash-builder-4-is-out.html" title="Flash Builder 4 is out!" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/06/flash-builder-4-is-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMCQHw8fCp7ImA9WxJQE0s.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-1836031870782041233</id><published>2009-05-26T20:38:00.002+02:00</published><updated>2009-05-26T20:44:21.274+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T20:44:21.274+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><title>Caution when overriding data setter method in Flex</title><content type="html">Recently I was presented with a TileList control which was not rearranging properly and seems like it was loosing the items while being resized. &lt;br /&gt;Looking around through the itemrenderer implementation I saw that there is overriden data setter method.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;override public function set data(value:Object):void {&lt;br /&gt;            if (value != null) {&lt;br /&gt;               user= value as User;&lt;br /&gt;            }&lt;br /&gt;         }&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is &lt;span style="font-weight:bold;"&gt;wrong&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;This was also the cause of all the problems that were there with the TileList not being able to render properly its data. It is very important to call the &lt;span style="font-weight:bold;"&gt;super.data&lt;/span&gt; setter when overriding this method.&lt;br /&gt;This method dispatched Flex Data change event and invalidated display list so it allows component to propertly rerender itself.&lt;br /&gt;&lt;br /&gt;The correct override should look like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;override public function set data(value:Object):void {&lt;br /&gt;        super.data = value;    &lt;br /&gt;        if (value != null) {&lt;br /&gt;               user= value as User;&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-1836031870782041233?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nrBt_udOo4w7GLPXMc8Qeim-lsY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrBt_udOo4w7GLPXMc8Qeim-lsY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nrBt_udOo4w7GLPXMc8Qeim-lsY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrBt_udOo4w7GLPXMc8Qeim-lsY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/u5_HD9hqfhI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/1836031870782041233/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=1836031870782041233" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1836031870782041233?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/1836031870782041233?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/u5_HD9hqfhI/caution-when-overriding-data-setter.html" title="Caution when overriding data setter method in Flex" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/05/caution-when-overriding-data-setter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDRH85fyp7ImA9WxVUFE0.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-6293895817290006541</id><published>2009-03-18T19:35:00.002+01:00</published><updated>2009-03-18T19:37:55.127+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T19:37:55.127+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="air" /><title>One more way for AIR not to render flash inside HTML component</title><content type="html">If you want to put your application in FULL_SCREEN_INTERACTIVE You can expect not to have flash rendered.&lt;br /&gt;&lt;br /&gt;One way to have flash rendered is to use current screen resolution and set the size on your application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-6293895817290006541?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CWc1Mjt3Nu6YOOsP0kFWup6ii_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CWc1Mjt3Nu6YOOsP0kFWup6ii_Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CWc1Mjt3Nu6YOOsP0kFWup6ii_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CWc1Mjt3Nu6YOOsP0kFWup6ii_Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/7bXcUqIoSI4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/6293895817290006541/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=6293895817290006541" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6293895817290006541?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/6293895817290006541?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/7bXcUqIoSI4/one-more-way-for-air-not-to-render.html" title="One more way for AIR not to render flash inside HTML component" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/03/one-more-way-for-air-not-to-render.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcFQ306fSp7ImA9WxVVEE4.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-4279080295765814342</id><published>2009-03-02T22:30:00.003+01:00</published><updated>2009-03-02T22:40:12.315+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-02T22:40:12.315+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="air" /><title>AIR HTML component and Flash content</title><content type="html">HTML component in Air is really useful, but when you want to put it in a semi transparent container or want to rotate it then there is a problem flash and pdf content won't render any more.&lt;br /&gt;So if you want to see the flash in html component you shouldn't:&lt;br /&gt; - change alpha to html component or to its container&lt;br /&gt; - change scaling to something other than 1.0&lt;br /&gt; - rotate it or the container holding the component&lt;br /&gt; - set to the windowed application to be chromeless and transparent.&lt;br /&gt;&lt;br /&gt;So if you for instance have an inner window which is semitransparent and want to display html content inside it you should not put the html component inside that window but put it in the main window which is not transparent and position it over the transparent part of the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-4279080295765814342?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QZhsvDrK1f4HvD8S9oa9YRarOeE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZhsvDrK1f4HvD8S9oa9YRarOeE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QZhsvDrK1f4HvD8S9oa9YRarOeE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZhsvDrK1f4HvD8S9oa9YRarOeE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/UJP-tgSCBB8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/4279080295765814342/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=4279080295765814342" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4279080295765814342?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/4279080295765814342?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/UJP-tgSCBB8/air-html-component-and-flash-content.html" title="AIR HTML component and Flash content" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.miloszikic.com/2009/03/air-html-component-and-flash-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08GRng-fSp7ImA9WxdTGU8.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-5258286422881906109</id><published>2008-05-16T10:07:00.002+02:00</published><updated>2008-05-16T10:17:07.655+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-16T10:17:07.655+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="flash player 10" /><title>Flash player 10 is almost ready</title><content type="html">Flash player 10 prerelease on &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe Labs&lt;/a&gt; is ready for download with astonishing new features.&lt;br /&gt;&lt;br /&gt;New key features include:&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Natide 3D effects&lt;/span&gt; - Easily transform and animate any display object through 3D space while retaining full interactivity. Also a support for shaders!&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Custom Filters and Effects&lt;/span&gt; - with a help of &lt;a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit"&gt;Adobe Pixel bender&lt;/a&gt;&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Advanced Text Layout&lt;/span&gt;&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Enhanced Drawing API&lt;/span&gt;&lt;br /&gt; - &lt;span style="font-weight:bold;"&gt;Visual Performance Improvements&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can read more and see some previews and demos on &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe's Lab site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also if you want to compile your projects with Flex SDK 3.x.x targeting new flash player there is a howto &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10+Beta+with+Flex+SDK+3.0.x"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-5258286422881906109?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Fghixpmc_xtlAGSiFuVeUHUGS7I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fghixpmc_xtlAGSiFuVeUHUGS7I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Fghixpmc_xtlAGSiFuVeUHUGS7I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fghixpmc_xtlAGSiFuVeUHUGS7I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/T3vhLeyyskA" height="1" width="1"/&gt;</content><link rel="related" href="http://labs.adobe.com/technologies/flashplayer10/" title="Flash player 10 is almost ready" /><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/5258286422881906109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=5258286422881906109" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5258286422881906109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5258286422881906109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/T3vhLeyyskA/flash-player-10-is-almost-ready.html" title="Flash player 10 is almost ready" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.miloszikic.com/2008/05/flash-player-10-is-almost-ready.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEFQHg9eSp7ImA9WxdTGEo.&quot;"><id>tag:blogger.com,1999:blog-1404651776875741610.post-5667494389781961781</id><published>2008-05-15T19:19:00.003+02:00</published><updated>2008-05-15T19:30:11.661+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-15T19:30:11.661+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="itemrenderer" /><category scheme="http://www.blogger.com/atom/ns#" term="flex" /><category scheme="http://www.blogger.com/atom/ns#" term="tilelist" /><title>Flex : Display hand cursor on buttons inside a container</title><content type="html">I recently had a requirement to make an ItemRenderer for a TileList and I encountered a problem with showing hand cursor for buttons inside ItemRenderer. After a bit of digging through documentation I solved the problem.&lt;br /&gt;&lt;br /&gt;The solution was to set &lt;span style="font-weight:bold;"&gt;buttonMode="true"&lt;/span&gt; property on my button. &lt;br /&gt;&lt;br /&gt;There are 2 more properties that might be required &lt;span style="font-style:italic;"&gt;useHandCursor &lt;/span&gt;and &lt;span style="font-style:italic;"&gt;mouseChildren&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Here is an extract from Adobe livedocs:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Sprite.html#buttonMode"&gt;buttonMode&lt;/a&gt;&lt;br /&gt; Specifies the button mode of this sprite. If true, this sprite behaves as a button, which means that it triggers the display of the hand cursor when the mouse passes over the sprite and can receive a click event if the enter or space keys are pressed when the sprite has focus. You can suppress the display of the hand cursor by setting the useHandCursor property to false, in which case the pointer is displayed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Sprite.html#useHandCursor"&gt;useHandCursor&lt;/a&gt;&lt;br /&gt; A Boolean value that indicates whether the pointing hand (hand cursor) appears when the mouse rolls over a sprite in which the buttonMode property is set to true. The default value of the useHandCursor property is true. If useHandCursor is set to true, the pointing hand used for buttons appears when the mouse rolls over a button sprite. If useHandCursor is false, the arrow pointer is used instead.&lt;br /&gt;&lt;br /&gt;You can change the useHandCursor property at any time; the modified sprite immediately takes on the new cursor appearance. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObjectContainer.html#mouseChildren"&gt;mouseChildren&lt;/a&gt;&lt;br /&gt; Determines whether or not the children of the object are mouse enabled. If an object is mouse enabled, a user can interact with it by using a mouse. The default is true.&lt;br /&gt;&lt;br /&gt;This property is useful when you create a button with an instance of the Sprite class (instead of using the SimpleButton class). When you use a Sprite instance to create a button, you can choose to decorate the button by using the addChild() method to add additional Sprite instances. This process can cause unexpected behavior with mouse events because the Sprite instances you add as children can become the target object of a mouse event when you expect the parent instance to be the target object. To ensure that the parent instance serves as the target objects for mouse events, you can set the mouseChildren property of the parent instance to false.&lt;br /&gt;&lt;br /&gt;No event is dispatched by setting this property. You must use the addEventListener() method to create interactive functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1404651776875741610-5667494389781961781?l=blog.miloszikic.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/daAdS91qT9ZiNiQb2BqHNHDLDQ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/daAdS91qT9ZiNiQb2BqHNHDLDQ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/daAdS91qT9ZiNiQb2BqHNHDLDQ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/daAdS91qT9ZiNiQb2BqHNHDLDQ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ZiletovBlog/~4/YK3pc_6Y89s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.miloszikic.com/feeds/5667494389781961781/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1404651776875741610&amp;postID=5667494389781961781" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5667494389781961781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1404651776875741610/posts/default/5667494389781961781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZiletovBlog/~3/YK3pc_6Y89s/flex-display-hand-cursor-on-buttons.html" title="Flex : Display hand cursor on buttons inside a container" /><author><name>Miloš Žikić</name><uri>http://www.blogger.com/profile/10466148175449405984</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-AjA3jVeNgG0/Txh9FJJP-mI/AAAAAAAACZQ/rs8_LUy8vpg/s1600/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.miloszikic.com/2008/05/flex-display-hand-cursor-on-buttons.html</feedburner:origLink></entry></feed>

