<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6051663807179582834</id><updated>2012-01-23T10:55:30.689-08:00</updated><category term='Adobe AIR'/><category term='solaris'/><category term='Ext js'/><title type='text'>Kubuskus</title><subtitle type='html'>Nothing happen if we stands still</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6051663807179582834.post-6920685905829123213</id><published>2009-01-11T14:24:00.000-08:00</published><updated>2009-01-11T14:52:17.785-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ext js'/><title type='text'>Some of ExtJS VTypes</title><content type='html'>Some of ExtJS VTypes from &lt;a href="http://extjs.com/forum/showthread.php?t=4271"&gt;Ext JS Forum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="javascript"&gt;&lt;br /&gt;Ext.form.VTypes["hostnameVal1"] = /^[a-zA-Z][-.a-zA-Z0-9]{0,254}$/;&lt;br /&gt;Ext.form.VTypes["hostnameVal2"] = /^[a-zA-Z]([-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}([.][a-zA-Z]([-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}){0,}$/;&lt;br /&gt;Ext.form.VTypes["ipVal"] = /^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-4])$/;&lt;br /&gt;Ext.form.VTypes["netmaskVal"] = /(^(128|192|224|24[08]|25[245])\.0\.0\.0$)|(^255\.(0|128|192|224|24[08]|25[245])\.0\.0$)|(^255\.255\.(0|128|192|224|24[08]|25[245])\.0$)|(^255\.255\.255\.(0|128|192|224|24[08]|252)$)/;&lt;br /&gt;Ext.form.VTypes["portVal"] = /^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;&lt;br /&gt;Ext.form.VTypes["multicastVal"] = /^((22[5-9]|23[0-9])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3})|(224[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2})|(224[.]0[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])))$/;&lt;br /&gt;Ext.form.VTypes["usernameVal"] = /^[a-zA-Z][-_.a-zA-Z0-9]{0,30}$/;&lt;br /&gt;Ext.form.VTypes["passwordVal1"] = /^.{6,31}$/;&lt;br /&gt;Ext.form.VTypes["passwordVal2"] = /[^a-zA-Z].*[^a-zA-Z]/;&lt;br /&gt;Ext.form.VTypes["hostname"]=function(v){&lt;br /&gt; if(!Ext.form.VTypes["hostnameVal1"].test(v)){&lt;br /&gt;  Ext.form.VTypes["hostnameText"]="Must begin with a letter and not exceed 255 characters"&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; Ext.form.VTypes["hostnameText"]="L[.L][.L][.L][...] where L begins with a letter, ends with a letter or number, and does not exceed 63 characters";&lt;br /&gt; return Ext.form.VTypes["hostnameVal2"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["hostnameText"]="Invalid Hostname"&lt;br /&gt;Ext.form.VTypes["hostnameMask"]=/[-.a-zA-Z0-9]/;&lt;br /&gt;Ext.form.VTypes["ip"]=function(v){&lt;br /&gt; return Ext.form.VTypes["ipVal"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["ipText"]="1.0.0.1 - 223.255.255.254 excluding 127.x.x.x"&lt;br /&gt;Ext.form.VTypes["ipMask"]=/[.0-9]/;&lt;br /&gt;Ext.form.VTypes["netmask"]=function(v){&lt;br /&gt; return Ext.form.VTypes["netmaskVal"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["netmaskText"]="128.0.0.0 - 255.255.255.252"&lt;br /&gt;Ext.form.VTypes["netmaskMask"]=/[.0-9]/;&lt;br /&gt;Ext.form.VTypes["port"]=function(v){&lt;br /&gt; return Ext.form.VTypes["portVal"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["portText"]="0 - 65535"&lt;br /&gt;Ext.form.VTypes["portMask"]=/[0-9]/;&lt;br /&gt;Ext.form.VTypes["multicast"]=function(v){&lt;br /&gt; return Ext.form.VTypes["multicastVal"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["multicastText"]="224.0.1.0 - 239.255.255.255"&lt;br /&gt;Ext.form.VTypes["multicastMask"]=/[.0-9]/;&lt;br /&gt;Ext.form.VTypes["username"]=function(v){&lt;br /&gt; return Ext.form.VTypes["usernameVal"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["usernameText"]="Username must begin with a letter and cannot exceed 255 characters"&lt;br /&gt;Ext.form.VTypes["usernameMask"]=/[-_.a-zA-Z0-9]/;&lt;br /&gt;Ext.form.VTypes["password"]=function(v){&lt;br /&gt; if(!Ext.form.VTypes["passwordVal1"].test(v)){&lt;br /&gt;  Ext.form.VTypes["passwordText"]="Password length must be 6 to 31 characters long";&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; Ext.form.VTypes["passwordText"]="Password must include atleast 2 numbers or symbols";&lt;br /&gt; return Ext.form.VTypes["passwordVal2"].test(v);&lt;br /&gt;}&lt;br /&gt;Ext.form.VTypes["passwordText"]="Invalid Password"&lt;br /&gt;Ext.form.VTypes["passwordMask"]=/./;&lt;br /&gt;&lt;br /&gt;Ext.form.VTypes["phone"] = /^(\d{3}[-]?){1,2}(\d{4})$/;&lt;br /&gt;Ext.form.VTypes["phoneMask"] = /[\d-]/;&lt;br /&gt;Ext.form.VTypes["phoneText"] = 'Not a valid phone number.  Must be in the format 123-4567 or 123-456-7890 (dashes optional)';&lt;br /&gt;&lt;br /&gt;Ext.form.VTypes["phoneVal"] = /^(d{3}[-]?){1,2}(d{4})$/; Ext.form.VTypes["phoneMask"] = /[d-]/;&lt;br /&gt;Ext.form.VTypes["phoneText"] = 'Not a valid phone number. Must be in the format 123-4567 or 123-456-7890 (dashes optional)';&lt;br /&gt;&lt;br /&gt;Ext.form.VTypes["phone"]=function(v){ return Ext.form.VTypes["phoneVal"].test(v); }&lt;br /&gt;&lt;br /&gt;Ext.form.VTypes["dollar"] = /^[\$]?[\d]*(.[\d]{2})?$/;&lt;br /&gt;Ext.form.VTypes["dollarMask"] = /[\d\$.]/;&lt;br /&gt;Ext.form.VTypes["dollarText"] = 'Not a valid dollar amount.  Must be in the format "$123.45" ($ symbol and cents optional).';&lt;br /&gt;&lt;br /&gt;Ext.form.VTypes["time"] = /^([1-9]|1[0-9]):([0-5][0-9])(\s[a|p]m)$/i;&lt;br /&gt;Ext.form.VTypes["timeMask"] = /[\d\s:amp]/i;&lt;br /&gt;Ext.form.VTypes["timeText"] = 'Not a valid time.  Must be in the format "12:34 PM".';&lt;br /&gt;&lt;br /&gt;Ext.apply(Ext.form.VTypes, &lt;br /&gt;    {'phone': function()&lt;br /&gt;        {&lt;br /&gt;            var re = /^(d{3}[-]?){1,2}(d{4})$/;&lt;br /&gt;            return function(v) {&lt;br /&gt;                    return re.test(v);&lt;br /&gt;                }&lt;br /&gt;        }(), &lt;br /&gt;        'phoneText' : 'The format is wrong, ie: 123-456-7890 (dashes optional)'&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Ext.apply(Ext.form.VTypes, {&lt;br /&gt;    'date': function(){&lt;br /&gt;        /************************************************&lt;br /&gt;        DESCRIPTION: Validates that a string contains only&lt;br /&gt;            valid dates with 2 digit month, 2 digit day,&lt;br /&gt;            4 digit year. Date separator can be ., -, or /.&lt;br /&gt;            Uses combination of regular expressions and&lt;br /&gt;            string parsing to validate date.&lt;br /&gt;            Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy&lt;br /&gt;&lt;br /&gt;        PARAMETERS:&lt;br /&gt;           strValue - String to be tested for validity&lt;br /&gt;&lt;br /&gt;        RETURNS:&lt;br /&gt;           True if valid, otherwise false.&lt;br /&gt;&lt;br /&gt;        REMARKS:&lt;br /&gt;           Avoids some of the limitations of the Date.parse()&lt;br /&gt;           method such as the date separator character.&lt;br /&gt;        *************************************************/&lt;br /&gt;          var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;&lt;br /&gt;          return function(strValue){&lt;br /&gt;              //check to see if in correct format&lt;br /&gt;              if(!objRegExp.test(strValue))&lt;br /&gt;                return false; //doesn't match pattern, bad date&lt;br /&gt;              else{&lt;br /&gt;                var strSeparator = strValue.substring(2,3) &lt;br /&gt;                var arrayDate = strValue.split(strSeparator); &lt;br /&gt;                //create a lookup for months not equal to Feb.&lt;br /&gt;                var arrayLookup = { '01' : 31,'03' : 31, &lt;br /&gt;                                    '04' : 30,'05' : 31,&lt;br /&gt;                                    '06' : 30,'07' : 31,&lt;br /&gt;                                    '08' : 31,'09' : 30,&lt;br /&gt;                                    '10' : 31,'11' : 30,'12' : 31}&lt;br /&gt;                var intDay = parseInt(arrayDate[1],10); &lt;br /&gt;&lt;br /&gt;                //check if month value and day value agree&lt;br /&gt;                if(arrayLookup[arrayDate[0]] != null) {&lt;br /&gt;                  if(intDay &lt;= arrayLookup[arrayDate[0]] &amp;&amp; intDay != 0)&lt;br /&gt;                    return true; //found in lookup table, good date&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                //check for February (bugfix 20050322)&lt;br /&gt;                //bugfix  for parseInt kevin&lt;br /&gt;                //bugfix  biss year  O.Jp Voutat&lt;br /&gt;                var intMonth = parseInt(arrayDate[0],10);&lt;br /&gt;                if (intMonth == 2) { &lt;br /&gt;                   var intYear = parseInt(arrayDate[2]);&lt;br /&gt;                   if (intDay &gt; 0 &amp;&amp; intDay &lt; 29) {&lt;br /&gt;                       return true;&lt;br /&gt;                   }&lt;br /&gt;                   else if (intDay == 29) {&lt;br /&gt;                     if ((intYear % 4 == 0) &amp;&amp; (intYear % 100 != 0) || &lt;br /&gt;                         (intYear % 400 == 0)) {&lt;br /&gt;                          // year div by 4 and ((not div by 100) or div by 400) -&gt;ok&lt;br /&gt;                         return true;&lt;br /&gt;                     }   &lt;br /&gt;                   }&lt;br /&gt;                }&lt;br /&gt;              }  &lt;br /&gt;              return false; //any other values, bad date&lt;br /&gt;        }&lt;br /&gt;    }(),&lt;br /&gt;    'dateText' : 'The format is wrong, ie: 01/01/2007 | 01.01.2007 | 01-01-2007'&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;//** Number ex. 12.00 or 23.00 or 22.30 **//&lt;br /&gt;Ext.apply(Ext.form.VTypes, {&lt;br /&gt;    'numeric': function(){&lt;br /&gt;        &lt;br /&gt;            /*****************************************************************&lt;br /&gt;            DESCRIPTION: Validates that a string contains only valid numbers.&lt;br /&gt;            PARAMETERS:&lt;br /&gt;               strValue - String to be tested for validity&lt;br /&gt;            RETURNS:&lt;br /&gt;               True if valid, otherwise false.&lt;br /&gt;            ******************************************************************/&lt;br /&gt;              var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;&lt;br /&gt;              return function(strValue){&lt;br /&gt;                  //check for numeric characters&lt;br /&gt;                  return objRegExp.test(strValue);&lt;br /&gt;              }&lt;br /&gt;    }(),&lt;br /&gt;    'numericText': 'Only numbers are allowed'&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;/* Matches Win and Mac OS paths: x:\foo\bar\, \\foo\bar\, /foo/bar/ */&lt;br /&gt;Ext.form.VTypes["directory"]=function(v){&lt;br /&gt; return /^(([a-zA-Z]:){0,1}(\\|\/){1})(([-_.a-zA-Z0-9\\\/ ]+)(\\|\/){1})+$/.test(v);&lt;br /&gt;} &lt;br /&gt;Ext.form.VTypes["directoryText"]="This must be a valid directory location."&lt;br /&gt;Ext.form.VTypes["directoryMask"]=/[-_.a-zA-Z0-9\\\/: ]/;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ext.apply(Ext.form.VTypes, {&lt;br /&gt;    'ssn': function(){&lt;br /&gt;            var re = /^([0-6]\d{2}|7[0-6]\d|77[0-2])([ \-]?)(\d{2})\2(\d{4})$/;&lt;br /&gt;            return function(v){&lt;br /&gt;                return re.test(v);&lt;br /&gt;            }&lt;br /&gt;    }(),&lt;br /&gt;    'ssnText' : 'SSN format: xxx-xx-xxxx'&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Ext.apply(Ext.form.VTypes, {&lt;br /&gt;    'imagefile': function(){&lt;br /&gt;        return function(v){&lt;br /&gt;            v = v.replace(/^\s|\s$/g, ""); //trims string&lt;br /&gt;            if (v.match(/([^\/\\]+)\.(bmp|gif|png|jpg|jpeg)$/i) )&lt;br /&gt;                return true;&lt;br /&gt;            else&lt;br /&gt;                return false;&lt;br /&gt;        }&lt;br /&gt;    }(),&lt;br /&gt;    'imagefileText' : 'Must be a valid image file: GIF, JPG, BMP, PNG'&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thanks for advanced.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6051663807179582834-6920685905829123213?l=kubuskus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/6920685905829123213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6051663807179582834&amp;postID=6920685905829123213' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/6920685905829123213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/6920685905829123213'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/2009/01/some-of-extjs-vtypes.html' title='Some of ExtJS VTypes'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6051663807179582834.post-7631857431122284145</id><published>2008-04-09T19:23:00.001-07:00</published><updated>2008-04-09T19:23:50.535-07:00</updated><title type='text'>Handy tools from Mr. Google</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Here are useful tools from google that i allways use :&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://translate.google.com/translate_t?hl=en'&gt;Google Translate&lt;/a&gt;  : Used to translate text or a web page, currently available languages are Arabic, Chinese, Dutch, French, German, Greek, Italian, Japanese, Korean, Portugese, Rusian, Spanish.&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6051663807179582834-7631857431122284145?l=kubuskus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/7631857431122284145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6051663807179582834&amp;postID=7631857431122284145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/7631857431122284145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/7631857431122284145'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/2008/04/handy-tools-from-mr-google.html' title='Handy tools from Mr. Google'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6051663807179582834.post-5474951144284494040</id><published>2008-02-26T21:13:00.000-08:00</published><updated>2008-02-26T22:08:49.015-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe AIR'/><title type='text'>Do ScriptTagProxy with AIR</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.adobe.com/products/air/images/air_ajax_developers.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 237px; height: 49px;" src="http://www.adobe.com/products/air/images/air_ajax_developers.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With AIR Beta 3 you cannot do XHR to remote domain, so you have to create new html file as root file then you call your real index file using &amp;lt;iframe&gt; tag.&lt;br /&gt;&lt;br /&gt;Set &lt;span style="font-weight: bold; font-style: italic;"&gt;allowcrossdomainXMLHttpRequest&lt;/span&gt; and &lt;span style="font-weight: bold; font-style: italic;"&gt;allowcrossDomainxhr&lt;/span&gt; parameter to true , then set your remote domain to &lt;span style="font-weight: bold; font-style: italic;"&gt;sandboxRoot&lt;/span&gt; parameter, and dont forget to add &lt;span style="font-weight: bold; font-style: italic;"&gt;src&lt;/span&gt; parameter and point to your index file.&lt;br /&gt;&lt;br /&gt;If AIR application looks bad, just modified using &lt;span style="font-style: italic;"&gt;style&lt;/span&gt; code bellow:&lt;br /&gt;&lt;div&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt; &amp;lt;style&gt;&lt;br /&gt;  body {margin:0px; padding:3px}&lt;br /&gt;  iframe {border:0px; width:603px; height:270px;}&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;  &amp;lt;iframe id="UI"&lt;br /&gt;    src="wsclient.html"&lt;br /&gt;    allowcrossdomainXMLHttpRequest="true"&lt;br /&gt;    allowcrossDomainxhr="true"&lt;br /&gt;    sandboxRoot="http://http://example.com/test_folder/"&lt;br /&gt;    documentRoot="app:/"&lt;br /&gt;  &amp;lt;/iframe&gt;&lt;br /&gt;&lt;/pre&gt;Hope its help...lets go XHR&lt;br /&gt;Agus Sudarmanto.&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/6051663807179582834-5474951144284494040?l=kubuskus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/5474951144284494040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6051663807179582834&amp;postID=5474951144284494040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/5474951144284494040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/5474951144284494040'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/2008/02/do-scripttagproxy-with-air.html' title='Do ScriptTagProxy with AIR'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6051663807179582834.post-5398702591312228990</id><published>2008-02-26T19:45:00.000-08:00</published><updated>2008-12-10T18:05:04.254-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ext js'/><title type='text'>ScriptTagProxy invalid label solution</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xPO5oA4vvv8/R8TiBIksLEI/AAAAAAAAACk/62gTPZ7GiuQ/s1600-h/extjs.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_xPO5oA4vvv8/R8TiBIksLEI/AAAAAAAAACk/62gTPZ7GiuQ/s320/extjs.png" alt="" id="BLOGGER_PHOTO_ID_5171506781237292098" border="0" /&gt;&lt;/a&gt;&lt;a href="http://extjs.com/"&gt;ExtJS.com&lt;/a&gt;&lt;br /&gt;If you have problems when you want to fill ExtJS grid to get data from remote domain may be you will get error that says '&lt;span style="font-weight: bold;"&gt;invalid label&lt;/span&gt;' because it should be a javascript content not JSON content and the script should call the callback function was declare in the URL.&lt;br /&gt;&lt;br /&gt;Based on Ext ScriptTagProxy documentation here the PHP code to fix that error :&lt;br /&gt;&lt;div&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;&amp;lt;php&lt;br /&gt;require_once('../lib/json/json.php');&lt;br /&gt;$json = new Services_JSON();&lt;br /&gt;&lt;br /&gt;$scriptTag = false;&lt;br /&gt;$cb = $_GET['callback'];&lt;br /&gt;&lt;br /&gt;if (!empty($cb)) {&lt;br /&gt;  $scriptTag = true;&lt;br /&gt;  header("Content-type: text/javascript");&lt;br /&gt;} else {&lt;br /&gt;  header("Content-type: application/x-json");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if ($scriptTag) echo $cb . "(";&lt;br /&gt;&lt;br /&gt;echo $json-&gt;encode(&lt;br /&gt;  Array(&lt;br /&gt;    'totalCount' =&gt; $res-&gt;numRows(),&lt;br /&gt;    'dt' =&gt; getData($_GET['start'])&lt;br /&gt;  )&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;if ($scriptTag) echo ");";&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/pre&gt;First we check callback variable if it set we set content-type for browser to javascript and add callback function to JSON data retrieved.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ok. Hope it help you&lt;br /&gt;Agus Sudarmanto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6051663807179582834-5398702591312228990?l=kubuskus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/5398702591312228990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6051663807179582834&amp;postID=5398702591312228990' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/5398702591312228990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/5398702591312228990'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/2008/02/scripttagproxy-invalid-label-solution.html' title='ScriptTagProxy invalid label solution'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xPO5oA4vvv8/R8TiBIksLEI/AAAAAAAAACk/62gTPZ7GiuQ/s72-c/extjs.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6051663807179582834.post-8572970208142096716</id><published>2008-02-12T21:06:00.002-08:00</published><updated>2008-03-31T21:33:05.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Installing CoolStack Solaris 10 AMP (Apache, MySQL, PHP) and GD (gd.so) also</title><content type='html'>&lt;ol&gt;&lt;li&gt;Requirement to download, browse http://cooltools.sunsource.net/coolstack/ and download packages below :&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;CSKruntime&lt;/span&gt; : Coolstack runtime package&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;CSKamp&lt;/span&gt;, that includes 3 packages : CSKapache2, CSKphp5 and CSKmysql32&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CSKphplibs&lt;/span&gt; : (optional, if you going to use gd.so or other usefull PHP extension)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Extract your download files with bunzip2 and install using pkgadd&lt;br /&gt;   # bunzip2 CSKruntime_1.2_sparc.pkg.bz2&lt;br /&gt;   # pkgadd –d CSKruntime_1.2_sparc.pkg&lt;br /&gt;   # bunzip2 CSKamp-sparc.pkg.bz2&lt;br /&gt;   # pkgadd –d CSKamp-sparc.pkg&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Coolstack package will be installed into /opt directory&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;#@ APACHE @#&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Start web server&lt;/span&gt; using this command&lt;br /&gt;   # /opt/coolstack/apache2/bin/apachectl start&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  #@ MySQL @#&lt;br /&gt;Next we configure MySQL server :&lt;br /&gt;&lt;br /&gt;--&gt; First we &lt;span style="font-weight: bold;"&gt;create group and user&lt;/span&gt; for MySQL&lt;br /&gt;   # export PATH=/opt/coolstack/mysql_32bit/bin:$PATH&lt;br /&gt;   # groupadd mysql&lt;br /&gt;   # useradd –g mysql mysql&lt;br /&gt;   # chown -R mysql:mysql /opt/coolstack/mysql_32bit&lt;br /&gt;&lt;br /&gt;   --&gt; Create &lt;span style="font-weight: bold;"&gt;MySQL configuration file&lt;/span&gt;&lt;br /&gt;   #vi /etc/my.cnf&lt;br /&gt;   [mysqld]&lt;br /&gt;   basedir=/opt/coolstack/mysql_32bit&lt;br /&gt;   datadir=/opt/coolstack/mysql_32bit/data&lt;br /&gt;&lt;br /&gt;   --&gt; &lt;span style="font-weight: bold;"&gt;Create mysql database&lt;/span&gt; needed by server&lt;br /&gt;   # cd /opt/coolstack/mysql_32bit/bin&lt;br /&gt;   # ./mysql_install_db&lt;br /&gt;   # chown –R mysql:mysql /opt/coolstack/mysql_32bit/data&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now we can &lt;span style="font-weight: bold;"&gt;run MySQL server&lt;/span&gt; with this :&lt;br /&gt;   # su – mysql&lt;br /&gt;   $ /opt/coolstack/mysql_32bit/bin/mysqladmin -u root password ‘yourrootpassword’&lt;br /&gt;   $ /opt/coolstack/mysql_32bit/bin/mysqld_safe &amp;amp;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Check apache and MySQL is running&lt;/span&gt; on our server&lt;br /&gt;   # ps –ef | grep apache2&lt;br /&gt;   # ps -ef | grep mysql | grep –v grep&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Installing &lt;span style="font-weight: bold;"&gt;PHP Libs&lt;/span&gt; (extension, like gd.so)&lt;br /&gt;# bunzip2 CSKphplibsbundle_1.2_sparc.pkg.bz2&lt;br /&gt;# pkgadd –d CSKphplibsbundle_1.2_sparc.pkg&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Edit php.ini to &lt;span style="font-weight: bold;"&gt;load GD library&lt;/span&gt;&lt;br /&gt;Open /opt/coolstack/php5/lib/php.ini and type the code anywhere or after `extension="apc.so"`&lt;br /&gt;extension="gd.so"&lt;br /&gt;Restart Apache with&lt;br /&gt;# /opt/coolstack/apache2/bin/apachectl restart&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;OK. We are finish installing AMP on Solaris 10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6051663807179582834-8572970208142096716?l=kubuskus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kubuskus.blogspot.com/feeds/8572970208142096716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6051663807179582834&amp;postID=8572970208142096716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/8572970208142096716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6051663807179582834/posts/default/8572970208142096716'/><link rel='alternate' type='text/html' href='http://kubuskus.blogspot.com/2008/02/installing-coolstack-solaris-10-amp.html' title='Installing CoolStack Solaris 10 AMP (Apache, MySQL, PHP) and GD (gd.so) also'/><author><name>Agus Sudarmanto</name><uri>http://www.blogger.com/profile/12008227277210217441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
