<?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-4961683222668966051</id><updated>2012-02-15T22:21:08.944-08:00</updated><category term='Coding'/><category term='Web Goodies'/><category term='IT Buzz'/><category term='Hosting'/><category term='Troubleshooting Linux'/><category term='Regular Expressions'/><category term='WebPRO'/><category term='Open Source'/><title type='text'>Web Words of Wisdom</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default?start-index=26&amp;max-results=25'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-4388129856103480172</id><published>2010-06-20T03:35:00.000-07:00</published><updated>2010-06-20T03:35:16.595-07:00</updated><title type='text'>About this blog</title><content type='html'>Having just moved this blog to a different platform, I realize that this blog may set the wrong expectations.&amp;nbsp;So in case you were wondering, here is a little background.&lt;br /&gt;&lt;br /&gt;This blog has been started when I was freelancing under the "stage name" of "WebPro Development". Most articles and comments written by me before the end of 2007 represent my tech-related findings that I meant to share either with my clients or my coworkers back then.&lt;br /&gt;&lt;br /&gt;I find some of the articles outdated and some representing old views that have changed. Please mind the date of the posts.&lt;br /&gt;&lt;br /&gt;And thanks for checking out this blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-4388129856103480172?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/4388129856103480172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2010/06/about-this-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4388129856103480172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4388129856103480172'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2010/06/about-this-blog.html' title='About this blog'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total><georss:featurename>Zurich, Switzerland</georss:featurename><georss:point>47.3690239 8.5380326</georss:point><georss:box>47.252761400000004 8.304573099999999 47.4852864 8.7714921</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-8561443961266072802</id><published>2008-04-18T16:07:00.001-07:00</published><updated>2010-06-19T09:36:11.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>loop... until in Java</title><content type='html'>In case you are wondering where's &lt;strong&gt;do-until&lt;/strong&gt; (or &lt;strong&gt;loop-until&lt;/strong&gt;) in &lt;strong&gt;Java&lt;/strong&gt;, you might want to remember that&lt;br/&gt;&lt;blockquote&gt;loop {&lt;br/&gt;...&lt;br/&gt;} until (condition);&lt;/blockquote&gt;&lt;br/&gt;tastes just the same as&lt;br/&gt;&lt;blockquote&gt;do {&lt;br/&gt;...&lt;br/&gt;} while (!condition);&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-8561443961266072802?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/8561443961266072802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2008/04/loop-until-in-java_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/8561443961266072802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/8561443961266072802'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2008/04/loop-until-in-java_18.html' title='loop... until in Java'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-66634387333336592</id><published>2008-03-13T03:52:00.001-07:00</published><updated>2010-06-19T09:36:11.300-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>parseInt returns 0 or weird numbers</title><content type='html'>Here's a time waster. Why would JavaScript's &lt;strong&gt;parseInt&lt;/strong&gt; return 0 when you pass on a string like '08' ? Or 668 for '01234' ?&lt;br/&gt;&lt;br/&gt;The reason is that the 1-parameter version tries to do it's best to figure out what radix you are using for your string. So you can have 0xCAFE for a lovely hex number (that can also wake you in the morning :) ). Guess what 01234 is ? It's an octal number because it starts with a zero.&lt;br/&gt;&lt;br/&gt;If you want '08' to be 8, you can use the second parameter of parseInt which is the radix for the conversion.&lt;br/&gt;&lt;br/&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-66634387333336592?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/66634387333336592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2008/03/parseint-returns-0-or-weird-numbers_13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/66634387333336592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/66634387333336592'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2008/03/parseint-returns-0-or-weird-numbers_13.html' title='parseInt returns 0 or weird numbers'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-4924083906954762682</id><published>2007-10-18T07:13:00.001-07:00</published><updated>2010-06-19T09:36:11.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>PHP ghost array item at index 0</title><content type='html'>Here's a copy-paste that boiled me for some minutes today (in collaboration with PEAR's Mail and Mail_Mime, but it wasn't their fault):&lt;br/&gt;&lt;blockquote&gt;$something = array(&lt;br/&gt;'key1' =&amp;gt; 'abracadabra',&lt;br/&gt;'key2' =&amp;gt; "Some longer string, {$somearray['somekey']}", $scalar,&lt;br/&gt;);&lt;/blockquote&gt;&lt;br/&gt;All in all, there was a ghost item at $something's index 0. Yep, in my case above, $something[0] == $scalar.&lt;br/&gt;&lt;br/&gt;So here's &lt;strong&gt;the lesson&lt;/strong&gt;: if an item shows up at &lt;strong&gt;index 0&lt;/strong&gt; in a &lt;strong&gt;PHP array&lt;/strong&gt; where you defined &lt;strong&gt;key=&amp;gt;value pairs&lt;/strong&gt;, you probably have a value running loose somewhere in your definition...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-4924083906954762682?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/4924083906954762682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/10/php-ghost-array-item-at-index-0_18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4924083906954762682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4924083906954762682'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/10/php-ghost-array-item-at-index-0_18.html' title='PHP ghost array item at index 0'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-939233729086883241</id><published>2007-10-16T03:36:00.001-07:00</published><updated>2010-06-19T09:36:11.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>DON'T! Just don't! (wild queries gone bad)</title><content type='html'>If you have a &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000BI6AH8%2F&amp;amp;tag=webprodevelopment-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Roku SoundBridge&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=webprodevelopment-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /&gt;, you'll probably find &lt;a href="http://www.radioroku.com/" title="Radio Roku" target="_blank"&gt;Radio Roku&lt;/a&gt; interesting. It's a great product, but however, the "radio roku" is an extremely slow website. Today I have searched for stations playing "electro" music and here's what I got:&lt;br/&gt;&lt;blockquote&gt;Error SELECT stations.id AS id, stations.name AS name, stations.rating AS rating, &lt;strong&gt;if(stations_rank.id is null, 1000000000, stations_rank.id) AS rank&lt;/strong&gt; FROM stations LEFT JOIN countries ON stations.country = countries.id and countries.languages_id= LEFT JOIN languages ON stations.language = languages.id and languages.languages_id= LEFT JOIN genres ON genre = genres.id and genres.languages_id= LEFT JOIN stations_rank ON stations_rank.stream_id = stations.id WHERE (name &lt;strong&gt;like&lt;/strong&gt; '%electro%' &lt;strong&gt;or&lt;/strong&gt; description &lt;strong&gt;like&lt;/strong&gt; '%electro%' or location &lt;strong&gt;like&lt;/strong&gt; '%electro%' &lt;strong&gt;or&lt;/strong&gt; genres.value &lt;strong&gt;like&lt;/strong&gt; '%electro%' &lt;strong&gt;or &lt;/strong&gt;countries.value &lt;strong&gt;like &lt;/strong&gt;'%electro%' &lt;strong&gt;or &lt;/strong&gt;languages.value &lt;strong&gt;like &lt;/strong&gt;'%electro%') &lt;strong&gt;ORDER BY rank&lt;/strong&gt; ASC&lt;/blockquote&gt;&lt;br/&gt;Ok... so that's why the website is moving soooo slow. Here's a practical list of "don't do this" from a single query:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;model logic in data retrieval: &lt;em&gt;if(stations_rank.id is null, 1000000000, stations_rank.id) AS rank&lt;/em&gt;. You should avoid this. It's much better to calculate this as an additional field and not to do an evaluation every single time you retrieve results (especially as this calculated field is probably required in looots of listings, what if you want to change this logic?). Also try to avoid SQL constructs specific to a database engine, in this case &lt;em&gt;IF(cond, a, b)&lt;/em&gt;. Well, if you'll live all your life in MySQL you may use some functions, ok...&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;order by calculated field: &lt;em&gt;ORDER BY rank&lt;/em&gt;. Makes any query cache useless and is not properly indexed by most engines.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;em&gt;field &lt;strong&gt;like&lt;/strong&gt; '%value%'&lt;/em&gt;. Never use this on a table larger than 1000 rows that you care about. If on MySQL, try the &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html" title="MySQL FullText Searches" target="_blank"&gt;fulltext indexes&lt;/a&gt; available on MyISAM. If not, use a solution for a similar fulltext search.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;em&gt;condition_on_field1&lt;/em&gt; OR &lt;em&gt;condition_on_field2&lt;/em&gt;. Most likely it won't be indexed.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Ok, so &lt;strong&gt;why would we care&lt;/strong&gt;? Because of scalability. We want those tens of millions of users hit our application and browse those pages and do this and that. And we don't want a datacenter just to handle their simple queries (which is the &lt;em&gt;other&lt;/em&gt; solution for badly written queries).&lt;br/&gt;&lt;br/&gt;And of course, we all want to sell. &lt;a href="http://www.rokulabs.com/" title="Roku Labs" target="_blank"&gt;Roku&lt;/a&gt; has a couple of&lt;strong&gt; very good&lt;/strong&gt; under-promoted &lt;strong&gt;audio players&lt;/strong&gt; (&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000BI6AH8%2F&amp;amp;tag=webprodevelopment-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;SoundBridge&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=webprodevelopment-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /&gt; and &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FRoku-SoundBridge-R1000-Network-System%2Fdp%2FB000BIFY6Q&amp;amp;tag=webprodevelopment-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;SoundBridge Radio&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=webprodevelopment-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /&gt; are brilliant, probably except for a minor glitch with AAC streams). If I would have seen &lt;a href="http://www.radioroku.com" title="Radio Roku" target="_blank"&gt;radioroku.com&lt;/a&gt; before the product, I'd think "neeah, that's too slow"...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-939233729086883241?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/939233729086883241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/10/don-just-don-wild-queries-gone-bad_16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/939233729086883241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/939233729086883241'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/10/don-just-don-wild-queries-gone-bad_16.html' title='DON&amp;#39;T! Just don&amp;#39;t! (wild queries gone bad)'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-5187030375081144861</id><published>2007-10-12T05:52:00.001-07:00</published><updated>2010-06-19T09:36:11.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>E4X's double dot operator</title><content type='html'>&lt;strong&gt;ECMAScript 4&lt;/strong&gt; (currently implemented in &lt;strong&gt;ActionScript&lt;/strong&gt;, but not directly in web browsers which are still dealing with ECMAScript 3 incompatibilities) has a couple of very neat power-features that will save some lines of code, especially when using the &lt;strong&gt;E4x &lt;/strong&gt;extension (&lt;strong&gt;ECMAScript 4 XML&lt;/strong&gt;).&lt;br/&gt;&lt;br/&gt;One of them is the double dot (..) operator. As in&lt;br/&gt;&lt;blockquote&gt;&lt;strong&gt;myElement..subNode&lt;/strong&gt;&lt;/blockquote&gt;&lt;br/&gt;This is an array of all "subNode" children below myElement. For a Canvas, &lt;strong&gt;myCanvas..Label&lt;/strong&gt; will be an array of all the &lt;strong&gt;Label&lt;/strong&gt;s in your canvas. Neat, huh?&lt;br/&gt;&lt;br/&gt;How about the &lt;strong&gt;.@&lt;/strong&gt; operator? As in...&lt;br/&gt;&lt;blockquote&gt;myCanvas&lt;strong&gt;..&lt;/strong&gt;Label&lt;strong&gt;.@&lt;/strong&gt;(thisXML.@id == "1234").text&lt;/blockquote&gt;&lt;br/&gt;This will help you select directly the first &lt;strong&gt;Label&lt;/strong&gt; with an attribute of &lt;strong&gt;id&lt;/strong&gt; equal to 1234.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-5187030375081144861?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/5187030375081144861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/10/e4x-double-dot-operator_12.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5187030375081144861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5187030375081144861'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/10/e4x-double-dot-operator_12.html' title='E4X&amp;#39;s double dot operator'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-7507725608853832475</id><published>2007-09-14T03:30:00.001-07:00</published><updated>2010-06-19T09:36:11.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><title type='text'>It does not sum up!</title><content type='html'>As I recently discovered there are a lot of mature frameworks used in &lt;strong&gt;Java&lt;/strong&gt; and other languages, I have considered leaving &lt;strong&gt;PHP&lt;/strong&gt; behind and focusing on other language and possibly one of these frameworks for the next period.&lt;br/&gt;&lt;br/&gt;A part of my research (which has not reached a decision!) was to compare a list of languages and database engines. Starting with the latter, which I've recently tickled in &lt;a href="http://webpro.mocanu.net/www/2007/09/12/postgresql-mysql-oracle-high-availability-dictates-market-share/" title="High Availability dictates market share" target="_blank"&gt;this article&lt;/a&gt;:&lt;br/&gt;&lt;p style="text-align: center"&gt;&lt;img src="http://3.bp.blogspot.com/_P960q3CXFF8/TBzoTBs8bBI/AAAAAAAAObY/aADrL2jFbE4/s1600/2007-09-clipboard-1.jpg" title="MySQL vs Postgresql vs Oracle" alt="MySQL vs Postgresql vs Oracle" height="263" width="540" /&gt;&lt;/p&gt;&lt;br/&gt;Hmmm... descending trends overall... how about scripting languages?&lt;br/&gt;&lt;p style="text-align: center"&gt;&lt;img src="http://4.bp.blogspot.com/_P960q3CXFF8/TBzoUEchCvI/AAAAAAAAObc/88hlwUXLMj0/s1600/2007-09-clipboard-2.jpg" title="PHP vs Perl vs Python vs Java vs ASP" alt="PHP vs Perl vs Python vs Java vs ASP" height="263" width="540" /&gt;&lt;/p&gt;&lt;br/&gt;Hummm... descending again.&lt;br/&gt;&lt;br/&gt;Google Trends is limited to 5 items per graph, so I left Ruby out, it's somewhere around Python, but the trend is just the opposite (it's slightly over Python since mid 2006 - well done, Rails! - and it's an overall growing search term). It's not a boost though.&lt;br/&gt;&lt;br/&gt;There is a descending trend for searches on all languages (just search your favorite!) and database systems. I can only see two possible reasons here:&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;people know all about them, don't need to search (I will need 3 pints of &lt;a href="http://www.guinness.com" title="Guinness Beer" target="_blank"&gt;Guinness&lt;/a&gt; to believe that)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;people are less interested about them&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;Let's see how PHP stands in comparison with a few popular applications written in PHP: Joomla, SMF and phpBB.&lt;br/&gt;&lt;p style="text-align: center"&gt;&lt;img src="http://2.bp.blogspot.com/_P960q3CXFF8/TBzoU5ilmKI/AAAAAAAAObg/wGTBHJ-2_44/s1600/2007-09-clipboard-3.jpg" title="PHP vs Joomla vs SMF vs PHPBB" alt="PHP vs Joomla vs SMF vs PHPBB" height="263" width="540" /&gt;&lt;/p&gt;&lt;br/&gt;Is this what we're missing? People are adding a new level of abstraction and being interested rather about frameworks and applications they can build on top of web languages instead of knowing the language itself?&lt;br/&gt;&lt;br/&gt;If this is true, web programmers knowing the core languages will be fewer and fewer, there will soon be openings for "Joomla programmer" or "DJango programmer" or "Rails programmer" (Joomla has a framework too) and we will see a lot of unexperienced people doing easy routine programming jobs and finding a great challenge creating a simple database structure for a product listing site that does not run Rails or Joomla.&lt;br/&gt;&lt;br/&gt;(which reminds me that I was bulkly invited earlier this year to become a SAP consultant for a company that scheduled 12 interviews in 2 hours, go figure what a coffee-drinking career I have missed!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-7507725608853832475?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/7507725608853832475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/09/it-does-not-sum-up_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7507725608853832475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7507725608853832475'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/09/it-does-not-sum-up_14.html' title='It does not sum up!'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_P960q3CXFF8/TBzoTBs8bBI/AAAAAAAAObY/aADrL2jFbE4/s72-c/2007-09-clipboard-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-4358852803451800241</id><published>2007-09-12T03:33:00.001-07:00</published><updated>2010-06-19T09:36:11.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Postgresql, MySQL, Oracle: high availability dictates market share</title><content type='html'>I have recently studied how much you can extend and grow one database using Open Source alternatives and I think I have a clue why  &lt;strong&gt;PostgreSQL&lt;/strong&gt; lagged behind &lt;strong&gt;MySQL&lt;/strong&gt; in the last few years, despite having a ton more stable features than the latter (functional indexes, trigger, a variety of procedural languages).&lt;br/&gt;&lt;br/&gt;Well, the number one reason to dump &lt;strong&gt;PostgreSQL&lt;/strong&gt; is the connection time (several times longer than a connection to a &lt;strong&gt;MySQL &lt;/strong&gt;server). The number two reason may be the storage mechanism, complicating storage calculation for shared hosts (probably 95% of the sites use shared hosting!).&lt;br/&gt;&lt;br/&gt;What's &lt;strong&gt;Oracle&lt;/strong&gt; doing in this article? Oracle is very scalable (although you pay a lot for it) and is probably an industry standard. Taking into consideration that most recent &lt;strong&gt;RIA&lt;/strong&gt;s (folksonomy-based) need to manage a lot of data, &lt;strong&gt;scalability&lt;/strong&gt; and &lt;strong&gt;high availability&lt;/strong&gt; are very important.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;MySQL &lt;/strong&gt;has been catching up in this direction and is now very popular both among shared hosters and large application builders. &lt;strong&gt;Version 4.1&lt;/strong&gt; supports master-slave replication (which can solve your problems if you are doing many reads and few writes) and &lt;strong&gt;version 5&lt;/strong&gt; introduced the &lt;strong&gt;MySQL cluster&lt;/strong&gt; which is so inefficient in terms of hardware (it puts all data in memory) but is very fast and, once again, &lt;strong&gt;scalable&lt;/strong&gt; and &lt;strong&gt;redundant&lt;/strong&gt;. You might feel deep pains when your core router or datacenter power supply fail (although improbable, such events happened a few times during the last year for major datacenters), because all your in-memory data will go bye-bye and you will have to pray that the weekly backup happened yesterday and not 5 days ago. &lt;strong&gt;Version 5.1&lt;/strong&gt; will support native &lt;a href="http://en.wikipedia.org/wiki/Partition_(database)" title="Database Partitioning" target="_blank"&gt;horizontal partitioning&lt;/a&gt; which is another major step in scalability.&lt;br/&gt;&lt;br/&gt;And &lt;strong&gt;MySQL&lt;/strong&gt; is Open Source.&lt;br/&gt;&lt;br/&gt;PostgreSQL still has a chance to learn from MySQL and maybe from Google's database storage system which has been already described a couple of years ago in a few white papers. As scalable as MySQL is, using the master-slave replication will eventually need more hardware for the slaves; using the cluster storage is not 100% safe (please, prove me I'm wrong on this!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-4358852803451800241?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/4358852803451800241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/09/postgresql-mysql-oracle-high_12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4358852803451800241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4358852803451800241'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/09/postgresql-mysql-oracle-high_12.html' title='Postgresql, MySQL, Oracle: high availability dictates market share'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-1445812468366507003</id><published>2007-09-12T02:25:00.001-07:00</published><updated>2010-06-19T09:36:11.310-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>The components of an URL</title><content type='html'>This is something I was planning to post in my "tutorials" area, but I just noticed a very good coverage of this basic topic on Matt Cutts' blog, so I'll take the lazy path and give you the article that explains what's the host, the tld, the path, etc. Read here: &lt;a href="http://feeds.feedburner.com/~r/mattcutts/uJBW/~3/144292307/" title="Matt Cutts: The parts of an URL" target="_blank"&gt;The parts of an URL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-1445812468366507003?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/1445812468366507003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/09/components-of-url_12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/1445812468366507003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/1445812468366507003'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/09/components-of-url_12.html' title='The components of an URL'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-5064483222996763010</id><published>2007-09-09T06:04:00.001-07:00</published><updated>2010-06-19T09:36:11.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>An useful tool even better now</title><content type='html'>According to my eyes and - if you need to see it to believe it - the official blog, &lt;a target="_blank" href="http://googlereader.blogspot.com/2007/09/we-found-it.html" title="Google reader adds the search button"&gt;Google Reader finally has a search button&lt;/a&gt;. And it's even a pretty ajaxy control that lets you limit the search to certain folders.&lt;br/&gt;&lt;br/&gt;The search button was probably the distance between &lt;strong&gt;Google Reader&lt;/strong&gt; and the best news reader available. The truth is I was surprised to see a &lt;strong&gt;Google&lt;/strong&gt; product without a search button when I started using the &lt;strong&gt;Reader&lt;/strong&gt;, but I kinda got used to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-5064483222996763010?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/5064483222996763010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/09/useful-tool-even-better-now_09.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5064483222996763010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5064483222996763010'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/09/useful-tool-even-better-now_09.html' title='An useful tool even better now'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-6060683841309978296</id><published>2007-08-22T10:36:00.001-07:00</published><updated>2010-06-19T09:36:11.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Open-Source Flex IDE</title><content type='html'>It looks like &lt;a href="http://www.adobe.com/products/flex/" title="Adobe Flex" target="_blank"&gt;&lt;strong&gt;Flex&lt;/strong&gt;&lt;/a&gt; has a very good &lt;strong&gt;Commercial IDE&lt;/strong&gt;, I am impressed with the facilities that come in the &lt;a href="http://www.adobe.com/products/flex/flexbuilder/" title="Flex Builder IDE" target="_blank"&gt;&lt;strong&gt;Flex Builder&lt;/strong&gt;&lt;/a&gt; for &lt;a href="http://www.eclipse.org/" title="Eclipse IDE" target="_blank"&gt;Eclipse&lt;/a&gt; demo. Most of all, I like that even when you combine &lt;strong&gt;MXML&lt;/strong&gt; with &lt;strong&gt;ActionScript&lt;/strong&gt; you still have proper syntax highlighting and code assistance. It even has a visual builder, but I'm probably too much of a coder to enjoy that. The debugger is also great.&lt;br/&gt;&lt;br/&gt;If you have $499 in your pocket, that's a very good way to spend them (I'd go as far as saying it's better than buying 1.79 &lt;a href="http://www.amazon.com/gp/product/B000MQNMQ6?ie=UTF8&amp;amp;tag=webprodevelopment-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B000MQNMQ6" title="40 GB Apple TV on Amazon.com" target="_blank"&gt;40GB Apple TV&lt;/a&gt;'s but that might depend on your spending pattern and of course, &lt;a href="http://www.apple.com/pr/bios/jobs.html" title="Steve Jobs, founder of Apple Computer" target="_blank"&gt;Mr. Steve Jobs&lt;/a&gt; might personally hate me for saying that).&lt;br/&gt;&lt;br/&gt;However, if you don't buy the &lt;strong&gt;Flex Builder&lt;/strong&gt;, you'll have to memorize the mx namespace by heart. There is &lt;strong&gt;no DTD for the MXML&lt;/strong&gt; format and apparently, no alternative &lt;strong&gt;Flex IDE&lt;/strong&gt;. Does the Open-Source community not really care about Flex or is it rather worth buying the commercial IDE and hoping that &lt;strong&gt;Flex Builder 3&lt;/strong&gt; will be Open-Source?&lt;br/&gt;&lt;br/&gt;&lt;a href="http://1.bp.blogspot.com/_P960q3CXFF8/TBzoQ9CmuEI/AAAAAAAAObQ/u2QW8-Uu62c/s1600/2007-08-flexible.jpg" title="FLEXible UI"&gt;&lt;img src="http://webpro.mocanu.net/www/wp-content/uploads/2007/08/flexible.thumbnail.jpg" title="FLEXible UI" alt="FLEXible UI" align="left" border="0" height="89" width="128" /&gt;&lt;/a&gt;No O/S IDE for Flex? Except &lt;u&gt;one&lt;/u&gt;. Which is in &lt;em&gt;alpha&lt;/em&gt; state and hasn't really been active in 2007, but has an interesting approach. Have a look at &lt;a href="http://flexible.riaforge.org/" title="FLEXible - Open Source Flex IDE" target="_blank"&gt;Flexible&lt;/a&gt; when you have the time. It's a Flash-based &lt;strong&gt;Flex 2 IDE&lt;/strong&gt;. Doesn't do to much, but with the proper community attention it could be big.&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Later update:&lt;/em&gt; You can see even more about &lt;strong&gt;FLEXible &lt;/strong&gt;on &lt;a href="http://www.flexiblemxml.com/" title="FLEXible IDE homepage" target="_blank"&gt;its home page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-6060683841309978296?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/6060683841309978296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/08/open-source-flex-ide_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/6060683841309978296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/6060683841309978296'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/08/open-source-flex-ide_22.html' title='Open-Source Flex IDE'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-405519689913536611</id><published>2007-08-22T03:20:00.001-07:00</published><updated>2010-06-19T09:36:11.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebPRO'/><title type='text'>...I must have done something good</title><content type='html'>Yeah, alright, I had &lt;a href="http://en.wikipedia.org/wiki/Julie_Andrews" title="Julie Andrews, actress and singer" target="_blank"&gt;Julie Andrews&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/The_Sound_of_Music_%28film%29" title="The Sound of Music - the movie" target="_blank"&gt;The Sound of Music&lt;/a&gt; in my head for the last few days - I admit! - and I keep thinking about what my subconscious is trying to tell me with that.&lt;br/&gt;&lt;br/&gt;Before I find that out, I thought there is &lt;strong&gt;something good&lt;/strong&gt; about this blog, this website and generally - about what I do, starting with the nice &lt;a href="http://webpro.mocanu.net/www/about/regular-expressions/" title="Articles on Regular Expressions by Sorin Mocanu"&gt;regular expressions&lt;/a&gt; and &lt;a href="http://webpro.mocanu.net/www/about/troubleshooting-linux/" title="Articles on Linux Troubleshooting by Sorin Mocanu"&gt;Linux tips&lt;/a&gt; that helped some newbies out of programming darkness... and going on through the &lt;a href="http://webpro.mocanu.net/www/about/web-goodies/" title="Web Tips'n'Tricks by Sorin Mocanu"&gt;web tips and tricks&lt;/a&gt; for those who stumble upon several issues...&lt;br/&gt;&lt;br/&gt;We now agree that this website deserves something better. So until the new website is out (will I need to change it anyway?), let me just point out that we &lt;strong&gt;moved the blog to new software&lt;/strong&gt; (switched to &lt;a href="http://www.wordpress.com/" title="WordPress publishing software" target="_blank"&gt;WordPress&lt;/a&gt;, please stop hammering this site with robots for &lt;a href="http://www.s9y.org/" title="Serendipity weblog software" target="_blank"&gt;Serendipity&lt;/a&gt;). Enjoy it ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-405519689913536611?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/405519689913536611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/08/i-must-have-done-something-good_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/405519689913536611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/405519689913536611'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/08/i-must-have-done-something-good_22.html' title='...I must have done something good'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-2377127119108919944</id><published>2007-08-16T04:00:00.001-07:00</published><updated>2010-06-19T09:36:11.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regular Expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>OpenLaszlo RegExp (regular expression) support</title><content type='html'>&lt;a href="http://www.openlaszlo.org/"&gt;OpenLaszlo&lt;/a&gt; is a very good framework for generating cross-browser cross-platform cross-format &lt;acronym title="Rich Internet Applications"&gt;RIAs&lt;/acronym&gt;.&lt;br/&gt;&lt;br/&gt;I have recently evaluated OpenLaszlo 4 for building such a rich website for the 2.0 world and there are some very good (yet limited) implementations of most common items: form controls, streaming audio/video support, etc.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;OpenLaszlo&lt;/strong&gt; can output your application in &lt;strong&gt;DHTML&lt;/strong&gt;, &lt;strong&gt;Flash 7+&lt;/strong&gt; or &lt;strong&gt;J2ME&lt;/strong&gt; (they call the first DHTML, I thought the D in DHTML was Dead for the last few years...; the latter makes OpenLaszlo one of a kind). I really plan to give it an in-depth comparison over Flex in the next few days, but for the time being here's something that made me embrace Flex and leave OpenLaszlo for now:&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;NO REGULAR EXPRESSION SUPPORT&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Although the scripting in OpenLaszlo is some sort of JavaScript (based on ECMA Script, with just a few extensions), not all functions and objects are available. For instance RegExp, that you might have to use for a thousand reasons.&lt;br/&gt;&lt;br/&gt;However, there is a workaround to this: if you need to use regular expressions in an OpenLaszlo application, you can use the &lt;strong&gt;LzBrowser&lt;/strong&gt; object. Except for the J2ME implementation, there is a method called &lt;strong&gt;loadjs&lt;/strong&gt; that allows you to execute some javascript in your browser (you don't really care whether the output is Flash or HTML).&lt;br/&gt;&lt;br/&gt;Using this workaround you'll have something like:&lt;br/&gt;Your RIA using OpenLaszlo &amp;lt;=&amp;gt; LzBrowser object &amp;lt;=&amp;gt; Your browser executing some native JS code&lt;br/&gt;&lt;br/&gt;... and yes, you will have RegExp.&lt;br/&gt;&lt;br/&gt;Stay tuned, more to follow...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-2377127119108919944?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/2377127119108919944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/08/openlaszlo-regexp-regular-expression_16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/2377127119108919944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/2377127119108919944'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/08/openlaszlo-regexp-regular-expression_16.html' title='OpenLaszlo RegExp (regular expression) support'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-3116786635122605949</id><published>2007-07-02T20:05:00.001-07:00</published><updated>2010-06-19T09:36:11.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><title type='text'>SliceHost TOS</title><content type='html'>Getting a new toy today after &lt;a href="http://blog.slicehost.com/articles/2006/09/29/dedicated-or-vps"&gt;reading about a famous VPS host&lt;/a&gt;, it's a SliceHost Slice. I am wondering yet about all these people saying good things about SliceHost (actually it's two hosting companies I've ever seen people really enthusiastic about, one is SliceHost and another is DreamHost, but the latter has an incentive referral program, so I figure much of the enthusiasm is from there ...).&lt;br/&gt;&lt;br/&gt;Ok, so I'm getting a Slice. And in the ToS I see: "&lt;em&gt;Slicehost may cancel or suspend your access to Slicehost services at any time and for any reason without notice&lt;/em&gt;". That's a very friendly way to start a business relation, but let's see where this takes us... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-3116786635122605949?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/3116786635122605949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/07/slicehost-tos_02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/3116786635122605949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/3116786635122605949'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/07/slicehost-tos_02.html' title='SliceHost TOS'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-863348636147488548</id><published>2007-06-21T02:00:00.001-07:00</published><updated>2010-06-19T09:36:11.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Scriptaculous &amp; Prototype CHM / PDF manuals</title><content type='html'>Finally, there is a downloadable / offline documentation for Scriptaculous and Prototype, compiled by Kjell Bublitz (&lt;a href="http://www.m3nt0r.de" target="_blank"&gt;www.m3nt0r.de&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;Here are the &lt;a href="http://www.m3nt0r.de/blog/scriptaculous-offline-docs/"&gt;Script.Aculo.Us manual&lt;/a&gt; and the &lt;a href="http://www.m3nt0r.de/blog/2007/01/21/prototype-150-docs-im-chm-format/"&gt;Prototype manual&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Lucky for us, it's in English. Thanks, Kjell, your work is very much appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-863348636147488548?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/863348636147488548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/06/scriptaculous-prototype-chm-pdf-manuals_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/863348636147488548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/863348636147488548'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/06/scriptaculous-prototype-chm-pdf-manuals_21.html' title='Scriptaculous &amp;amp; Prototype CHM / PDF manuals'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-7792122941277632124</id><published>2007-06-06T21:54:00.001-07:00</published><updated>2010-06-19T09:36:11.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting Linux'/><title type='text'>locale -a - no locale on CentOS VPS</title><content type='html'>Ok, so we have this lovely new cheap &lt;a href="http://en.wikipedia.org/wiki/Vps" target="_blank"&gt;VPS&lt;/a&gt; running some CentOS under OpenVZ and PHP's setlocale's does not work (as in: returns &lt;em&gt;false&lt;/em&gt;).&lt;br/&gt;&lt;br/&gt;What can you do?&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Look for /usr/lib/locale/* - in our case, an empty directory. Apparently, glibc-common must have installed something here.&lt;br/&gt;You can now take the official RPM (I'm talking CentOS here, it's probably ok for Fedora too) from a mirror and unpack it with &lt;b&gt;rpm2cpio&lt;/b&gt;.&lt;br/&gt;&lt;br/&gt;Then you can extract the files you miss from the cpio file. I extracted it with the Midnight Commander because I'm a fan of &lt;font color=blue&gt;blue&lt;/font&gt; or you can even try to force install the rpm (which I did not do because I was not sure I wouldn't break the bones of my VPS - read below for what you can do with an &lt;b&gt;yum install ImageMagick&lt;/b&gt;).&lt;br/&gt;&lt;br/&gt;This is something that should not happen, and then again - it happened to us.&lt;br/&gt;&lt;br/&gt;Also - if you run CentOS on a VPS, I'd be very careful about installing something like ImageMagick. Apparently this creates a big chain of dependencies, leading up to udev. OpenVZ uses vzdev instead of udev, so if you don't exclude packages like udev from your yum repositories, you might get with an almost-empty udev and some pains in the neck (such as your server running, but nobody being able to open a console).&lt;br/&gt;&lt;br/&gt;This all happened on a &lt;a href="http://www.cheapvps.co.uk/" target="_blank"&gt;CheapVPS&lt;/a&gt; account - their service is "cheap" (both in your pocket and in your user experience) and runs you through 3 or 4 sites before you set things up (the order page, a nice JavaScript order form where you can spy on their discounts, the a2b2 forum where you can discuss services, the ticket support website and finally the hyperVM control panel). I'm dizzy - where was I ? Oh, yes, they are kinda cheap, but &lt;u&gt;they have an A+ from me for being able to solve problems and answer tickets VERY FAST&lt;/u&gt;. Their service seems to be much better than their website(s).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-7792122941277632124?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/7792122941277632124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/06/locale-no-locale-on-centos-vps_06.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7792122941277632124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7792122941277632124'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/06/locale-no-locale-on-centos-vps_06.html' title='locale -a - no locale on CentOS VPS'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-8851674469323345683</id><published>2007-02-06T02:00:00.001-08:00</published><updated>2010-06-19T09:36:11.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebPRO'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><title type='text'>Thank you Google, you got that right!</title><content type='html'>&lt;img src="http://3.bp.blogspot.com/_P960q3CXFF8/TBzoP-M0mKI/AAAAAAAAObM/CzWM9aaGIvg/s1600/2007-08-didyoumeanwebpro1.png" title="Google search for WebProDevelopment" alt="Google search for WebProDevelopment" height="190" width="500" /&gt;&lt;br/&gt;&lt;br/&gt;Yes, it's true, that's how you spell &lt;a href="http://webpro.mocanu.net/" title="WebPRO Development Home Page"&gt;WebPRO Development&lt;/a&gt;. And yes, if you wonder, we are a Romanian web development team with a lot of experience and many happy clients.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-8851674469323345683?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/8851674469323345683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/02/thank-you-google-you-got-that-right_06.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/8851674469323345683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/8851674469323345683'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/02/thank-you-google-you-got-that-right_06.html' title='Thank you Google, you got that right!'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_P960q3CXFF8/TBzoP-M0mKI/AAAAAAAAObM/CzWM9aaGIvg/s72-c/2007-08-didyoumeanwebpro1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-3522428721853666039</id><published>2007-01-05T15:18:00.001-08:00</published><updated>2010-06-19T09:36:11.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><title type='text'>Dreamhost's suicidal marketing</title><content type='html'>We like to watch marketing campaigns and see who does what and how it goes. &lt;a href="http://www.dreamhost.com/r.cgi?128908" target="_blank"&gt;Dreamhost&lt;/a&gt; (a web hosting provider that is very developer-friendly and has a very good shared service IMHO) recently expanded their offer to 200GB+ of disk with hourly, daily and weekly backups and something like 1.2TB+ of traffic.&lt;br/&gt;&lt;br/&gt;It sounds unbelievable and people are running away.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It's an unbelievable offer and the fact is you CAN use all that disk space, but I find it hard to have all that traffic - the watchdog robot will jam down your site when you have too many simultaneous connections or your requests raise the server usage too much. Well, it's all marketing because the average Joe will not need more than 1-2 GB of space for the average site.&lt;br/&gt;&lt;br/&gt;Apparently, this has labeled them as "oversellers" and in a &lt;a href="http://blog.dreamhost.com/2007/01/03/new-dream-resolutions"&gt;veeery long blog post&lt;/a&gt;, they announce why they will constantly decrease the allotments for new users in order to have more people sign up. Existing users will not suffer any changes. It's actually one thing that is very weird to implement, but apparently they explained it quite well. E-marketing come, e-marketing go...&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Dreamhost&lt;/b&gt; now offers shared hosting plans with &lt;b&gt;shell&lt;/b&gt; and &lt;b&gt;FTP&lt;/b&gt; access, &lt;b&gt;PHP 5&lt;/b&gt;, &lt;b&gt;MySQL 5&lt;/b&gt;, &lt;b&gt;Ruby&lt;/b&gt; and &lt;b&gt;Rails&lt;/b&gt;, a full-featured proprietary web administration panel, unlimited number of DNS, web, mail hosts and unlimited mysql database. Plans range from $7.95 to $63.95, depending on the disk and bandwidth allotment and CPU usage pattern. Disk space and allowed traffic increase weekly for existing customers.&lt;br/&gt;&lt;br/&gt;If you want to &lt;a target="_blank" href="http://www.dreamhost.com/r.cgi?128908"&gt;sign up to Dreamhost&lt;/a&gt;, you will receive a &lt;b&gt;discount of up to $96&lt;/b&gt; on any order if you use the &lt;b&gt;Dreamhost coupon code &lt;u&gt;WEBPRO&lt;/u&gt;&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-3522428721853666039?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/3522428721853666039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2007/01/dreamhost-suicidal-marketing_05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/3522428721853666039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/3522428721853666039'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2007/01/dreamhost-suicidal-marketing_05.html' title='Dreamhost&amp;#39;s suicidal marketing'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-1770695361387908409</id><published>2006-11-16T02:00:00.001-08:00</published><updated>2010-06-19T09:36:11.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><title type='text'>Can't miss this: the brotherhood of Yahoo, Google and MSN</title><content type='html'>According to &lt;a href="http://googleblog.blogspot.com/2006/11/search-engines-united.html" target="_blank"&gt;this article&lt;/a&gt; on the official google blog and &lt;a href="http://www.ysearchblog.com/archives/000380.html" target="_blank"&gt;this one&lt;/a&gt; on yahoo, there is an &lt;a href="http://www.sitemaps.org/protocol.html" target="_blank"&gt;official sitemaps protocol&lt;/a&gt;. OMG, it's just the plain old GOOGLE sitemaps protocol, who would have thought?&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Apparently there are a few news on this release. First, there is a new DTD to validate against. Second, you have to create a sitemap of your sitemaps if you have more on the same domain. Third, there is a standard PING URL (see &lt;a href="http://www.sitemaps.org/faq.html#faq_after_submission" target=_blank&gt;http://www.sitemaps.org/faq.html#faq_after_submission&lt;/a&gt;) for each search engine that will agree on the sitemaps protocol.&lt;br/&gt;&lt;br/&gt;As for the bad part, at the point when I am writing this article, Google probably got so happy about this that they forgot to do a little maintenance: first, the xsd files are missing, second - nobody respects the protocol's stadard ping URL's. But the paperwork is done...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-1770695361387908409?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/1770695361387908409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/11/can-miss-this-brotherhood-of-yahoo_16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/1770695361387908409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/1770695361387908409'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/11/can-miss-this-brotherhood-of-yahoo_16.html' title='Can&amp;#39;t miss this: the brotherhood of Yahoo, Google and MSN'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-7824389494213570592</id><published>2006-11-07T17:39:00.001-08:00</published><updated>2010-06-19T09:36:11.327-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Lighttpd. Wow!</title><content type='html'>I've simply got nothing more to say. &lt;a href="http://www.lighttpd.net/" target="_blank"&gt;Lighttpd&lt;/a&gt; is so easy to work with.&lt;br/&gt;We have a couple of mirror servers that do nothing else but mirror files so our client can save bandwidth and server load on the main web servers. Nothing fancy, just "the referrer is good, here's the file, good luck with it". &lt;strong&gt;Apache&lt;/strong&gt; is now down, &lt;strong&gt;lighttpd &lt;/strong&gt;UP! The servers are now from load 2.0 down to load 0.3-0.4 and they don't suffer from traffic peaks.&lt;br/&gt;There is one downside though...&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;If you use multiple worker threads (which would cost you an arm and a leg with apache anyway), the status module will not show you total figures (total number of hits, total number of processes, etc) - it will show you the stats of the the worker that has just responded. So for what it matters, this module goes useless when you increase the number of workers.&lt;br/&gt;Yet if you don't, you will find out that the threads are waiting for system resources such as file handles.&lt;br/&gt;&lt;br/&gt;And now, that I'm considering the dark side of &lt;b&gt;Lighty&lt;/b&gt;, I'll add the no-htaccess issue. You can't have a &lt;b&gt;.htaccess&lt;/b&gt; file - which is a performance issue on apache, but it's a no-no here. You might wake up happier in the morning when you see that lighttpd boots up in no time as compared to apache...&lt;br/&gt;&lt;br/&gt;The main idea is though that on the next production server we install, we &lt;b&gt;will&lt;/b&gt; give lighttpd a shot to be our new lighty friend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-7824389494213570592?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/7824389494213570592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/11/lighttpd-wow_07.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7824389494213570592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7824389494213570592'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/11/lighttpd-wow_07.html' title='Lighttpd. Wow!'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-4923318147220177312</id><published>2006-10-30T21:29:00.001-08:00</published><updated>2010-06-19T09:36:11.329-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebPRO'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Buzz'/><title type='text'>It does have a name</title><content type='html'>Finally we came up with a name for our CMS service. We do have a name for it and it's not just "&lt;strong&gt;The Fantastic CMS&lt;/strong&gt; those guys did" as our clients kept referring to.&lt;br/&gt;&lt;br/&gt;Ladies and gentlemen, we give you our CMS suite: &lt;a href="http://www.webprocreative.com/"&gt;WebPRO Creative&lt;/a&gt;. Now that we have a name, we'll even sketch up a page for it, I'm sure. And we'll even add more &lt;a href="http://www.webprocreative.com/"&gt;features&lt;/a&gt; to the pack. Oh yes, it did sound lewd to some of the first people we tested the name on, but we're... oh well... intensely creative.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-4923318147220177312?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/4923318147220177312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/10/it-does-have-name_30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4923318147220177312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/4923318147220177312'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/10/it-does-have-name_30.html' title='It does have a name'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-7512810228212435885</id><published>2006-10-25T22:20:00.001-07:00</published><updated>2010-06-19T09:36:11.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Internet Explorer 7 is here</title><content type='html'>As announced on the &lt;a href="http://blogs.msdn.com/ie/archive/2006/10/24/ie7-hits-the-street.aspx" target="_blank"&gt;Offical Microsoft IE Blog&lt;/a&gt;, IE7 is here. My yellow icon just told me that today (although I have been a "passive user" of the RC for a few weeks). Now Firefox finally has a match. In slowness. Although I have noticed that firefox has a higher processor usage when it's idle and IE7 is running as compared to when firefox is idle and IE7 is closed. Don't ask me why.&lt;br/&gt;However, I'd say it's a necessary step in the IE saga. IE7 finally has some cutting-edge technology such as &lt;a href="http://www.stilbuero.de/2006/03/15/png-alpha-transparency-fast-and-easy/" target="_blank"&gt;PNG transparency&lt;/a&gt; or full CSS2 compatibility. Some say you can even use it as a browser ;-) So get it and please have some good book with you after you install it and reboot your computer. It will need a few minutes to finalize the installation.&lt;br/&gt;Yay! New toy. I wonder if people will adopt it as fast as I did...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-7512810228212435885?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/7512810228212435885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/10/internet-explorer-7-is-here_25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7512810228212435885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7512810228212435885'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/10/internet-explorer-7-is-here_25.html' title='Internet Explorer 7 is here'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-5481134588201116037</id><published>2006-10-25T00:24:00.001-07:00</published><updated>2010-06-19T09:36:11.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting Linux'/><title type='text'>ext3, chattr +A and a much faster apache file server</title><content type='html'>We love optimizations. We love'em so much that sometimes we dream sweet dreams about our wonderful clients' &lt;a href="http://webpro.mocanu.net/"&gt;high-traffic sites&lt;/a&gt; running with so little system resources that all servers have a 0.01 load.&lt;br/&gt;&lt;br/&gt;Now back to the real world.&lt;br/&gt;&lt;br/&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Having a highly popular website means a lot of traffic and most of the times that's made out of media files - pictures and movies that could be well mirrored on modest machines, no need for those &lt;a target="_blank" href="http://webnet.com.au/2005/09/25/new-dual-opteron-box/trackback/"&gt;Dual Opterons&lt;/a&gt; or even the yummy &lt;a target="_blank" href="http://www.shivaranjan.com/2006/09/07/single-intel-core-2-duo-extreme-vs-two-amd-dual-core-opteron-2220se/trackback/"&gt;Dual Core Intels&lt;/a&gt;.&lt;br/&gt;You can even have use these mirrors for geo-balanced traffic optimizations. The world is yours!&lt;br/&gt;However, you now have a mirror server that's serving thousands of hits per second and lots of small files. No script processing now, it's all about the file system.&lt;br/&gt;&lt;br/&gt;Why on earth would you need to store the file access time of a thousand files every second? Well, my guess is that you wouldn't. But with most common Linux distributions (&lt;a target="_blank" href="http://www.redhat.com/"&gt;Redhat Enterprise&lt;/a&gt;, &lt;a target="_blank" href="http://www.centos.org/"&gt;CentOS&lt;/a&gt;, &lt;a target="_blank" href="http://www.debian.org/"&gt;Debian&lt;/a&gt;, the list is open...) the default file system option is to keep changing the &lt;b&gt;atime&lt;/b&gt; flag (last accessed time).&lt;br/&gt;&lt;br/&gt;For our purpose, this has been a major slow down and a major system load issue. Loads went as high as 20.00 on the 5-minute average and the daily average was about 8. Request response time was around 50-80 milliseconds. Visitors were falling asleep. Google Adsense was stalling.&lt;br/&gt;&lt;br/&gt;Then came one morning and one damn good coffee (my wife insists it was the coffee). You can &lt;b&gt;turn off atime updates&lt;/b&gt; for a file or a directory with &lt;b&gt;chattr +A&lt;/b&gt;. My favorite line for the moment. It comes in more flavours, including &lt;b&gt;chattr -R +A *&lt;/b&gt;. And of course, you can edit your /etc/fstab file and set the &lt;b&gt;noatime&lt;/b&gt; flag for an entire partition.&lt;br/&gt;&lt;br/&gt;Look at the same server now -  daily average load is about 0.80 with peaks at 2.00 for the 1-minute load average (which happens during some batch processing).&lt;br/&gt;&lt;br/&gt;Besides my grandma who needs to know when somebody last opened her cookie box (she does great cookies), who thought atime is useful anyway?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-5481134588201116037?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/5481134588201116037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/10/ext3-chattr-and-much-faster-apache-file_25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5481134588201116037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/5481134588201116037'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/10/ext3-chattr-and-much-faster-apache-file_25.html' title='ext3, chattr +A and a much faster apache file server'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-2133747290419590149</id><published>2006-09-13T22:39:00.001-07:00</published><updated>2010-06-19T09:36:11.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><title type='text'>Custom scrollbar for HTML DIVs</title><content type='html'>What a busy september! What a wonderful month with wonderful new clients! Almost makes me think I'll never have time to post any news here.&lt;br/&gt;But I'm back with a hands-on just-tried review of &lt;a href="http://www.hesido.com/web.php?page=customscrollbar" target="_blank"&gt;FleXcroll&lt;/a&gt; which even has it's own bla blas, you only have to check it to see what it does.&lt;br/&gt;&lt;br/&gt;Oh, but what does it do? Well, it's a tool for webmasters who have time to tickle their sites and use nicer scrollbars. Or for stubborn designers who never heard Scrolling DIV's are bad for SEO business. It's a cute and unexpensive piece of unobfuscated Javascript for custom scrollbar lovers. It's &lt;a href="http://www.hesido.com/web.php?page=customscrollbar" target="_blank"&gt;FleXcroll&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-2133747290419590149?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/2133747290419590149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/09/custom-scrollbar-for-html-divs_13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/2133747290419590149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/2133747290419590149'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/09/custom-scrollbar-for-html-divs_13.html' title='Custom scrollbar for HTML DIVs'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4961683222668966051.post-7715965740172994213</id><published>2006-08-15T16:54:00.001-07:00</published><updated>2010-06-19T09:35:21.120-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Goodies'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting Linux'/><title type='text'>Flash vs. ActiveX Activation - the story, reloaded</title><content type='html'>[This is an obsolete issue. Files updated in June 2010 for update of credentials]&lt;br /&gt;&lt;br /&gt;The problem, as you know it: Microsoft lost a lawsuit and now Internet Explorer is required to have the client click an ActiveX object before it can receive mouse and keyboard events. These events include of course mouse over and click, which makes ActiveX click-activation a two-year-behind leap against the ergonomy of websites.&lt;br /&gt;&lt;br /&gt;But what CAN we do though?&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;My code is below if&amp;nbsp;you know the history and the bla-blas and are the get-it-now kind of person. I know I am.&lt;br /&gt;&lt;br /&gt;Although the object may not initialize itself according to the lawsuit lost by Microsoft, it can be initialized by another entity. Let's say a bit of JavaScript. So most of the scripts focus on creating the object and then copying its outerHTML over an existing object.&lt;br /&gt;&lt;br /&gt;Probably the most popular tool for this is the &lt;a href="http://blog.deconcept.com/swfobject/" target="_blank"&gt;SWFObject&lt;/a&gt; (formerly called FlashObject, but that was another lawsuit waiting to happen). Instead of inserting the object with HTML tags, you create a DIV and then a script sequence puts the activated flash inside. If there is a boo-boo and the user does not have flash or Flash cannot be initialized, you get to show the alternate of the div. It's wonderful up to the point where the code (v1.4.4 at this point) does not properly detect exactly the planet's favorite browser (yet) - Internet Explorer. So you do have the latest version of the flash player, but the flash won't show.&lt;br /&gt;&lt;br /&gt;I managed to find a MUCH simpler version called &lt;a href="http://www.unfocus.com/projects/PatentMagic/" target="_blank"&gt;ObjectPatentMagic&lt;/a&gt; and I tend to stick to it. It's wonderfully small and quite practical and what I like most is that it uses the otherwise weird conditional comments of IE, so "normal" (please read: "other") browsers ignore it.&lt;br /&gt;&lt;br /&gt;However, the code as provided on the website has a weird behaviour when you have more than 1 flash animation in the page, here is &lt;a href="http://draft.blogger.com/post-edit.g?blogID=4961683222668966051&amp;amp;postID=7715965740172994213" name="code" title="code"&gt;&lt;/a&gt;my version.&lt;br /&gt;&lt;br /&gt;Invocation code:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;!--[if IE]&amp;gt;&lt;br /&gt;&amp;lt;style type="text/css" id="ObjectPatentMagic"&amp;gt;object{display:none}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&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: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;script type="text/javascript" src="ObjectPatentMagic.js" defer="defer"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;![endif]--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;ObjectPatentMagic.js:&lt;br /&gt;&lt;blockquote&gt;(code removed - see the file below for the source and credits)&lt;/blockquote&gt;You can download a ZIP with the HTML example and the JS file here: &lt;a href="http://docs.google.com/a/mocanu.net/leaf?id=0B9EQ4sNlbfgcNjRiNDk4MGMtNmE2Ni00ZjYxLTk3NmMtNmFhOTcxOTNjNTQ2" title="ObjectPatentMagic-20060816.zip"&gt;ObjectPatentMagic-20060816.zip&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4961683222668966051-7715965740172994213?l=webwow.mocanu.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://webwow.mocanu.net/feeds/7715965740172994213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://webwow.mocanu.net/2006/08/flash-vs-activex-activation-story_15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7715965740172994213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4961683222668966051/posts/default/7715965740172994213'/><link rel='alternate' type='text/html' href='http://webwow.mocanu.net/2006/08/flash-vs-activex-activation-story_15.html' title='Flash vs. ActiveX Activation - the story, reloaded'/><author><name>Sorin Mocanu</name><uri>http://www.blogger.com/profile/05947385855502477486</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_P960q3CXFF8/SbQ8VhMoBCI/AAAAAAAAKCE/2h7fi3opALI/S220/SorinMocanu.jpg'/></author><thr:total>0</thr:total></entry></feed>
