<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>programming &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/programming/</link>
	<description>Feed of posts on WordPress.com tagged "programming"</description>
	<pubDate>Sun, 07 Sep 2008 07:11:35 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Ypsilon 0.9.6 update2 released]]></title>
<link>http://littlewingpinball.wordpress.com/?p=65</link>
<pubDate>Sun, 07 Sep 2008 05:53:08 +0000</pubDate>
<dc:creator>littlewingpinball</dc:creator>
<guid>http://littlewingpinball.wordpress.com/?p=65</guid>
<description><![CDATA[I have uploaded the latest version in which all bugs found to date fixed.
I improved the implementat]]></description>
<content:encoded><![CDATA[<p>I have uploaded the latest version in which all bugs found to date fixed.</p>
<p>I improved the implementation of REPL to make Ypsilon easy to develop top level interactive programs using emacs. Also the style of error messages are  easier to be identified. It has passed all the 8,931 tests in PLT R6RS test suite revision 11530.</p>
<p>-Fujita</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[First day of cakephp workshop in Raleigh, NC]]></title>
<link>http://codeacious.wordpress.com/?p=54</link>
<pubDate>Sun, 07 Sep 2008 02:22:18 +0000</pubDate>
<dc:creator>Corey</dc:creator>
<guid>http://codeacious.wordpress.com/?p=54</guid>
<description><![CDATA[The first day of the cakephp workshop in Raleigh, NC has been absolutely awsome!  I have learned so ]]></description>
<content:encoded><![CDATA[<p>The first day of the cakephp workshop in Raleigh, NC has been absolutely awsome!  I have learned so much more about cakephp 1.2, and I think this has given me a great opportunity to jump ahead of where I would have been learning just on my own.  I can't wait to get back to work and implement the stuff I have learned today!</p>
<p>I also won the 50 euros from the debuggable blog because Felix did not make his post on time!  I am hoping to win it tomorrow to!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[WebKit Integrates Chrome Features]]></title>
<link>http://recycleosphere.wordpress.com/?p=376</link>
<pubDate>Sun, 07 Sep 2008 01:32:21 +0000</pubDate>
<dc:creator>Ploni Almoni</dc:creator>
<guid>http://recycleosphere.wordpress.com/?p=376</guid>
<description><![CDATA[WebKit Integrates Chrome Features: &#8220;The WebKit team is currently busy, integrating the patches]]></description>
<content:encoded><![CDATA[<p><a href="http://osnews.com/story/20260/WebKit_Integrates_Chrome_Features">WebKit Integrates Chrome Features</a>: "The WebKit team is currently busy, integrating the patches made for Google<br />
Chrome into the main WebKit repository. This includes the new V8 JavaScript engine and the Skia graphics library. Most integration work is done by Google employee and WebKit reviewer Eric Seidel. V8 is a fast, BSD licensed JavaScript engine that runs on 32bit x86 and ARM CPUs.<br />
Due that platform restriction, V8 probably won't replace WebKit's new SquirrelFish engine anytime soon as default, because SquirrelFish has broader CPU architecture support. Epiphany developer and WebKit reviewer Alp Toker gives an overview about Skia. Unlike V8, Skia is licensed under the Apache License 2.0. Some of Skia's main features are optional OpenGL-based acceleration, thread-safety, 10,000 less lines of code compared to Cairo, and high portability."</p>
<p>(Via <a href="">OSNews</a>.)</p>
<p><!-- Technorati Tags Start --></p>
<p>Technorati Tags:<br />
<a href="http://technorati.com/tag/Apple" rel="tag">Apple</a>, <a href="http://technorati.com/tag/Chrome" rel="tag">Chrome</a>, <a href="http://technorati.com/tag/Google" rel="tag">Google</a>, <a href="http://technorati.com/tag/JavaScript" rel="tag">JavaScript</a>, <a href="http://technorati.com/tag/WebKit" rel="tag">WebKit</a>, <a href="http://technorati.com/tag/browsers" rel="tag">browsers</a>, <a href="http://technorati.com/tag/Safari" rel="tag">Safari</a>, <a href="http://technorati.com/tag/Konqueror" rel="tag">Konqueror</a>
</p>
<p><!-- Technorati Tags End --></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Gears And Wikipedia Offline]]></title>
<link>http://range.wordpress.com/?p=4393</link>
<pubDate>Sun, 07 Sep 2008 01:27:58 +0000</pubDate>
<dc:creator>range</dc:creator>
<guid>http://range.wordpress.com/?p=4393</guid>
<description><![CDATA[With the latest update to Google Gears, I&#8217;ve acutally had my FF crash multiple times while try]]></description>
<content:encoded><![CDATA[<p>With the latest update to Google Gears, I've acutally had my FF crash multiple times while trying to access Wikipedia by <a href="http://code.google.com/support/bin/answer.py?answer=81101&#38;topic=11982" target="_blank">using the GreaseMonkey script to take Wiki offline</a>. I've disabled the the scripts. No amount of tinkering made it work. Anyone else had this problem? Then again, I never used the script so it's better left uninstalled.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Primitive Type到底是Passing by Reference還是Passing by Value]]></title>
<link>http://jameschu.wordpress.com/?p=37</link>
<pubDate>Sat, 06 Sep 2008 23:52:29 +0000</pubDate>
<dc:creator>jameschu888</dc:creator>
<guid>http://jameschu.wordpress.com/?p=37</guid>
<description><![CDATA[ActionScript的文件寫的不是很清楚,一下子說所有的Data Type都是Passing by Reference,]]></description>
<content:encoded><![CDATA[<p>ActionScript的文件寫的不是很清楚,一下子說所有的Data Type都是Passing by Reference,一下又說,如果遇到Primitive Type,就會透過特別的機制,變成Passing by Value,不管怎麼寫,反正用起來是跟Java的Primitive Type行為一致,只是ActionScript的Primitive Type是Object就是了</p>
<p><!--more--></p>
<p> </p>
<p>Adobe Flex 3 PROGRAMMING ACTIONSCRIPT 3 第78頁</p>
<p>In ActionScript 3.0, all arguments are passed by reference, because all values are stored as objects. However, objects that belong to the primitive data types, which includes Boolean, Number, int, uint, and String, have special operators that make them behave as if they were passed by value.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[XAMPP Lightweight Portable Webserver ]]></title>
<link>http://binary1.wordpress.com/?p=45</link>
<pubDate>Sat, 06 Sep 2008 23:09:46 +0000</pubDate>
<dc:creator>binaryone</dc:creator>
<guid>http://binary1.wordpress.com/?p=45</guid>
<description><![CDATA[
XAMPP is a portable webserver bundled with all kinds of goodies.
* Apache
* MySQL
* PHP + PEAR
* Mi]]></description>
<content:encoded><![CDATA[<p><img src="http://portableapps.com/files/images/screenshots/xampp_small.png" alt="XAMPP" /><br />
XAMPP is a portable webserver bundled with all kinds of goodies.<br />
* Apache<br />
* MySQL<br />
* PHP + PEAR<br />
* MiniPerl<br />
* OpenSSL<br />
* phpMyAdmin<br />
* XAMPP Control Panel<br />
* Webalizer<br />
* Mercury Mail Transport System<br />
* FileZilla FTP Server<br />
* SQLite<br />
* ADODB<br />
* Zend Optimizer<br />
* XAMPP Security</p>
<p>I used XAMPP a few months ago to write a logging application for my current job.  It is lightweight and can be run off of a USB stick.  I recommend it for any developer that is constantly on the run and needs to carry his/her development environment around.  I would not recommend that it be used for production though. click <a href="http://portableapps.com/apps/development/xampp">here </a>to download.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[use screen; ^A-n use screen; ^A-c use screen;]]></title>
<link>http://flashesfromthearchives.wordpress.com/?p=29</link>
<pubDate>Sat, 06 Sep 2008 23:00:41 +0000</pubDate>
<dc:creator>poker-ron</dc:creator>
<guid>http://flashesfromthearchives.wordpress.com/?p=29</guid>
<description><![CDATA[Offical GNU screen site
My advice: use screen. It makes your ssh (or telnet) sessions immune to netw]]></description>
<content:encoded><![CDATA[<p><a href="http://www.gnu.org/software/screen/">Offical GNU screen site</a></p>
<p>My advice: use screen. It makes your ssh (or telnet) sessions immune to network problems. If your connection drops, you can simply log back in again, and carry on whatever you were doing.</p>
<p>I find it incredibly useful. In fact, indispensible. I've edited my .bash_profile file to include the folllowing line:</p>
<blockquote><p>screen -U -D -RR</p></blockquote>
<p>The options mean:</p>
<p>-U: My terminal understands unicode.</p>
<p>-D -RR: If there's at least one current detached screen, attach one of them (the first one?) to this session. Otherwise, if there's at least one <em>attached</em> screen, then detach one of them (the first one?), and attach it to this session. Otherwise, create a new screen.</p>
<p>What it means, in (slightly plainer) English is: Attach me to an existing screen (if one exists). Otherwise, create a new screen.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Esperando a Tiburón (Delphi 2009)]]></title>
<link>http://danielluyo.wordpress.com/?p=7</link>
<pubDate>Sat, 06 Sep 2008 21:56:33 +0000</pubDate>
<dc:creator>danielluyo</dc:creator>
<guid>http://danielluyo.wordpress.com/?p=7</guid>
<description><![CDATA[El muy esperado y ya largamente comentado Delphi 2009 (aka Tiburón) ya está disponible en preventa]]></description>
<content:encoded><![CDATA[<p>El muy esperado y ya largamente comentado Delphi 2009 (aka Tiburón) ya está disponible en preventa y se espera que este disponible en muy pocos dias!!!.</p>
<p>Las más mentadas de las mejoras en esta versión incluyen:</p>
<ul>
<li>Soporte full de Unicode</li>
<li>Generics</li>
<li>Mejoras en la VCL</li>
</ul>
<p>Se espera también que el Help esté mejor que en versiones anteriores</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Organise, and a very wet 2600]]></title>
<link>http://yorksranter.wordpress.com/?p=3547</link>
<pubDate>Sat, 06 Sep 2008 18:33:28 +0000</pubDate>
<dc:creator>yorksranter</dc:creator>
<guid>http://yorksranter.wordpress.com/?p=3547</guid>
<description><![CDATA[So I took my stupid damn idea off to the stupid ideas club. When we got there, guess who? Spyblog wa]]></description>
<content:encoded><![CDATA[<p>So I took my stupid damn <a href="http://yorksranter.wordpress.com/2008/08/31/organise/">idea</a> off to the <a href="http://www.london2600.org.uk/">stupid ideas club</a>. When we got there, guess who? <a href="http://spyblog.org.uk/blog/spyblog/">Spyblog</a> was waiting at the rendezvous with some Dutchmen and an Argentine documentarist and half the No2ID members not currently in hospital. And after we made our way through Jock McZanu's EU Maddie monsoon (GOOD HERE ISN'T IT???) to the pub, who shows up but <a href="http://reverendrat.com/">Rat</a>; carrying a total of 30GB of mass storage on his person in an array of USB drives, a fob GPS, and God knows what in his piercings.</p>
<p>Anyway, we talked over the thing, and many other things besides; what should happen if secret police become members? wouldn't it be easier to do an open-source clone of a BMC helpdesk ticketing app? (why? why? I thought my brain would concrete) how would you sterilise an airport fingerprint reader in less than 10 seconds? So I promised to revise the proposals, and well, here they are.</p>
<p>Or would be, but nobody likes a 2,000 word blog post. So instead it's <a href="http://docs.google.com/Doc?id=ddb95rfv_52fzqmcscm">here on Google Documents</a>, which probably means something badological. Read. Mark. Learn. Inwardly digest. Comment. Here at first, but if you want to take part just tell me and I'll give you write privileges. If anyone cares very much I'll get it set up on Sourceforge and set about preparing a list of functions and tables. I still think Django is the way to go, in which case the mapping of the org model into Python classes into db tables should be as straightforward as these things ever are.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Symbian: Folded descriptor contents, and case-insensitivity]]></title>
<link>http://ayaz.wordpress.com/?p=234</link>
<pubDate>Sat, 06 Sep 2008 17:26:10 +0000</pubDate>
<dc:creator>ayaz</dc:creator>
<guid>http://ayaz.wordpress.com/?p=234</guid>
<description><![CDATA[In Symbian jargon, the term &#8220;folded&#8221; means &#8220;case-insensitive&#8220;. If you grope ]]></description>
<content:encoded><![CDATA[<p>In Symbian jargon, the term "<em>folded</em>" means "<em>case-insensitive</em>". If you grope throughout the Symbian docs and API looking for the term case-insensitive, you will be hard-pressed to find anything. </p>
<p>If you have dabbled with descriptors enough, you may be familiar with methods like <em>Match()</em>, <em>Find()</em>, <em>Compare()</em>, etc. By default, their operations are case-sensitive. However, there are folded variants of these methods available too, for, you guessed it, case-insensitive mode. They have an 'F' attached to the end of their names, such as, <em>MatchF()</em>, <em>FindF()</em>, <em>CompareF()</em>, etc. They work by <em>folding</em> the contents of the descriptors which are their arguments first, and then applying their respective functional semantics on them -- or, simply, for <em>MatchF()</em>, it applies a case-insensitive match operation.</p>
<p>It is not every day that you may need to perform any operation against data without worrying about the case-sensitivity of that data, but when you do, and if you find yourself working with Symbian, you may likely quickly find yourself floundering in the API, without much or any help. </p>
<p>That is just Symbian.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Format of SummaryField of an AdvancedDataGrid]]></title>
<link>http://ricombination.wordpress.com/2008/09/06/format-of-summaryfield-of-an-advanceddatagrid/</link>
<pubDate>Sat, 06 Sep 2008 15:49:35 +0000</pubDate>
<dc:creator>ricombination</dc:creator>
<guid>http://ricombination.wordpress.com/2008/09/06/format-of-summaryfield-of-an-advanceddatagrid/</guid>
<description><![CDATA[I just started using the AdvancedDataGrid with a SummaryRow. The problem was that the numbers in the]]></description>
<content:encoded><![CDATA[<p><img src="http://ricombination.files.wordpress.com/2008/03/flex1.jpeg" alt="flex.jpeg" border="0" width="50" height="49" align="left" />I just started using the <a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/AdvancedDataGrid.html">AdvancedDataGrid</a> with a <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/collections/SummaryField.html">SummaryRow</a>. The problem was that the numbers in the <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/collections/SummaryField.html">SummaryFields</a> were not formatted properly, although the numbers in the data object where 'formatted' with number.toFixed() and were shown properly in the <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.html">AdvancedDataGridColumn</a> . Now, there is no formatting property in the <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/collections/SummaryField.html">SummaryField</a> class.</p>
<p>The easy solution is, to set a <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/formatters/NumberFormatter.html">NumberFormatter</a> in the formatter property of the <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.html">AdvancedDataGridColumn</a> object. The <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/collections/SummaryField.html">SummaryField</a> somehow inherits the format from the <a href="http://www.adobe.us/livedocs/flex/3/langref/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.html">AdvancedDataGridColumn</a> .</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Bergurulah pada masternya]]></title>
<link>http://twelve13.wordpress.com/?p=569</link>
<pubDate>Sat, 06 Sep 2008 15:34:20 +0000</pubDate>
<dc:creator>twelve13</dc:creator>
<guid>http://twelve13.wordpress.com/?p=569</guid>
<description><![CDATA[Saya memang memiliki ebook &#8220;The C++ Programming Language&#8221; karangan Bjarne Stroustrup. Ta]]></description>
<content:encoded><![CDATA[<p>Saya memang memiliki ebook "The C++ Programming Language" karangan Bjarne Stroustrup. Tapi, tahu sendiri kan kalo baca ebook di komputer: melelahkan. Oleh karena itu, hari Jumat kemarin saya meminjam buku ini dari perpustakaan pusat.</p>
<p>Ada yang menarik dari buku ini. Jelas buku ini tidak ditujukan kepad orang-orang yang belum pernah mengenal C++ sebelumnya, apalagi belum mengenal programming. Meskipu saya masih pemula dalam hal pemrograman C++, tapi saya merasa menemukan keasyikan membaca buku ini.</p>
<p>Metode yang disampaikan oleh Bjarne Stroustrup berbeda dengan beberap buku C++ lain yang pernah saya baca. Biasanya, sebuah buku programming akan menerangkan secara terstruktur dari mulai tipe data built-in, lalu iterasi, kondisi dan seterusnya hingga fitur yang lebih kompleks seperti class.</p>
<p>Buku Stroustrup ini tidak menerangkan dengan cara seperti itu. Dia menerangkan dari sebuah potongan kode. Dari sana, dia menjelaskan secara bertahap apa saja arti dari kode tersebut. Jadi, lebih terlihat seperti tutorial. Dan Stroustrup pun menyebutnya seperti itu.</p>
<p>Hal lain yang menarik adalah, membaca buku ini seperti berbincang dengan Stroustrup sebagai pribadi. Bukan karena bahasanya yang interaktif, tapi karena buku ini banyak menerangkan juga pengalaman Stroustrup sebagai pembuat bahasa C++. Banyak pengetahuan yang mungkin tacit menjadi expicit di buku ini. Seperti berguru kepada seorang masternya langsung.</p>
<p>Awal saya belajar C++ dulu sewaktu mendapatkan kuliah Algoritma dan Pemrograman serta Dasar-Dasar Pemrograman. Saya tidak begitu mengerti mengenai pointer. Salah satu asisten dosen menerangkan bahwa simbol &#38; akan menunjukkan ke nilai dari suatu pointer. Pengertian saya mengenai hal ini sangat berkabut.</p>
<p>Nah, Stroustrup di buku ini menyebut bahwa simbol &#38; adalah seperti operator "address of". Tiba-tiba segalanya menjadi terang bagi saya. Saya yakin dulu saya sering melakukan kesalahan dengan meng-assign sebuah nilai ke sebuah pointer. Saya tentu akan mendapat error. Jalan keluarnya adalah dengan menggunakan simbol &#38;. Tapi, saya tidak benar-benar mengerti sebelumnya.</p>
<p>Sekarang saya tahu bahwa ketika saya menuliskan p = &#38;q dengan p adalah sebuah pointer, itu tidak berarti saya mengakses nilai dari q yang notabene bukan pointer.</p>
<p>Yang saya lakukan di sana adalah mengubah pointer p dari nilai asalnya ke alamat dari q. Nah, di sinilah penyebutan simbol &#38; sebagai operator "address of" menjadi terang.</p>
<p>Saya pikir, jika saya meneruskan membaca buku ini, akan banyak sekali pencerahan yang saya dapat. Barusan saja saya mendapatkan pencerahan tentang mengapa bentuk #include &#60;iostream.h&#62; adalah deprecated.</p>
<p>Bagi yang hendak belajar C++, saya sangat merekomendasikan buku ini.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[New hardware!]]></title>
<link>http://robertsundstrom.wordpress.com/?p=344</link>
<pubDate>Sat, 06 Sep 2008 14:52:39 +0000</pubDate>
<dc:creator>Robert</dc:creator>
<guid>http://robertsundstrom.wordpress.com/?p=344</guid>
<description><![CDATA[Two days ago I go I finally got my new motherboard. This time it was working. Thank god for that! I ]]></description>
<content:encoded><![CDATA[<p>Two days ago I go I finally got my new motherboard. This time it was working. Thank god for that! I haven't been able to use my desktop PC in 3 weeks! Yesterday I spent most of the time trying to reinstall Windows Vista because of hardware failure but In the end it worked and I could install other software too.</p>
<p>My current hardware configuration is:</p>
<ul>
<li>AMD Athlon 64 X2 Dual Core Processor 4200+ 2,2 GHz</li>
<li>2 GB RAM (Corsair)</li>
<li>ATI Radeon x1650 Pro Graphics Card for PCI Express with 256 MB RAM.</li>
<li>Sony DVD/RW SATA with LabelFlash technology.</li>
</ul>
<p>and of course some other irrelevant spec.</p>
<p>As I said I had to reinstall the OS which was a bit hard. But I finally accepted although I lost some data. I installed Microsoft Windows Vista with Service Pack 1. It is running perfectly well according to me.</p>
<p>Among the software I have installed you'll find these:</p>
<ul>
<li>Microsoft Visual Studio 2008 with Service Pack 1
<ul>
<li>XNA Game Studio 3.0 CTP</li>
<li>Silverlight 2 SDK and Tools</li>
</ul>
</li>
<li>Microsoft SQL 2008 Express with Tools</li>
<li>Red Gate's .NET Reflector (formerly developed by Lutz Roeder)</li>
<li>Microsoft Office 2008</li>
</ul>
<p>These are the most important programs I have. But iI think that VS is the most important of them all.</p>
<p>Now I have to continue :)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Busy]]></title>
<link>http://garuma.wordpress.com/?p=297</link>
<pubDate>Sat, 06 Sep 2008 14:02:30 +0000</pubDate>
<dc:creator>garuma</dc:creator>
<guid>http://garuma.wordpress.com/?p=297</guid>
<description><![CDATA[Life is pretty hectic these days with the start of a new school semester and the assorted things lik]]></description>
<content:encoded><![CDATA[<p>Life is pretty hectic these days with the start of a new school semester and the assorted things like seeing back friends, integrating the new students and resuming work in student clubs. </p>
<p>As a result the ParallelFx SVN log has been pretty silent (which worried some people). In fact code for MCas and STM is coming along nicely, though not ready for their prime, which is why I keep it in my local branches for the moment. Free hacking time should gradually returns as life settles back to normal.</p>
<p>Also, I'm going to update soon <a href="http://netherilshade.free.fr/mono/parallelfx/">the test packages</a> with the latest bits as part of providing code samples to Google.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Things are getting interesting]]></title>
<link>http://blindgenius.wordpress.com/?p=36</link>
<pubDate>Sat, 06 Sep 2008 13:12:20 +0000</pubDate>
<dc:creator>blindgenius</dc:creator>
<guid>http://blindgenius.wordpress.com/?p=36</guid>
<description><![CDATA[Lately I have not had a lot of time for Olearia, what with my other studies, looking for work and fi]]></description>
<content:encoded><![CDATA[<p>Lately I have not had a lot of time for Olearia, what with my other studies, looking for work and finding time for family stuff too.</p>
<p>I did manage to find some time a few days ago to update (finally) the code which add chapters (these are quicktime chapters, not chapters as such) to the current audio segment.  This will allow the user to specify a duration which they can fast forward (time skip?) through an audio segment by.  This is exactly the same as phrase navigation but with a user defined duration.</p>
<p>Also I had an additional request for Daisy 2.02 books which shows that someone out there (other than me and the other guys in the project) is interested in what we are doing.</p>
<p>I have also found out that although sentence and word navigation are in theory possible that they are rarely if ever used, and no examples of word navigation exist at this point. So without valid test files implimenting these 2 modes will probably not be available any time soon.  The logic will allow for expansion should they become more common.</p>
<p>There were also a whole swag of changes made to the UI (changes of icons, adding toolbars and preferences).</p>
<p>A major thing was to remove all the UI update notification related code and replace it with much simpler<br />
mostly boolean ivars connected to bindings in the UI.</p>
<p>hmm What Else..... umm well guess thats it.</p>
<p>Watch this space or the Repos for further updates and as always feedback  is always appreciated. </p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[delete Operator]]></title>
<link>http://jameschu.wordpress.com/?p=15</link>
<pubDate>Sat, 06 Sep 2008 12:38:51 +0000</pubDate>
<dc:creator>jameschu888</dc:creator>
<guid>http://jameschu.wordpress.com/?p=15</guid>
<description><![CDATA[delete在ActionScript中是保留字(嗯..怎麼會挑一個這麼常用的字眼當保留字), dele]]></description>
<content:encoded><![CDATA[<p>delete在ActionScript中是保留字(嗯..怎麼會挑一個這麼常用的字眼當保留字), delete可以用來刪除物件屬性的reference, 可以刪除<a href="http://jameschu.wordpress.com/2008/09/06/dynamic-class/">Dynamic Class</a>中動態建立的Property與Function expression, 也可以刪除Array中的物件reference</p>
<p><!--more--></p>
<p><span style="font-weight:bold;">delete</span> Operator</p>
<p><span style="font-weight:bold;">Usage</span> delete reference</p>
<p>Destroys the object property specified by reference; the result is true if the property does not exist after the operation completes, and false otherwise. The delete operator returns true if it is called on a nonexistent property or a dynamic property not defined in a class.</p>
<p>The delete operator can fail and return false if the reference parameter cannot be deleted. You cannot delete fixed properties or variables that are declared with the var statement. A fixed property is a variable or method defined in a class definition.</p>
<p>The delete operator cannot be used to destroy a property of a class, unless that class is a dynamic class added at runtime. Properties of sealed classes cannot be destroyed using delete. Set the property to null instead.</p>
<p><span style="font-weight:bold;">Note</span>: You cannot delete an object, but you can make an object eligible for garbage collection by removing all references to the object. The most common reference to an object is a variable that points to it. You can remove such a reference by setting the variable to null. The garbage collector removes any object that has no references.</p>
<p><span style="font-weight:bold;">Operands</span></p>
<p><span style="font-weight:bold;">reference</span>:* - The name of the property to eliminate.</p>
<p><span style="font-weight:bold;">Result </span></p>
<p><span style="font-weight:bold;">Boolean</span> - The value true if the deletion succeeded and false if it failed.</p>
<p><span style="font-weight:bold;">Example</span></p>
<p>The following example deletes a property of an object:<br />
[sourcecode language='jscript']<br />
// create the new object "account"<br />
var account:Object = new Object();<br />
// assign property name to the account<br />
account.name = "Jon";<br />
// delete the property<br />
delete account.name;<br />
trace(account.name); // undefined</p>
<p>// delete a nonexistent property<br />
var fooDeleted:Boolean = delete account.foo;<br />
trace(fooDeleted); // true<br />
[/sourcecode]</p>
<p>The following example deletes the value of an array element, but the value of  the <code>length</code> property is not changed:<br />
[sourcecode language='jscript']<br />
var my_array:Array = new Array();<br />
my_array[0] = "abc"; // my_array.length == 1<br />
my_array[1] = "def"; // my_array.length == 2<br />
my_array[2] = "ghi"; // my_array.length == 3<br />
// my_array[2] is deleted, but Array.length is not changed<br />
delete my_array[2];<br />
trace(my_array.length); // 3<br />
trace(my_array); // abc,def,<br />
[/sourcecode]<br />
The following example shows how the returned Boolean from <code>delete</code> can be used as a condition for future code execution. Note that if an item has  already been deleted, calling <code>delete</code> on the item again will return  <code>false</code>.<br />
[sourcecode language='jscript']<br />
var my_array:Array = [ "abc", "def", "ghi" ];<br />
var deleteWasSuccessful:Boolean</p>
<p>deleteWasSuccessful = delete my_array[0];<br />
if(deleteWasSuccessful) delete my_array[1];<br />
deleteWasSuccessful = delete my_array[0];<br />
if(deleteWasSuccessful) delete my_array[2];</p>
<p>trace(my_array) // outputs: undefined,undefined,ghi<br />
[/sourcecode]</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Menggunakan Swing Look and Feel Nimbus]]></title>
<link>http://ghanoz2480.wordpress.com/?p=215</link>
<pubDate>Sat, 06 Sep 2008 12:18:36 +0000</pubDate>
<dc:creator>ghanoz2480</dc:creator>
<guid>http://ghanoz2480.wordpress.com/?p=215</guid>
<description><![CDATA[Pendahuluan
Pada tutorial ini saya akan menunjukkan perbedaan tampilan GUI (Graphical User Interface]]></description>
<content:encoded><![CDATA[<h3>Pendahuluan</h3>
<p align="justify">Pada tutorial ini saya akan menunjukkan perbedaan tampilan GUI (<em>Graphical User Interface</em>) antara program java yang menggunakan <em>Default look and feel</em> dengan <em>Nimbus look and feel</em> yang merupakan <em>look and feel </em>jenis baru yang <em>cross-platform</em> yang terdapat pada Java SE Update 10 Beta.</p>
<h3>Kenapa Nimbus?</h3>
<p align="justify">Nimbus menyediakan tampilan yang lebih halus (<em>polished look</em>) pada aplikasi yang menggunakannya. Dan karena Nimbus digambar secara keseluruhan dengan menggunakan Java 2D vector graphics, daripada bitmap statis (<em>static bitmap</em>), dan karena ukurannya kecil hanya 56 KB (<em>Kilo Bytes</em>) dan dapat di-<em>render</em> pada resolusi yang berubah-ubah.</p>
<h3>Perbedaan Tampilan</h3>
<p align="justify">Pada gambar di bawah ini ditunjukkan program yang menggunakan Default look and feel atau juga disebut Metal look and Feel.</p>
[caption id="attachment_217" align="aligncenter" width="398" caption="Metal Look and Feel"]<a href="http://ghanoz2480.files.wordpress.com/2008/09/03.jpg"><img class="size-full wp-image-217" title="03" src="http://ghanoz2480.wordpress.com/files/2008/09/03.jpg" alt="Metal Look and Feel" width="398" height="255" /></a>[/caption]
<p align="justify">Tapi sekarang kita ganti look and feel-nya dengan menggunakan Nimbus bandingkan dengan tampilan program yang tadi.</p>
[caption id="attachment_217" align="aligncenter" width="398" caption="Nimbus Look and Feel"]<a href="http://ghanoz2480.files.wordpress.com/2008/09/02.jpg"><img class="size-full wp-image-217" title="03" src="http://ghanoz2480.wordpress.com/files/2008/09/02.jpg" alt="Nimbus Look and Feel" width="398" height="255" /></a>[/caption]
<p align="justify">Atau agar lebih jelas perbedaannya kita lihat gambar di bawah ini:</p>
[caption id="attachment_217" align="aligncenter" width="398" caption="Metal Look and Feel"]<a href="http://ghanoz2480.files.wordpress.com/2008/09/metal.gif"><img class="size-full wp-image-217" title="03" src="http://ghanoz2480.files.wordpress.com/2008/09/metal.gif" alt="Metal Look and Feel" width="398" height="255" /></a>[/caption]
[caption id="attachment_217" align="aligncenter" width="398" caption="Nimbus Look and Feel"]<a href="http://ghanoz2480.files.wordpress.com/2008/09/nimbus.gif"><img class="size-full wp-image-217" title="03" src="http://ghanoz2480.files.wordpress.com/2008/09/nimbus.gif" alt="Nimbus Look and Feel" width="398" height="255" /></a>[/caption]
<h3>Bagaimana Menggunakannya?</h3>
<p align="justify">Untuk menggunakan Nimbus Look and Feel, kita panggil method setLookAndFeel pada class UIManager.</p>
<table border="0" width="100%">
<tbody>
<tr>
<th width="100%" align="center">Potongan kode yang digunakan dalam program</th>
</tr>
<tr>
<td width="100%" align="left"><code><br />
try{<br />
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");<br />
} catch (UnsupportedLookAndFeelException e) {<br />
// handle exception<br />
} catch (ClassNotFoundException e) {<br />
// handle exception<br />
} catch (InstantiationException e) {<br />
// handle exception<br />
} catch (IllegalAccessException e) {<br />
// handle exception<br />
}<br />
</code></td>
</tr>
</tbody>
</table>
<h3>Contoh Program</h3>
<p align="justify">Bila Anda penasaran cobalah program di bawah ini.</p>
<table border="0" width="100%">
<tbody>
<tr>
<th width="100%" align="center">NimbusSwing.java</th>
</tr>
<tr>
<td width="100%" align="left"><code><br />
import java.awt.*;<br />
import java.awt.event.*;<br />
import javax.swing.*;</code></p>
<p>/**<br />
* Using Nimbus Swing Look and Feel<br />
*<br />
* @author M. Ghazali a.k.a ghaNOZ2480<br />
* @version 1.0<br />
*/</p>
<p>public class NimbusSwing extends JFrame implements ActionListener<br />
{<br />
private Container c;<br />
private JButton clickMe;</p>
<p>//--&#62; constructor<br />
public NimbusSwing()<br />
{<br />
// used Nimbus Swing Look&#38;Feel<br />
try<br />
{<br />
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");<br />
}<br />
catch(UnsupportedLookAndFeelException e)<br />
{<br />
// handle exception<br />
}<br />
catch (ClassNotFoundException e)<br />
{<br />
// handle exception<br />
}<br />
catch (InstantiationException e)<br />
{<br />
// handle exception<br />
}<br />
catch (IllegalAccessException e)<br />
{<br />
// handle exception<br />
}</p>
<p>createComponents();<br />
}	// end of constructor<br />
//--&#62; createComponents method<br />
// create the GUI components<br />
private void createComponents()<br />
{<br />
c = getContentPane();<br />
setTitle("Using Nimbus [Swing Look&#38;Feel]");<br />
setBounds(100, 100, 150, 150);<br />
c.setLayout(null);</p>
<p>setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p>
<p>// create the clikMe button<br />
clickMe = new JButton("Click Me");<br />
clickMe.setLocation(40, 40);<br />
clickMe.setSize(clickMe.getPreferredSize());</p>
<p>// add the action listener to object<br />
clickMe.addActionListener(this);</p>
<p>// add the object to the container<br />
c.add(clickMe);<br />
}	// end of createComponents</p>
<p>//--&#62; actionPerformed method<br />
public void actionPerformed(ActionEvent ae)<br />
{<br />
if(ae.getSource().equals(clickMe))<br />
{<br />
JOptionPane.showMessageDialog(this, "Message", "This what you got, when you used Nimbus Swing Look&#38;Feel", JOptionPane.INFORMATION_MESSAGE);<br />
}<br />
}	// end of actionPerformed</p>
<p>//--&#62; start point<br />
public static void main(String args[])<br />
{<br />
NimbusSwing aplikasi = new NimbusSwing();<br />
aplikasi.setVisible(true);<br />
}	// end of main method<br />
}	// end of class NimbusSwing</td>
</tr>
</tbody>
</table>
<h3>Referensi</h3>
<ol>
<li><em>"Nimbus"</em>, <a href="http://java.sun.com/javase/downloads/ea/6u10/nimbus.jsp">http://java.sun.com/javase/downloads/ea/6u10/nimbus.jsp</a></li>
</ol>
<h3>Download</h3>
<ul>
<li><a title="Menggunakan Swing Look and Feel Nimbus" href="http://ghanoz2480.files.wordpress.com/2008/09/ghanoz2480-menggunakan-swing-lookfeel-nimbus.pdf">ghaNOZ2480 - Menggunakan Swing Look and Feel Nimbus (PDF)</a></li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Basic Turns 40!]]></title>
<link>http://raqueeb.wordpress.com/?p=280</link>
<pubDate>Sat, 06 Sep 2008 11:54:41 +0000</pubDate>
<dc:creator>Raqueeb Hassan</dc:creator>
<guid>http://raqueeb.wordpress.com/?p=280</guid>
<description><![CDATA[[Imported from my older programming blog, first published in 6/7/2004]
Make your life extraordinary.]]></description>
<content:encoded><![CDATA[<h6>[Imported from my older programming blog, first published in 6/7/2004]</h6>
<blockquote><p><em>Make your life extraordinary.</em> --- Dead Poets Society</p></blockquote>
<p style="text-align:justify;">Remember BASIC? Recently, Computer world had talked about Basic, originally an acronym for Beginners' All-purpose Symbolic Instruction Code, which turned at the age 40. Good heavens! I still remember those commodore days (yes, it was my friend's C64, he was a games fanatic! Still he is!) ... doing some games programming using GOTO, PRINT, LIST, SAVE, RUN, END etc.</p>
<p style="text-align:justify;">I used to get perplex with those "SYNTAX ERROR" prompts practicing with a basic manual supplied with his commodore. BASIC's GOTO's were somehow easy to relate to when I was a computer newbie. It is just like "go to step X" or "see page X" in those sound and graphics programming. Of course, getting hooked on BASIC was not a good outcome. We used to fight all day! What was the year then? 1984-86? My friend texted me back without replying my query.</p>
<p style="text-align:justify;">The commodore manual has some exciting programming samples like turning C64's keyboard into synthesizer, creating chopper's sound ... etc, etc! It was really a cool machine! "Hmm, was BASIC easy?" I hear you saying that. Okay, here is a sample gw-basic code which produce the blast-off sound of a rocket! Well, you don't have to be a rocket scientist for coding this silly 4 lines!</p>
<blockquote><p>10 REM ****** Rocket Blastoff ********<br />
20 FOR FREQ% = 50 TO 1150 STEP 50<br />
30 SOUND FREQ%,.5<br />
40 NEXT FREQ%<br />
50 END</p></blockquote>
]]></content:encoded>
</item>
<item>
<title><![CDATA[More on __restrict]]></title>
<link>http://assemblyrequired.wordpress.com/?p=14</link>
<pubDate>Sat, 06 Sep 2008 11:30:17 +0000</pubDate>
<dc:creator>Ruskin</dc:creator>
<guid>http://assemblyrequired.wordpress.com/?p=14</guid>
<description><![CDATA[An anonymous commenter asks:
I thought that only compatable types could alias? So for example, an in]]></description>
<content:encoded><![CDATA[<p>An anonymous commenter asks:</p>
<blockquote><p>I thought that only compatable types could alias? So for example, an int array can’t alias a float array, and a CFoo* can’t alias it’s own member?</p></blockquote>
<p>Something to remember about the <tt>__restrict</tt> keyword is that it doesn't affect how the compiler itself aliases pointers: instead, it's about what the compiler can assume you, the progammer, may or may not have aliased. </p>
<p>If there is any chance two pointers alias each other, the compiler is forced to reload the contents of each from memory after <em>every store operation</em>. </p>
<p>In the case of class member functions, the compiler of course knows that different data members of <tt>this</tt> can't alias one another. The issue with MemberFunc in CFoo below isn't whether &#38;m_iBar and &#38;m_iBaz alias one another, but whether <tt>a == &#38;m_iBar</tt>.</p>
<pre>class CFoo
{
public:
	int MemberFunc( int *a, int x );
	int MemberFuncWithRestrict( int * __restrict a, int x );
	int m_iBar;
	int m_iBaz;
};

int CFoo::MemberFunc( int *a, int x )
{
	m_iBar = x;
	*a = 7; // if a == &#38;m_iBar, then m_iBar might be 7 now.
	        // the processor must load it back from memory.
	return m_iBar + *a; // load-hit-store
}</pre>
<p>MemberFunc compiles to something like:</p>
<pre>; int CFoo::MemberFunc( int *a, int b );
; by convention, CFoo * this is on register 3,
; int *a is on register 4, and
; x is on register 5
li r10,7       ; set r10 to 7
stw  r5,0(r3)  ; store r11 to this-&#62;m_iBar
stw  r10,0(r4) ; store r10 through pointer a
; now, because a might or might not point to m_iBar,
; we need to load back the contents of m_iBar just in case.
; the compiler *cannot* assume that a != &#38;m_iBar, and
; the load below will stall until the previous store to
; m_iBar is completely finished -- at least forty cycles!
lwz r11,0(r3)  ; load this-&#62;m_iBar from memory to r11
add r3,r11,r10 ; r3 = r11 + r10
blr            ; return r3
</pre>
<p>Now, if we use the <tt>__restrict</tt> keyword to promise the compiler that  <tt>a</tt> doesn't alias anything under <tt>this</tt> &#8212; in particular, that <tt>a != &#38;m_iBar</tt>, it can make some assumptions and avoid loading m_iBar back from memory after it has been stored:</p>
<pre>
int CFoo::MemberFuncWithRestrict( int * __restrict a, int x ) __restrict
{
	m_iBar = x;
	*a = 7; // __restrict THIS promises that a != &#38;m_iBar
	return m_iBar + *a; // no load-hit-store
}</pre>
<p> compiles to
<pre>
li r10,7        ; set r10 to 7
stw r5,0(r3)    ; store r5 to this-&#62;m_iBar
stw r10,0(r4)   ; store r10 through pointer a
;; because the compiler knows that the write to a
;; cannot affect the contents of m_iBar, there is
;; no need for it to load m_iBar back into memory;
;; the store above cannot have changed it
add r3, r5, r10 ; r3 = r5 + r10
blr             ; return r3
</pre>
<p>This function runs much faster, avoiding the load-hit store on reading back m_iBar, but <em>it is only correct so long as the promise is true</em>. If you call the function like this:</p>
<pre>
CFoo foo;
out = foo.MemberFuncWithRestrict( &#38;foo.m_iBar, 5 );
</pre>
<p><em>you will get incorrect results</em>, in this case a return value of 12 instead of 14.</p>
<p>Even if two pointers are different types, the compiler still has no way of knowing whether they actually point to different locations in memory. </p>
<div style="padding-left:1em;"><b>EDIT</b>: the following section is only true if your compiler does not have <a href="http://xania.org/200712/cpp-strict-aliasing">strict aliasing</a> turned on. In GCC &#62;=4 it is on by default unless you specify -f-no-strict-aliasing. In MSVC it is off by default and I could not find how to turn it on. <a href="http://www.cellperformance.com/mike_acton/2006/06/understanding_strict_aliasing.html">Mike Acton discusses strict aliasing in great detail here</a>. Thanks, <a href="http://zeuxcg.blogspot.com/">Arseny</a>!</div>
<p>For example, consider the function</p>
<pre>float slow( int *a, float *b )
{
	*a = 5;
	*b = 7.0;
	return *a+*b;
}</pre>
<p>This function could be called from a different cpp in a way that aliased the pointers to the same location:</p>
<pre>int foo[8]; float bar[8];
bar[0] = slow( foo + 0, bar + 0 ); // pointers are not aliased
foo[0] = slow( foo + 1, (float *)(foo + 1) ); // pointers are aliased</pre>
<p>Granted, this is a contrived example, but also one that's completely legal. It underscores how the compiler can't make any assumptions about pointer aliasing unless you hold its hand. Even though a and b are different types, the <em>programmer</em> can still deliberately alias them. The function <tt>slow</tt> above compiles to something like this on the PowerPC:</p>
<pre>
; assembly for float slow( int *a, float *b )
; by convention, parameter a is stored on r3 and parameter b on r4.
lis r11,__real@40e00000 ; load address of constant 7.0f
li           r10,5     ; load 5 onto r10
stw          r10,0(r3) ; save r10 through pointer a
lfs          fr0,__real@40e00000(r11) ; load 7.0f onto fr0
stfs         fr0,0(r4) ; save 7.0f through pointer b
;; the following line causes the load-hit store:
;; because a and b might be aliased, the compiler must
;; now load back through pointer a in case the write to
;; b overwrote its contents!
;; the following instruction will cause a pipeline stall.
lwz          r9,0(r3)    ; load integer pointed to by a
std          r9,-10h(r1) ; convert it to a float and save to memory
;; here is another load-hit-store: most processors have no way
;; to move data between integer and floating point registers
;; other than by saving to memory and loading back again.
;; this load will stall the pipeline:
lfd          fr13,-10h(r1) ; load from that address again into fr13
fadds        fr1,fr13,fr0  ; add a and b and
blr                        ; return on fr1
</pre>
<p>This simple function has <em>two</em> load hit store stalls, each of which stalls the processor for the entire length of the pipeline. By contrast, if we write our function like this:</p>
<pre>float slowWithRestrict( int * __restrict a, float * __restrict b )
{
	*a = 5;
	*b = 7.0;
	return *a+*b;
}</pre>
<p>... then we will get incorrect results if <tt>a</tt> and <tt>b</tt> happen to point to the same address, but in every other case it will avoid stalls completely. This is because we have promised the compiler that the write to <tt>b</tt> cannot possibly overwrite the contents of <tt>*a</tt>, <em>something it could not know otherwise</em>. It compiles to something like this:</p>
<pre>; assembly for float slowWithRestrict( )
; pointer a is on r3. pointer b is on r4.
lis r10,__real@40e00000 ; load address of constant "7.0f" to r10
lis r11,__real@41400000 ; load address of constant "12.0f" to r11
li  r9,5                ; set r9 to "5"
stw r9,0(r3)            ; store r9 through pointer a
lfs fr0,__real@40e00000(r10) ; load constant "7.0" from memory onto fr0
lfs fr1,__real@41400000(r11) ; load constant "12.0" from memory onto fr1
stfs fr0,0(r4)          ; store fr0 through pointer b
blr                     ; return fr1
</pre>
<p>No load-hit-stores at all.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Dynamic Class]]></title>
<link>http://jameschu.wordpress.com/?p=5</link>
<pubDate>Sat, 06 Sep 2008 10:42:00 +0000</pubDate>
<dc:creator>jameschu888</dc:creator>
<guid>http://jameschu.wordpress.com/?p=5</guid>
<description><![CDATA[ActionScript提供的Dynamic Class功能, 可以在程式執行時期, 可以動態的&#8221;增加]]></description>
<content:encoded><![CDATA[<p>ActionScript提供的Dynamic Class功能, 可以在程式執行時期, 可以動態的"增加"Class的Property與Method, 但是使用上有幾個限制</p>
<ul>
<li>ActionScript的Class預設是Sealed Class(也就是不能動態增加Property與Method), 必須加上dynamic關鍵字, 才能讓Class具備Dynamic Class能力</li>
<li>動態增加的Property與Method, 無法存取Class的Private成員</li>
<li>動態增加的Property, 無法使用Annotation</li>
<li>動態增加的Method, 存取Class的Public成員時, 必須透過this或Class名稱來存取</li>
</ul>
<p><!--more--><br />
宣告一個Dynamic Class<br />
[sourcecode language='jscript']<br />
dynamic class Protean<br />
{<br />
    private var privateGreeting:String = "hi";<br />
    public var publicGreeting:String = "hello";</p>
<p>    function Protean()<br />
    {<br />
        trace("Protean instance created");<br />
    }<br />
}<br />
[/sourcecode]</p>
<p>動態增加Property<br />
[sourcecode language='jscript']<br />
var myProtean:Protean = new Protean();<br />
myProtean.aString = "testing";<br />
myProtean.aNumber = 3;<br />
trace(myProtean.aString, myProtean.aNumber); // testing 3<br />
[/sourcecode]</p>
<p>動態增加Method<br />
[sourcecode language='jscript']<br />
myProtean.traceProtean = function ()<br />
{<br />
    trace(this.aString, this.aNumber);<br />
};<br />
myProtean.traceProtean(); // testing 3<br />
[/sourcecode]</p>
<p>動態Method, 存取Class成員<br />
[sourcecode language='jscript']<br />
myProtean.traceProtean = function ()<br />
{<br />
trace(myProtean.privateGreeting); // undefined  不能存取<br />
trace(myProtean.publicGreeting); // hello<br />
};<br />
myProtean.traceProtean();<br />
[/sourcecode]</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Cum sa scrii cod nementenabil - demential]]></title>
<link>http://andreir.wordpress.com/?p=442</link>
<pubDate>Sat, 06 Sep 2008 10:35:44 +0000</pubDate>
<dc:creator>Andrei Rinea</dc:creator>
<guid>http://andreir.wordpress.com/?p=442</guid>
<description><![CDATA[Pe StackOverflow.com citeam (varianta beta - cea oficiala va iesi pe la mijlocul lui Septembrie (200]]></description>
<content:encoded><![CDATA[<p>Pe StackOverflow.com citeam (varianta beta - cea oficiala va iesi pe la mijlocul lui Septembrie (2008)) despre ce articole considera cititorii drept cele mai utile pentru cariera lor de programatori. Ei bine am dat de un articol recomandat care sincer mi s-a parut demential!</p>
<p><a href="http://freeworld.thc.org/root/phun/unmaintain.html" target="_blank">How To Write Unmaintainable Code</a> scris de Roedy Green.</p>
<p>Este un contraexemplu lung si bine structurat, acopera cam toate prostiile pe care le fac voit sau nevoit programatorii mediocrii si cei prosti. Este o combinatie excelenta intre umor si disciplinare.</p>
<p>In principiu va las sa cititi articolul original, la adresa de mai sus insa va voi spicui cateva fragmente ce m-au facut sa rad ca prostu' in fata monitorului pe la 4 dimineata cand il citeam :</p>
<p>O mica introducere asupra scopului lucrarii :</p>
<blockquote><p>In the interests of creating employment opportunities in the Java programming field, I am passing on these tips from the masters on how to write <strong><em>code that is so difficult to maintain, that the people who come after you will take years to make even the simplest changes</em></strong>. Further, if you follow all these rules religiously, you will even <strong><em>guarantee yourself a lifetime of employment, since no one but you has a hope in hell of maintaining the code.</em></strong> Then again, if you followed all these rules religiously, even you wouldn't be able to maintain the code!</p></blockquote>
<p>Apoi ajungem la detalii mai concrete :</p>
<blockquote><p><strong> Be Abstract</strong><br />
In naming functions and variables, make heavy use of abstract words like it, everything, data, handle, stuff, do, routine, perform and the digits e.g. routineX48, PerformDataFunction, DoIt, HandleStuff and do_args_method.</p></blockquote>
<p>Ne plimbam prin notiuni mai abstracte iar :</p>
<blockquote><p>Programmers are lulled into complacency by conventions. By every once in a while, by <em><strong>subtly </strong>violating</em> convention, you force him to read every line of your code with a magnifying glass.<br />
You might get the idea that every language feature makes code unmaintainable -- not so, <em><strong>only if properly misused</strong></em>.</p></blockquote>
<p>Conventiile de notare par sa fie un lait-motiv :</p>
<blockquote><p><strong> Bedazzling Names</strong><br />
Choose variable names with irrelevant emotional connotation. e.g.:<br />
marypoppins = (superman + starship) / god;<br />
This confuses the reader because they have <em>difficulty disassociating the emotional connotations of the words from the logic they're trying to think </em>about.</p></blockquote>
<blockquote><p><strong>Reuse of Global Names as Private</strong><br />
Declare a global array in module A, and a private one of the same name in the header file for module B, so that it appears that it's the global array you are using in module B, but it isn't. Make no reference in the comments to this duplication.</p></blockquote>
<p>O chestie pentru care mi s-ar parea normal sa faci puscarie :</p>
<blockquote><p><strong> Overload new</strong><br />
Overload the "new" operator - much more dangerous than overloading the +-/*. This can cause total havoc if overloaded to do something different from it's original function (but vital to the object's function so it's very difficult to change). This should ensure users trying to create a dynamic instance get really stumped. You can combine this with the case sensitivity trickalso have a member function, and variable called "New".</p></blockquote>
<p>O perla permanent valabila :</p>
<blockquote><p><strong> Clone &#38; Modify</strong><br />
In the name of efficiency, use cut/paste/clone/modify. This works much faster than using many small reusable modules. This is especially useful in shops that measure your progress by the number of lines of code you've written.</p></blockquote>
<p>Traznai nemaiauzite (de mine macar) :</p>
<blockquote><p><strong> Use Three Dimensional Arrays</strong><br />
Lots of them. Move data between the arrays in convoluted ways, say, filling the columns in arrayB with the rows from arrayA. <em>Doing it with an offset of 1, for no apparent reason, is a nice touch. Makes the maintenance programmer nervous.</em></p></blockquote>
<p>Daca nici acum nu v-am convins <a href="http://freeworld.thc.org/root/phun/unmaintain.html" target="_blank">sa cititi intreg articolul</a> atunci va pot asigura ca ce am pus aici nu e nici macar 5% din ce puteti gasi acolo.</p>
]]></content:encoded>
</item>

</channel>
</rss>
