Annotations – Part 2: Let’s Assert!

Ok, previously we get into conclusion that JDK 5.0 annotation feature can be used for implementing obfuscation safe reflection API usage. What other tricks it could perform. One interesting issue when developing large scale software is to ensure that API specifications are honored properly. Within java language context this means that API spec is strictly…

Read more

To synchronize, or to not

Reading Java VM specification gives interesting insights of the synchronized keyword usage. VM Specification: Threads and Locks For good fun, read chapter 8.11. I.e. … Because there is no synchronization, it is at the option of the implementation whether or not to store the assigned values back to main memory! … This means that if…

Read more

PHP is becoming popular…

At least based into TIOBE Programming Community Index for November 2005 PHP: Documentation PEAR – The PHP Extensions Learning PHP 1 Learning PHP 2 Learning PHP 3 PHPBuilder PHP Editor Review – Review PHP Tutorial PHP Tutorials: The SiteWizard Practical PHP Programming Zend Technologies – PHP Tutorials for Absolute Beginners

Read more

Synchronization of files

Problem: Two different computers, or one computer and transferable storage media (e.g. USB memorystick). Q: How to synchronize files in such case? A: Few possible solutions For Linux/Windows: RSync Unison

Read more

Shutdown KDE via script

From sfnet.atk.linux (Sorry for non-translated text): Q: Onko olemassa komentoa, joka sammuttaa KDE:n ja tietokoneen samalla tavalla kuin toiminto KDE:n valikossa ”K -> Log Out… -> Turn Off Computer”? Ainakin nopeasti ajatellen tuntuisi, että shutdown-komento ei sammuta työpöytää yhtä nätisti. Voit käyttää DCOP:ia[1]: [code lang=”perl”] dcop ksmserver ksmserver saveCurrentSession dcop ksmserver ksmserver logout 0 2…

Read more

Obfuscation safe reflection

Q: How to ensure that code can be obfuscated, but reflection API benefits for action invoking could be used? A: In JDK 5.0 solution exists, just use annotations. So how to do such. 1) Define appropriate annotation [code lang=”java”] @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Call { int value(); } [/code] 2) Define reflection action to use…

Read more