<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Zendlab - Death and Rebirth</title>
    <link>http://zend.lojcomm.com.br</link>
    <description>Zendlab - Death and Rebirth Feed</description>
    <language>en-us</language>
    <generator>Symphony (build 1701)</generator>
    <item>
      <title>HOWTO: Mount Windows Share in Linux</title>
      <link>http://zend.lojcomm.com.br/entries/howto-mount-windows-share-in-linux/</link>
      <pubDate>Fri, 11 Nov 2011 06:56:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/howto-mount-windows-share-in-linux/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;samba&lt;/code&gt; and &lt;code&gt;smbfs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make folder &lt;code&gt;/mnt/share&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make file &lt;code&gt;/etc/cifspw&lt;/code&gt; and fill it with &lt;code&gt;username=&lt;/code&gt; and &lt;code&gt;password=&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ sudo chmod 600 /etc/cifspw&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;/etc/fstab&lt;/code&gt;: &lt;code&gt;//ip/share /mnt/share cifs exec,credentials=/etc/cifspw 0 0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ sudo mount -a&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>HOWTO: Restore GRUB after installing windows</title>
      <link>http://zend.lojcomm.com.br/entries/howto-restore-grub-after-installing-windows/</link>
      <pubDate>Tue, 10 May 2011 19:14:28 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/howto-restore-grub-after-installing-windows/</guid>
      <description>&lt;p&gt;Yesterday my notebook (which came with Windows 7) simply went to a boot loop unless I change to OS to Linux o_O. Since reinstalling Windows 7 messes the whole MBR, a GRUB restore is required to get the multiboot back to work. These are the steps to get it working again:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Boot with a LiveCD and in places, click the original grub partition get it mounted.&lt;/li&gt;
&lt;li&gt;Open the terminal.&lt;/li&gt;
&lt;li&gt;Verify if it's the right partition &lt;code&gt;$ mount | tail -1&lt;/code&gt;. Something like &lt;code&gt;/dev/sda5 on /media/0d104aff-ec8c-44c8-b811-92b993823444 type ext4 (rw,nosuid,nodev,uhelper=devkit)&lt;/code&gt; will be returned.&lt;/li&gt;
&lt;li&gt;To make sure this is indeed the Ubuntu boot partition, run &lt;code&gt;$ ls /media/0d104aff-ec8c-44c8-b811-92b993823444/boot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;To restore the grub type &lt;code&gt;$ sudo grub-install --root-directory=/media/0d104aff-ec8c-44c8-b811-92b993823444 /dev/sda --recheck&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reboot and enjoy!&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>HOWTO: Remove a parsers from ctags</title>
      <link>http://zend.lojcomm.com.br/entries/howto-remove-a-parsers-from-ctags/</link>
      <pubDate>Thu, 31 Mar 2011 21:20:21 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/howto-remove-a-parsers-from-ctags/</guid>
      <description>&lt;p&gt;Sometimes it's useful to remove a language parser from the ctags binary. Specially if you are extending it via ctags.conf file. You will need to remove the language bindings at &lt;code&gt;parsers.h&lt;/code&gt; (one line here) and &lt;code&gt;source.mak&lt;/code&gt; (two lines here), then just recompile the code to get the parsers away.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HOWTO: Recover IUSR and IWAN</title>
      <link>http://zend.lojcomm.com.br/entries/howto-recover-iusr-and-iwan/</link>
      <pubDate>Fri, 25 Mar 2011 15:53:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/howto-recover-iusr-and-iwan/</guid>
      <description>&lt;p&gt;Today I faced a very interesting problem: How to set back a site, in Windows 2003, to anonymous access once its password has been accidentally changed in the Directory Security?&lt;/p&gt;

&lt;p&gt;Besides the very intriguing fact of "How could someone do that?!", it's equally fascinating that just clicking "Enable anonymous access" and leaving the password field empty won't bring your site back. Neither using "guest" nor "anonymous".&lt;/p&gt;

&lt;p&gt;What's going on here is that some Windows account passwords are set automatically and are never known. Once you have them out of sync you have a  "Oh, man!" kind of big problem since your customer is calling all the time asking: "Why my password is asking for user and password?! WHY WHY WHY?!".&lt;/p&gt;

&lt;p&gt;Fixing this is easy but a little tricky. Here are the steps:&lt;/p&gt;

&lt;p&gt;1 -- Open &lt;code&gt;C:InetpubAdminScriptsadsutil.vbs&lt;/code&gt; and search for the function &lt;code&gt;IsSecureProperty&lt;/code&gt;. It should be something like:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="kw2"&gt;Function&lt;/span&gt; IsSecureProperty&lt;span class="br0"&gt;(&lt;/span&gt;ObjectParameter,MachineName&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;On&lt;/span&gt; &lt;span class="kw1"&gt;Error&lt;/span&gt; &lt;span class="kw1"&gt;Resume&lt;/span&gt; &lt;span class="kw1"&gt;Next&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;Dim&lt;/span&gt; PropObj,Attribute&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;Set&lt;/span&gt; PropObj &lt;span class="sy0"&gt;=&lt;/span&gt; GetObject&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"IIS://"&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; MachineName &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; &lt;span class="st0"&gt;"/schema/"&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; ObjectParameter&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;If&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;Err.&lt;span class="me1"&gt;Number&lt;/span&gt; &lt;span class="sy0"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="kw1"&gt;Then&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ReportError &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WScript.&lt;span class="me1"&gt;Echo&lt;/span&gt; &lt;span class="st0"&gt;"Error trying to get the property: "&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; err.&lt;span class="me1"&gt;number&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WScript.&lt;span class="me1"&gt;Quit&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;Err.&lt;span class="me1"&gt;Number&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;End&lt;/span&gt; &lt;span class="kw1"&gt;If&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Attribute &lt;span class="sy0"&gt;=&lt;/span&gt; PropObj.&lt;span class="me1"&gt;Secure&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;If&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;Attribute &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;True&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="kw1"&gt;Then&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsSecureProperty &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;True&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;Else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsSecureProperty &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;False&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;End&lt;/span&gt; &lt;span class="kw1"&gt;If&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kw1"&gt;End&lt;/span&gt; &lt;span class="kw2"&gt;Function&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;2 -- Edit it &lt;strong&gt;TEMPORARILY&lt;/strong&gt; to always return &lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="kw2"&gt;Function&lt;/span&gt; IsSecureProperty&lt;span class="br0"&gt;(&lt;/span&gt;ObjectParameter,MachineName&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' Dim PropObj,Attribute&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' Set PropObj = GetObject("IIS://" &amp;amp; MachineName &amp;amp; "/schema/" &amp;amp; ObjectParameter)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' If (Err.Number &amp;lt;&amp;gt; 0) Then&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' ReportError ()&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' WScript.Echo "Error trying to get the property: " &amp;amp; err.number&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' WScript.Quit (Err.Number)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' End If&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' Attribute = PropObj.Secure&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' If (Attribute = True) Then&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' IsSecureProperty = True&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' Else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' IsSecureProperty = False&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;' End If&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; IsSecureProperty &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;False&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kw1"&gt;End&lt;/span&gt; &lt;span class="kw2"&gt;Function&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;3 -- Now your are ready to retrieve the built-in anonymous password by using the following command:&lt;/p&gt;

&lt;div class="code"&gt;cscript adsutil.&lt;span class="me1"&gt;vbs&lt;/span&gt; &lt;span class="kw1"&gt;get&lt;/span&gt; w3svc&lt;span class="sy0"&gt;/&lt;/span&gt;anonymoususerpass&lt;/div&gt;

&lt;p&gt;4 -- or the IWAN password by using:&lt;/p&gt;

&lt;div class="code"&gt;cscript adsutil.&lt;span class="me1"&gt;vbs&lt;/span&gt; &lt;span class="kw1"&gt;get&lt;/span&gt; w3svc&lt;span class="sy0"&gt;/&lt;/span&gt;wamuserpass&lt;/div&gt;

&lt;p&gt;5 -- &lt;strong&gt;Remove the adsutil.vbs modifications&lt;/strong&gt; and set the password in the Directory Security.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If instead of using get to retrieve the built-in password, you think it's better to set a new password, you may use the &lt;code&gt;set&lt;/code&gt; command and after that you should run &lt;code&gt;cscript synciwam.vbs -v&lt;/code&gt; to sync up the new password in all the services.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it! And... yeah, the blog is not dead xD&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing gedit with autocomplete 0.11.0 in windows 7</title>
      <link>http://zend.lojcomm.com.br/entries/installing-gedit-with-autocomplete-0110-in-windows/</link>
      <pubDate>Tue, 01 Feb 2011 01:12:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/installing-gedit-with-autocomplete-0110-in-windows/</guid>
      <description>&lt;p&gt;Many developers that use the &lt;a href="http://www.gnome.org/" title="GNOME"&gt;GNOME&lt;/a&gt; desktop environment already know how powerful, yet lightweight, it's official text editor &lt;a href="http://projects.gnome.org/gedit/"&gt;gedit&lt;/a&gt; is. Unlike Windows notepad, GNOME gedit comes with a lot of little customizable options and a very flexible plugins system which really makes the programmers day by day a lot better.&lt;/p&gt;

&lt;p&gt;But what most of the users don't know is that both &lt;a href="http://ftp.gnome.org/pub/GNOME/binaries/mac/gedit/" title="gedit for mac"&gt;Mac&lt;/a&gt; and &lt;a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/" title="gedit for windows"&gt;Windows&lt;/a&gt; can run gedit using the packages made by it's own core developers. This means that no matter what OS you are running, you have in gedit a good choice of text editor to work with.&lt;/p&gt;

&lt;h2&gt;What is gedit&lt;/h2&gt;

&lt;p&gt;According to the project page:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;gedit is the official text editor of the GNOME desktop environment.&lt;/p&gt;
  
  &lt;p&gt;While aiming at simplicity and ease of use, gedit is a powerful general purpose text editor.
  Currently it features:&lt;/p&gt;
  
  &lt;ul&gt;
  &lt;li&gt;Full support for internationalized text (UTF-8)&lt;/li&gt;
  &lt;li&gt;Configurable syntax highlighting for various languages (C, C++, Java, HTML, XML, Python, Perl and many others)&lt;/li&gt;
  &lt;li&gt;Undo/Redo&lt;/li&gt;
  &lt;li&gt;Editing files from remote locations&lt;/li&gt;
  &lt;li&gt;File reverting&lt;/li&gt;
  &lt;li&gt;Print and print preview support&lt;/li&gt;
  &lt;li&gt;Clipboard support (cut/copy/paste)&lt;/li&gt;
  &lt;li&gt;Search and replace&lt;/li&gt;
  &lt;li&gt;Go to specific line&lt;/li&gt;
  &lt;li&gt;Auto indentation&lt;/li&gt;
  &lt;li&gt;Text wrapping&lt;/li&gt;
  &lt;li&gt;Line numbers&lt;/li&gt;
  &lt;li&gt;Right margin&lt;/li&gt;
  &lt;li&gt;Current line highlighting&lt;/li&gt;
  &lt;li&gt;Bracket matching&lt;/li&gt;
  &lt;li&gt;Backup files&lt;/li&gt;
  &lt;li&gt;Configurable fonts and colors&lt;/li&gt;
  &lt;li&gt;A complete online user manual&lt;/li&gt;
  &lt;/ul&gt;
  
  &lt;p&gt;gedit features also a flexible plugin system which can be used to dynamically add new advanced features to gedit itself.&lt;/p&gt;
  
  &lt;p&gt;The following table lists the plugins distributed with the gedit package:&lt;/p&gt;
  
  &lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Change case&lt;/strong&gt;: Changes the case of the selected text.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Document statistics&lt;/strong&gt;: Counts the number of lines, words, characters with spaces, characters without spaces, and bytes in the current file. The plugin displays the results in a Document Statistics dialog.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;External tools&lt;/strong&gt;: Run external programs and displays the resulting output.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;File browser pane&lt;/strong&gt;: Browse and open files directly from the gedit side pane.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Indent lines&lt;/strong&gt;: Indents the selected lines, or removes the indentation from the selected lines.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Insert date/time&lt;/strong&gt;: Inserts the current date and time into a file.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Snippets&lt;/strong&gt;: Expands customizable macros to commonly used code blocks.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sort&lt;/strong&gt;: Sorts the selected text.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Spell checker&lt;/strong&gt;: Checks the spelling in the selected text. You can configure gedit to check the spelling automatically, or you can check the spelling manually, in the specified language.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tag list&lt;/strong&gt;: Displays in the sidepane a list of common tags to insert into a file.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;User name&lt;/strong&gt;: Inserts the name of the current user into the file.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;But the windows package also includes the official &lt;code&gt;gedit-plugins&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Session Saver&lt;/strong&gt;: Save and restore your working sessions&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Smart Spaces&lt;/strong&gt;: Forget you're not using tabulations.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Embedded Terminal&lt;/strong&gt;: Embed a terminal in the bottom pane.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Code comment&lt;/strong&gt;: Comment out or uncomment a selected block of code.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bracket Completion&lt;/strong&gt;: Automatically adds closing brackets.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Show/Hide Tabbar&lt;/strong&gt;: Add a menu entry to show/hide the tabbar.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Color Picker&lt;/strong&gt;: Pick a color from a dialog and insert its hexadecimal representation.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Draw Spaces&lt;/strong&gt;: Draw Spaces and Tabs&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Join/Split Lines&lt;/strong&gt;: Join several lines or split long ones&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Character Map&lt;/strong&gt;: Insert special characters just by clicking on them.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ok, that said, I'm going to write this small guide below:&lt;/p&gt;

&lt;h2&gt;How to install gedit with autocomplete for Windows 7&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download: &lt;a href="http://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/" title="gedit for windows"&gt;gedit for windows&lt;/a&gt;, &lt;a href="http://www.activestate.com/activepython/downloads/" title="activestate python"&gt;ActiveState Python x86&lt;/a&gt; and &lt;a href="https://github.com/nagaozen/gedit-plugin-autocomplete/" title="gedit autocomplete"&gt;gedit-plugin-autocomplete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install both gedit and ActiveState Python.&lt;/li&gt;
&lt;li&gt;Because autocomplete plugin requires a json interpreter and the python which comes with gedit doesn't features the json package, we need to copy the json package from the activestate install to the gedit install. In a command prompt, type:&lt;br /&gt;
&lt;code&gt;Copy C:\Python27\Lib\json "C:\Program Files (x86)\gedit\bin\Lib\"&lt;/code&gt;.  &lt;/li&gt;
&lt;li&gt;Extract the &lt;code&gt;gedit-plugin-autocomplete&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Move &lt;code&gt;autocomplete&lt;/code&gt; folder and &lt;code&gt;autocomplete.gedit-plugin&lt;/code&gt; file to &lt;code&gt;C:\Program Files (x86)\gedit\lib\gedit-2\plugins\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open gedit, go &lt;code&gt;Edit &amp;gt; Preferences&lt;/code&gt; and click &lt;code&gt;Plugins&lt;/code&gt; tab.&lt;/li&gt;
&lt;li&gt;Check everything XD&lt;/li&gt;
&lt;li&gt;Plugins should be alright, but you can also modify additional stuff in the other tabs (View, Editor and Font &amp;amp; Colors)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;p&gt;To check if the autocomplete is running, create a new document, set the language to ASP and type:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="sy1"&gt;&amp;lt;%&lt;/span&gt;&lt;br/&gt;
&amp;nbsp;&lt;br/&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; Parser &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;set&lt;/span&gt; Parser &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;new&lt;/span&gt; Markdown&lt;br/&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; Parser. &lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;Now, set the prompt at the end of the word &lt;code&gt;Parser.&lt;/code&gt;, erase the dot and type it again. A pop-up with the following contents should appear:&lt;/p&gt;

&lt;p&gt;&lt;img src="/workspace/img/installing-gedit-with-autocomplete-0110-in-windows/preview.png" alt="gedit-autocomplete-0.11.0-windows" /&gt;&lt;/p&gt;

&lt;p&gt;That's it, enjoy!&lt;/p&gt;</description>
    </item>
    <item>
      <title>JSON to XML</title>
      <link>http://zend.lojcomm.com.br/entries/json-to-xml/</link>
      <pubDate>Sun, 22 Aug 2010 07:20:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/json-to-xml/</guid>
      <description>&lt;p&gt;Today I'm officially augmenting my &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp"&gt;JSON2.ASP&lt;/a&gt; class with a &lt;code&gt;toXML&lt;/code&gt; method which takes a Javascript object with &lt;a href="http://json.org"&gt;JSON&lt;/a&gt; notation and returns it's XML version. My algorithm is a very fast implementation of the prof. Stefan Gössner bijective transformation between JSON and XML exposed in this &lt;a href="http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Example&lt;/h2&gt;

&lt;p&gt;This javascript:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; nagaozen &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; full_name&lt;span class="sy0"&gt;:&lt;/span&gt;&lt;span class="st0"&gt;"Fabio Zendhi Nagao"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; nickname&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"nagaozen"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; gender&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"male"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; age&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="nu0"&gt;27&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; title&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"Founder &amp;amp; CTO - Evolved"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; education&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"@active"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; technical&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"Federal Technique School of Sao Paulo"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; degree&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"Technical data processing"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final_work&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"E-commerce framework"&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; undergraduate&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"University of Sao Paulo"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; degree&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"BSc. Applied and Computational Mathematician"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thesis&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"Mathematical Modeling of Collective Intelligence"&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; graduate&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"University of Sao Paulo"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; degree&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"MSc. Computing Science"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thesis&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"unknown"&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; likes&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="st0"&gt;"Manoela"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;"Family (dogs included)"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;"Internet"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;"Programming"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;"Design"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; &lt;span class="st0"&gt;"Philosophy"&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; dislikes&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; a_few_aliens_i_know&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; contact&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"nagaozen[at]evolved.com.br"&lt;/span&gt;&lt;br/&gt;
&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp;&lt;/div&gt;

&lt;p&gt;is converted into this XML:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;"1.0"&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;human&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;full_name&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Fabio Zendhi Nagao&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/full_name&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;nickname&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;nagaozen&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/nickname&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;gender&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;male&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/gender&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;age&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;27&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/age&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Founder &lt;span class="sc1"&gt;&amp;amp;amp;&lt;/span&gt; CTO - Evolved&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;education&lt;/span&gt; &lt;span class="re0"&gt;active&lt;/span&gt;=&lt;span class="st0"&gt;"true"&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;technical&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Federal Technique School of Sao Paulo&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Technical data processing&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;final_work&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;E-commerce framework&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/final_work&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/technical&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;undergraduate&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;University of Sao Paulo&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;BSc. Applied and Computational Mathematician&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;thesis&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Mathematical Modeling of Collective Intelligence&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/thesis&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/undergraduate&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;graduate&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;University of Sao Paulo&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/location&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;MSc. Computing Science&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/degree&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;thesis&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;unknown&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/thesis&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/graduate&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/education&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Manoela&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Family (dogs included)&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Internet&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Programming&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Design&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Philosophy&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/likes&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;dislikes/&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;a_few_aliens_i_know/&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;contact&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;nagaozen[at]evolved.com.br&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/contact&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/human&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;
&amp;nbsp;&lt;/div&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp"&gt;JSON2.ASP&lt;/a&gt; from inside the ASP Xtreme Evolution repository.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Fixing Classic ASP Request.QueryString Unicode (UTF-16) bypass</title>
      <link>http://zend.lojcomm.com.br/entries/fixing-classic-asp-requestquerystring-unicode-utf/</link>
      <pubDate>Wed, 18 Aug 2010 09:10:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/fixing-classic-asp-requestquerystring-unicode-utf/</guid>
      <description>&lt;p&gt;Thanks for the great power of &lt;a href="http://search.twitter.com/"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.tweetdeck.com/"&gt;TweetDeck&lt;/a&gt;, yesterday I was pointed to a terrifying bug in &lt;code&gt;Request.QueryString&lt;/code&gt; method in the standard Classic ASP installation. &lt;strong&gt;THIS BUG DOES NOT EXISTS IN MY AXE FRAMEWORK&lt;/strong&gt; (see the tests in the end).&lt;/p&gt;

&lt;p&gt;Only God knows why for some mystical reason and under certain conditions &lt;code&gt;Request.QueryString&lt;/code&gt; method do some automatic &lt;a href="http://en.wikipedia.org/wiki/Homoglyph"&gt;homoglyph&lt;/a&gt; (like &amp;alpha;&amp;rarr;a, &amp;tau;&amp;rarr;t) and &lt;a href="http://en.wikipedia.org/wiki/Homophone"&gt;homophone&lt;/a&gt; (like &amp;pi;&amp;rarr;p) transformations in the incoming Unicode (UTF-16) QueryString helping unoccupied folks to XSS and SQLI your beloved application. Basically this stupid transformation implies that there are a lot of potential Unicode characters that can be used as '&amp;lt;' and ''' making the life of exploiters easier. For more information about this bug, read &lt;a href="http://soroush.secproject.com/blog/2010/08/noscript-new-bypass-method-by-unicode-in-asp/"&gt;NoScript New Bypass Method by Unicode in ASP&lt;/a&gt; and &lt;a href="http://hackademix.net/2010/08/17/lost-in-translation-asps-homoxssuality/"&gt;Lost in Translation (ASP’s HomoXSSuality)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since Microsoft isn't very active in supporting ASP nowadays, I've no clue if they will move a finger to fix this (usually they still release security patches). So I'm giving you Classic ASP developers the chance and the knowledge to fix this issue. Create a file named &lt;code&gt;base.asp&lt;/code&gt; in your project and put the following code inside:&lt;/p&gt;

&lt;div class="code"&gt;
&lt;span class="kw2"&gt;function&lt;/span&gt; AXE_GET&lt;span class="br0"&gt;(&lt;/span&gt;k&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;var&lt;/span&gt; v &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="st0"&gt;""&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; q &lt;span class="sy0"&gt;=&lt;/span&gt; Request.&lt;span class="me1"&gt;ServerVariables&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"QUERY_STRING"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;try&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v &lt;span class="sy0"&gt;=&lt;/span&gt; decodeURIComponent&lt;span class="br0"&gt;(&lt;/span&gt;q&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v &lt;span class="sy0"&gt;=&lt;/span&gt; Request.&lt;span class="me1"&gt;QueryString&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;k&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt; &lt;span class="kw1"&gt;catch&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Ex&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw2"&gt;var&lt;/span&gt; c &lt;span class="sy0"&gt;=&lt;/span&gt; String&lt;span class="br0"&gt;(&lt;/span&gt;q&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;split&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;'&amp;amp;'&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; j &lt;span class="sy0"&gt;=&lt;/span&gt; k &lt;span class="sy0"&gt;+&lt;/span&gt; &lt;span class="st0"&gt;'='&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;for&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; i &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt; len &lt;span class="sy0"&gt;=&lt;/span&gt; c.&lt;span class="me1"&gt;length&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt; i &lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt; len&lt;span class="sy0"&gt;;&lt;/span&gt; i&lt;span class="sy0"&gt;++&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; c&lt;span class="br0"&gt;[&lt;/span&gt;i&lt;span class="br0"&gt;]&lt;/span&gt;.&lt;span class="me1"&gt;indexOf&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;j&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;===&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt; &lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v &lt;span class="sy0"&gt;=&lt;/span&gt; c&lt;span class="br0"&gt;[&lt;/span&gt;i&lt;span class="br0"&gt;]&lt;/span&gt;.&lt;span class="me1"&gt;substring&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;j.&lt;span class="me1"&gt;length&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; v&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;}&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;Add this file to your application library (hope you made a request mapper):&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="sc2"&gt;&amp;lt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span class="kw2"&gt;script&lt;/span&gt;&lt;/a&gt; runat&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;"server"&lt;/span&gt; &lt;span class="kw3"&gt;language&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;"javascript"&lt;/span&gt; &lt;span class="kw3"&gt;src&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;"/lib/axe/base.asp"&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span class="kw2"&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;And &lt;strong&gt;replace all&lt;/strong&gt; your &lt;code&gt;Request.QueryString&lt;/code&gt; calls to &lt;code&gt;AXE_GET&lt;/code&gt;:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="kw1"&gt;dim&lt;/span&gt; name &lt;span class="sy0"&gt;:&lt;/span&gt; name &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;Request&lt;/span&gt;.&lt;span class="kw3"&gt;QueryString&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"name"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="co1"&gt;' from this&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; name &lt;span class="sy0"&gt;:&lt;/span&gt; name &lt;span class="sy0"&gt;=&lt;/span&gt; AXE_GET&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"name"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="co1"&gt;' to this&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;That's it, you are safer than before :D&lt;/p&gt;

&lt;h2&gt;Demo&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zendold.lojcomm.com.br/unicode-bypass/?u=%u3008scr%u0131pt%u3009%u212fval%28%uFF07al%u212Frt%28%22XSS%20hole%22%29%u02C8%29%u2329/scr%u0131pt%u232A"&gt;Standard Classic ASP Environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://labs.evolved.com.br/unittests/axe-get.unit.test.asp?i=%u3008scr%u0131pt%u3009%u212fval%28%uFF07al%u212Frt%28%22XSS%22%29%u02C8%29%u2329/scr%u0131pt%u232A"&gt;AXE Safe Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Classic ASP Orderly compiler</title>
      <link>http://zend.lojcomm.com.br/entries/classic-asp-orderly-compiler/</link>
      <pubDate>Fri, 13 Aug 2010 23:57:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/classic-asp-orderly-compiler/</guid>
      <description>&lt;p&gt;I believe that with today's release the &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/"&gt;ASP Xtreme Evolution Framework&lt;/a&gt; reaches a real maturity to handle &lt;a href="http://json.org/"&gt;JSON&lt;/a&gt;. &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/orderly.asp"&gt;ORDERLY.ASP&lt;/a&gt; leverages the power of the &lt;a href="http://orderly-json.org/"&gt;Orderly&lt;/a&gt; descriptors to your Classic ASP application. Although it's bundled with the AXE, it's modularized enough to work alone for the &lt;code&gt;Orderly.parse&lt;/code&gt; method, which returns the &lt;a href="http://json-schema.org/"&gt;JSONSchema&lt;/a&gt; subset, or in ensemble with &lt;a href="http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/"&gt;JSON2.ASP&lt;/a&gt; which enables &lt;code&gt;Orderly.compile&lt;/code&gt; to &lt;code&gt;stringify&lt;/code&gt; the JSONSchema representation.&lt;/p&gt;

&lt;p&gt;The name behind this release is &lt;a href="http://zaa.ch/"&gt;Zach Carter&lt;/a&gt; which made &lt;a href="http://github.com/zaach/orderly.js"&gt;Orderly.js&lt;/a&gt; some months ago and keep updating the project since then. The only effort from my part was to document it in the AXE way and write some examples.&lt;/p&gt;

&lt;p&gt;Here are some examples of how to use it:&lt;/p&gt;

&lt;h2&gt;Retriving the JSONSchema subset from an orderly source&lt;/h2&gt;

&lt;div class="code"&gt;&amp;lt;script language="javascript" runat="server" src="/lib/axe/Parsers/orderly.asp"&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;
&lt;span class="sy1"&gt;&amp;lt;%&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; source &lt;span class="sy0"&gt;:&lt;/span&gt; source &lt;span class="sy0"&gt;=&lt;/span&gt; join&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"object {"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string name;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string description?;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string homepage /^http:/;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;integer {1500,3000} invented;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"}*;"&lt;/span&gt; _&lt;br/&gt;
&lt;span class="br0"&gt;)&lt;/span&gt;, vbNewline&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; Schema &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;set&lt;/span&gt; Schema &lt;span class="sy0"&gt;=&lt;/span&gt; Orderly.&lt;span class="me1"&gt;parse&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;source&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; typename&lt;span class="br0"&gt;(&lt;/span&gt; Schema &lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline &lt;span class="br0"&gt;)&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;set&lt;/span&gt; Schema &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;nothing&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="sy1"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;prints:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;JScriptTypeInfo
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Checking the JSONSchema stringified representation&lt;/h2&gt;

&lt;div class="code"&gt;&amp;lt;script language="javascript" runat="server" src="/lib/axe/Parsers/orderly.asp"&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;
&amp;lt;script language="javascript" runat="server" src="/lib/axe/Parsers/json2.asp"&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;
&lt;span class="sy1"&gt;&amp;lt;%&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; source &lt;span class="sy0"&gt;:&lt;/span&gt; source &lt;span class="sy0"&gt;=&lt;/span&gt; join&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"object {"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string name;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string description?;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;string homepage /^http:/;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;integer {1500,3000} invented;"&lt;/span&gt;, _&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"}*;"&lt;/span&gt; _&lt;br/&gt;
&lt;span class="br0"&gt;)&lt;/span&gt;, vbNewline&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; Orderly.&lt;span class="me1"&gt;compile&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;source&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline &lt;span class="br0"&gt;)&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;span class="sy1"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;prints:&lt;/p&gt;

&lt;div class="code"&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"type"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"object"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"properties"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"name"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"type"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"string"&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"description"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"type"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"string"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"optional"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"homepage"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"type"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"string"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"pattern"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"^http:"&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"invented"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"type"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="st0"&gt;"integer"&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"minimum"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="nu0"&gt;1500&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"maximum"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="nu0"&gt;3000&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;,&lt;/span&gt;&lt;br/&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"additionalProperties"&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;br/&gt;
&lt;span class="br0"&gt;}&lt;/span&gt;&lt;br/&gt;
&amp;nbsp;&lt;/div&gt;

&lt;h2&gt;Download &amp;amp; Source&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download/Source &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/orderly.asp"&gt;ORDERLY.ASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check the tests: &lt;a href="http://labs.evolved.com.br/unittests/orderly.unit.test.asp"&gt;http://labs.evolved.com.br/unittests/orderly.unit.test.asp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Enable IIS6 gzip compression to maximum AXE performance</title>
      <link>http://zend.lojcomm.com.br/entries/enable-iis6-gzip-compression-to-maximum-axe-perfor/</link>
      <pubDate>Thu, 12 Aug 2010 02:26:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/enable-iis6-gzip-compression-to-maximum-axe-perfor/</guid>
      <description>&lt;p&gt;I've recently configured a lot of Windows 2003 servers to run our e-commerce system and remembered that both the built-in configuration of IIS6 and the IIS6 GUI aren't friendly for a 
proper gzip/deflate compression of our modern file extensions. That's why I'm writing this tutorial which will make your box compress css, js, json, xml and aspx files the way you 
probably want it. This will also helpeful if a new type of file happen to appear in the future.&lt;/p&gt;

&lt;h2&gt;Changing the W2K3 interface for best performance&lt;/h2&gt;

&lt;p&gt;This guide gives a very straight forward step-by-step approach for W2K3 servers running with Classic Start Menu interface. Because I consider that "My Computer" icon incredible useful 
in a lot of single machine managing scenarios. To enable it, just &lt;em&gt;right-click&lt;/em&gt; the &lt;strong&gt;Taskbar&lt;/strong&gt;, &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;Properties&lt;/strong&gt;, &lt;em&gt;click&lt;/em&gt; &lt;em&gt;Start Menu&lt;/em&gt; tab, &lt;em&gt;select&lt;/em&gt; &lt;strong&gt;Classic Start menu&lt;/strong&gt; radio 
button and &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;Set up the IIS Compress Service&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Starting from a clean Desktop (&lt;em&gt;WIN+D&lt;/em&gt;), &lt;em&gt;right-click&lt;/em&gt; &lt;strong&gt;My Computer&lt;/strong&gt;, &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;Manage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Expand&lt;/em&gt; &lt;strong&gt;Services and Applications&lt;/strong&gt;, &lt;em&gt;expand&lt;/em&gt; &lt;strong&gt;Internet Information Services (IIS) Manager&lt;/strong&gt;, &lt;em&gt;right-click&lt;/em&gt; &lt;strong&gt;Web Sites&lt;/strong&gt;, &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;Properties&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Click&lt;/em&gt; &lt;strong&gt;Service&lt;/strong&gt; tab, &lt;em&gt;select&lt;/em&gt; both &lt;strong&gt;Compress application files&lt;/strong&gt; and &lt;strong&gt;Compress static files&lt;/strong&gt;, &lt;em&gt;select&lt;/em&gt; &lt;strong&gt;Limited to (in megabytes)&lt;/strong&gt;, &lt;em&gt;set&lt;/em&gt; it's input text to 1024 and &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Set up the metabase.xml&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open an console (&lt;em&gt;WIN+R&lt;/em&gt;, &lt;em&gt;type&lt;/em&gt; cmd and &lt;em&gt;click&lt;/em&gt; &lt;strong&gt;OK&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Execute in the console the commands below:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="code"&gt;
&lt;span class="kw1"&gt;iisreset&lt;/span&gt; &lt;span class="kw2"&gt;/stop&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;notepad&lt;/span&gt; &lt;span class="st0"&gt;c:\windows\system32\inetsrv\metabase.xml&lt;/span&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Search for "IIsCompression"&lt;/li&gt;
&lt;li&gt;Set both deflate and gzip sections with the following properties:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="code"&gt;
&lt;span class="kw1"&gt;HcDoDynamicCompression&lt;/span&gt;=&lt;span class="st0"&gt;"TRUE"&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;HcDoOnDemandCompression&lt;/span&gt;=&lt;span class="st0"&gt;"TRUE"&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;HcDoStaticCompression&lt;/span&gt;=&lt;span class="st0"&gt;"TRUE"&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;HcDynamicCompressionLevel&lt;/span&gt;=&lt;span class="st0"&gt;"9"&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;HcFileExtensions&lt;/span&gt;=&lt;span class="st0"&gt;"htm&lt;br/&gt;
    html&lt;br/&gt;
    xml&lt;br/&gt;
    xslt&lt;br/&gt;
    js&lt;br/&gt;
    json&lt;br/&gt;
    css&lt;br/&gt;
    txt"&lt;/span&gt;&lt;br/&gt;
&lt;span class="kw1"&gt;HcScriptFileExtensions&lt;/span&gt;=&lt;span class="st0"&gt;"asp&lt;br/&gt;
    aspx&lt;br/&gt;
    dll&lt;br/&gt;
    exe"&lt;/span&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Execute in the console the commands below:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="code"&gt;
&lt;span class="kw1"&gt;iisreset&lt;/span&gt; &lt;span class="kw2"&gt;/start&lt;/span&gt;&lt;br/&gt;
&lt;/div&gt;

&lt;p&gt;That's it, your server should be compressing the files now! Enjoy the performance!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Classic ASP JSON Revisited</title>
      <link>http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/</link>
      <pubDate>Fri, 06 Aug 2010 15:43:00 GMT</pubDate>
      <guid>http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/</guid>
      <description>&lt;p&gt;Hi everybody! I'm currently working on three projects using &lt;a href="http://zend.lojcomm.com.br/goodies/asp-xtreme-evolution/"&gt;AXE&lt;/a&gt; (ASP Xtreme Evolution) Framework and because of their high dependency on &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; I've revisited the topic Classic ASP JSON support. The great news about it is that I found &lt;a href="http://tforster.wik.is/ASP_Classic_Practices_For_The_21st_Century/JSON4ASP"&gt;Troy Forster JSON2.ASP&lt;/a&gt; a really promising way to work with it. Despite the work being incomplete in terms of functionality, it used a really elegant way to READ the JSON in a fancy native looking way. Plus, the library was based on the Douglas Crockford &lt;code&gt;json2.js&lt;/code&gt; meaning it's engine is really strict to the standards.&lt;/p&gt;

&lt;p&gt;Because of the AXE philosophy of embrace and use the great ideas born around the world in a real collaboration environment of all languages, I felt really tempted to adopt the original work of the JSON author himself and augment the AXE Framework functionality with this little piece of gold. But I couldn't replace, also it wasn't a smart move in terms of compatibility, my old full featured &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json.asp"&gt;JSON.ASP&lt;/a&gt; class with other that would restrict the freedom to manipulate the Javascript object by my own will.&lt;/p&gt;

&lt;p&gt;And that's why I coded my own version of &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp"&gt;JSON2.ASP&lt;/a&gt; which instantly became an integrated piece of AXE. It provides all the functionalities from the Troy Forster work but goes beyond enabling developers to augment the object with booleans, numbers, strings, arrays (using ASP safeArrays notation) and even another objects. Plus I implemented a &lt;code&gt;keys&lt;/code&gt; method in the &lt;code&gt;Object.prototype&lt;/code&gt; which allows the enumeration of the object keys (this modification is fine and it's also standard in ECMAScript 5) which means that it doesn't matter in which language you are programming (Ruby, Python, VBScript etc) you can use the &lt;code&gt;for each&lt;/code&gt; loop in same way that it's available for the language in ASP.&lt;/p&gt;

&lt;p&gt;Here are some examples of how to use it:&lt;/p&gt;

&lt;h2&gt;Reading data from JSON&lt;/h2&gt;

&lt;div class="code"&gt;&amp;lt;script language="javascript" runat="server" src="/lib/axe/Parsers/json2.asp"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;span class="sy1"&gt;&amp;lt;%&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; Info &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;set&lt;/span&gt; Info &lt;span class="sy0"&gt;=&lt;/span&gt; JSON.&lt;span class="me1"&gt;parse&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;join&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"{"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"firstname"&lt;/span&gt;&lt;span class="st0"&gt;": "&lt;/span&gt;&lt;span class="st0"&gt;"Fabio"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"lastname"&lt;/span&gt;&lt;span class="st0"&gt;": "&lt;/span&gt;&lt;span class="st0"&gt;"Nagao"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"alive"&lt;/span&gt;&lt;span class="st0"&gt;": true,"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"age"&lt;/span&gt;&lt;span class="st0"&gt;": 27,"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"nickname"&lt;/span&gt;&lt;span class="st0"&gt;": "&lt;/span&gt;&lt;span class="st0"&gt;"nagaozen"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"fruits"&lt;/span&gt;&lt;span class="st0"&gt;": ["&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"banana"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"orange"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"apple"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"papaya"&lt;/span&gt;&lt;span class="st0"&gt;","&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"pineapple"&lt;/span&gt;&lt;span class="st0"&gt;""&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;],"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"complex"&lt;/span&gt;&lt;span class="st0"&gt;": {"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"real"&lt;/span&gt;&lt;span class="st0"&gt;": 1,"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp; &amp;nbsp;"&lt;/span&gt;&lt;span class="st0"&gt;"imaginary"&lt;/span&gt;&lt;span class="st0"&gt;": 2"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;" &amp;nbsp;}"&lt;/span&gt;, _&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;"}"&lt;/span&gt; _&lt;br /&gt;
&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;firstname&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints Fabio&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;alive&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints True&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;age&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints 27&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;fruits&lt;/span&gt;.&lt;span class="kw1"&gt;get&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints banana&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;fruits&lt;/span&gt;.&lt;span class="kw1"&gt;get&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints orange&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;complex&lt;/span&gt;.&lt;span class="me1"&gt;real&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints 1&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info.&lt;span class="me1"&gt;complex&lt;/span&gt;.&lt;span class="me1"&gt;imaginary&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints 2&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="co1"&gt;' You can also enumerate object properties ...&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; key &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;for&lt;/span&gt; &lt;span class="kw1"&gt;each&lt;/span&gt; key &lt;span class="kw1"&gt;in&lt;/span&gt; Info.&lt;span class="me1"&gt;keys&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; key &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline &lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;next&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="co1"&gt;' which prints:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="co1"&gt;' firstname&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' lastname&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' alive&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' age&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' nickname&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' fruits&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' complex&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="kw1"&gt;set&lt;/span&gt; Info &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;nothing&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="sy1"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;h2&gt;Building a JSON&lt;/h2&gt;

&lt;div class="code"&gt;&amp;lt;script language="javascript" runat="server" src="/lib/axe/Parsers/json2.asp"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;span class="sy1"&gt;&amp;lt;%&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kw1"&gt;dim&lt;/span&gt; Info &lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;set&lt;/span&gt; Info &lt;span class="sy0"&gt;=&lt;/span&gt; JSON.&lt;span class="me1"&gt;parse&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"{"&lt;/span&gt;&lt;span class="st0"&gt;"firstname"&lt;/span&gt;&lt;span class="st0"&gt;":"&lt;/span&gt;&lt;span class="st0"&gt;"Fabio"&lt;/span&gt;&lt;span class="st0"&gt;", "&lt;/span&gt;&lt;span class="st0"&gt;"lastname"&lt;/span&gt;&lt;span class="st0"&gt;":"&lt;/span&gt;&lt;span class="st0"&gt;"Nagao"&lt;/span&gt;&lt;span class="st0"&gt;"}"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
Info.&lt;span class="kw1"&gt;set&lt;/span&gt; &lt;span class="st0"&gt;"alive"&lt;/span&gt;, &lt;span class="kw2"&gt;true&lt;/span&gt;&lt;br /&gt;
Info.&lt;span class="kw1"&gt;set&lt;/span&gt; &lt;span class="st0"&gt;"age"&lt;/span&gt;, &lt;span class="nu0"&gt;27&lt;/span&gt;&lt;br /&gt;
Info.&lt;span class="kw1"&gt;set&lt;/span&gt; &lt;span class="st0"&gt;"nickname"&lt;/span&gt;, &lt;span class="st0"&gt;"nagaozen"&lt;/span&gt;&lt;br /&gt;
Info.&lt;span class="kw1"&gt;set&lt;/span&gt; &lt;span class="st0"&gt;"fruits"&lt;/span&gt;, &lt;span class="kw3"&gt;array&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"banana"&lt;/span&gt;,&lt;span class="st0"&gt;"orange"&lt;/span&gt;,&lt;span class="st0"&gt;"apple"&lt;/span&gt;,&lt;span class="st0"&gt;"papaya"&lt;/span&gt;,&lt;span class="st0"&gt;"pineapple"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
Info.&lt;span class="kw1"&gt;set&lt;/span&gt; &lt;span class="st0"&gt;"complex"&lt;/span&gt;, JSON.&lt;span class="me1"&gt;parse&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"{"&lt;/span&gt;&lt;span class="st0"&gt;"real"&lt;/span&gt;&lt;span class="st0"&gt;":1, "&lt;/span&gt;&lt;span class="st0"&gt;"imaginary"&lt;/span&gt;&lt;span class="st0"&gt;":1}"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="kw1"&gt;Response&lt;/span&gt;.&lt;span class="kw3"&gt;write&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; JSON.&lt;span class="me1"&gt;stringify&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Info, &lt;span class="kw2"&gt;null&lt;/span&gt;, &lt;span class="nu0"&gt;2&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt; vbNewline &lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="co1"&gt;' prints the text below:&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;'{&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"firstname": "Fabio",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"lastname": "Nagao",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"alive": true,&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"age": 27,&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"nickname": "nagaozen",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"fruits": [&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"banana",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"orange",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"apple",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"papaya",&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"pineapple"&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;],&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;"complex": {&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"real": 1,&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp; &amp;nbsp;"imaginary": 1&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;' &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;'}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;span class="kw1"&gt;set&lt;/span&gt; Info &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw2"&gt;nothing&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="sy1"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;

&lt;h2&gt;Download &amp;amp; Source&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download/Source &lt;a href="http://github.com/nagaozen/asp-xtreme-evolution/blob/master/lib/axe/classes/Parsers/json2.asp"&gt;JSON2.ASP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check the tests: &lt;a href="http://labs.evolved.com.br/unittests/json2.unit.test.asp"&gt;http://labs.evolved.com.br/unittests/json2.unit.test.asp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>

