<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DE4GQ3c4eyp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-14210740</id><updated>2011-11-27T21:35:22.933-02:00</updated><category term="apache" /><category term="ethernet" /><category term="freepbx" /><category term="router" /><category term="openswan" /><category term="uuid" /><category term="ipsec" /><category term="javascript" /><category term="bridge" /><category term="vmware" /><category term="trixbox" /><category term="reverse proxy" /><category term="voip" /><category term="http" /><category term="vyatta" /><category term="hardy" /><category term="indexeddb javascript bluesky" /><category term="jquery" /><category term="asterisk" /><category term="asterisknow" /><category term="vono" /><category term="elastix" /><category term="configuration" /><category term="plugin" /><category term="virtual" /><category term="sonicwall" /><category term="vpn" /><category term="network" /><category term="http header" /><category term="udev" /><category term="ubuntu" /><title>Brazilian Joe's Hideout</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://brazilianjoe.blogspot.com/" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BrazilianJoesHideout" /><feedburner:info uri="brazilianjoeshideout" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0IBR3g_eSp7ImA9WhdbFUw.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-3590839167496582841</id><published>2011-10-13T10:10:00.002-03:00</published><updated>2011-10-13T10:12:36.641-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T10:12:36.641-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="trixbox" /><category scheme="http://www.blogger.com/atom/ns#" term="asterisknow" /><category scheme="http://www.blogger.com/atom/ns#" term="vono" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="voip" /><category scheme="http://www.blogger.com/atom/ns#" term="freepbx" /><category scheme="http://www.blogger.com/atom/ns#" term="elastix" /><category scheme="http://www.blogger.com/atom/ns#" term="asterisk" /><title>Configurando tronco Vono no Elastix (Asterisk, FreePBX)</title><content type="html">Depois de um pouco de sangue, suor e lágrimas, descobri como configurar um tronco Vono no Elastix (Asterisk, FreePBX).&lt;br /&gt;
&lt;br /&gt;
Aí vai a fórmula:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;TRUNK NAME = vono_out (como quiser chamar)&lt;/pre&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PEER Details&lt;/pre&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;type=peer
username=&lt;nomedeusuario&gt;
secret=&lt;senha&gt;
domain=vono.net.br
fromuser=&lt;nomedeusuario&gt;
fromdomain=vono.net.br
host=vono.net.br
insecure=very
context=from-pstn
qualify=yes
port=5060
aut=md5
nat=yes
dynamic=yes
disallow=all
allow=g729;ilbc;gsm;ulaw;alaw;

dtmfmode=rfc2833
reinvite=no
canreinvite=no

--------------------------------

USER CONTEXT = vono_in (como quiser chamar)

USER Details
type=user
username=&lt;nomedeusuario&gt;
domain=vono.net.br
fromuser=&lt;nomedeusuario&gt;
fromdomain=vono.net.br
host=vono.net.br
insecure=very
context=from-pstn
disallow=all
allow=g729;ilbc;gsm;ulaw;alaw;

----------------------------

REGISTER STRING

&lt;nomedeusuario&gt;:&lt;senha&gt;@vono.net.br:5060/&lt;numerovono&gt;&lt;/numerovono&gt;&lt;/senha&gt;&lt;/nomedeusuario&gt;&lt;/nomedeusuario&gt;&lt;/nomedeusuario&gt;&lt;/nomedeusuario&gt;&lt;/senha&gt;&lt;/nomedeusuario&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-3590839167496582841?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PqMsMhNPuHMylngmMmRuvWcczJo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PqMsMhNPuHMylngmMmRuvWcczJo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PqMsMhNPuHMylngmMmRuvWcczJo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PqMsMhNPuHMylngmMmRuvWcczJo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/EN4SPP96Wdg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/3590839167496582841/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=3590839167496582841" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3590839167496582841?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3590839167496582841?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/EN4SPP96Wdg/configurando-tronco-vono-no-elastix.html" title="Configurando tronco Vono no Elastix (Asterisk, FreePBX)" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2011/10/configurando-tronco-vono-no-elastix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEACQHc4eyp7ImA9WhdTE0U.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-7027080663142295716</id><published>2011-07-11T09:19:00.000-03:00</published><updated>2011-07-11T09:19:21.933-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-11T09:19:21.933-03:00</app:edited><title>jQuery UI List widget released!</title><content type="html">I have built this widget for a company project with modularity in mind, and thought it would be a good idea to share with the world.&lt;br /&gt;
&lt;br /&gt;
Read more about it &lt;a href="http://brazilianjoe.blogspot.com/p/jquery-ui-list.html"&gt;here&lt;/a&gt; or download it &lt;a href="http://plugins.jquery.com/project/ui-list"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-7027080663142295716?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SmpkjFuTJyjeaobHt_PN0Q19iJI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmpkjFuTJyjeaobHt_PN0Q19iJI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SmpkjFuTJyjeaobHt_PN0Q19iJI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmpkjFuTJyjeaobHt_PN0Q19iJI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/UqqhlN7yMNI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/7027080663142295716/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=7027080663142295716" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/7027080663142295716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/7027080663142295716?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/UqqhlN7yMNI/jquery-ui-list-widget-released.html" title="jQuery UI List widget released!" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2011/07/jquery-ui-list-widget-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cHRXY4cSp7ImA9WhdTEUo.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-3659905087358357336</id><published>2011-07-08T21:23:00.000-03:00</published><updated>2011-07-08T21:23:54.839-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-08T21:23:54.839-03:00</app:edited><title>jQuery More Support Plugin released!</title><content type="html">This plugin extends the jQuery.support property with a few more variables for the developer's convenience. Currently it adds the following:&lt;br /&gt;
&lt;br /&gt;
a) Detects the existence of the console.&lt;br /&gt;
b) Detects the browser engine by feature-detection rather than user-agent sniffing.&lt;br /&gt;
b.1) Detects Internet Explorer version. Not implemented for the other browsers, may or may not be possible.&lt;br /&gt;
&lt;br /&gt;
Read more about it &lt;a href="http://brazilianjoe.blogspot.com/p/jquery-more-support-plugin.html"&gt;here&lt;/a&gt; or get it &lt;a href="http://plugins.jquery.com/project/MoreSupport"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-3659905087358357336?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/776JDGYuhgR8fCQ1P4577_EC6L4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/776JDGYuhgR8fCQ1P4577_EC6L4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/776JDGYuhgR8fCQ1P4577_EC6L4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/776JDGYuhgR8fCQ1P4577_EC6L4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/upHaSDFvQm0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/3659905087358357336/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=3659905087358357336" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3659905087358357336?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3659905087358357336?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/upHaSDFvQm0/jquery-more-support-plugin-released.html" title="jQuery More Support Plugin released!" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2011/07/jquery-more-support-plugin-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEDRnk5cCp7ImA9WhdTEEo.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-2914283377175251957</id><published>2011-07-07T18:20:00.001-03:00</published><updated>2011-07-07T18:21:17.728-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-07T18:21:17.728-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uuid" /><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="jquery" /><title>jQuery UUID Generator updated!</title><content type="html">To all jQuery jockeys ou there:&lt;br /&gt;
&lt;br /&gt;
I have managed to release an update for my UUID generator plugin for jQuery. It has new features, and a new function name as well.&lt;br /&gt;
&lt;br /&gt;
Read more about it &lt;a href="http://brazilianjoe.blogspot.com/p/jquery-uuid-extension-plugin.html"&gt;here&lt;/a&gt;, or go get it &lt;a href="http://plugins.jquery.com/project/uidGen"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-2914283377175251957?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EcNke4tFFM0Aj9RTweDTJ20B1fw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcNke4tFFM0Aj9RTweDTJ20B1fw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EcNke4tFFM0Aj9RTweDTJ20B1fw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcNke4tFFM0Aj9RTweDTJ20B1fw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/_WyfgjS9U9o" height="1" width="1"/&gt;</content><link rel="related" href="http://brazilianjoe.blogspot.com/p/jquery-uuid-extension-plugin.html" title="jQuery UUID Generator updated!" /><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/2914283377175251957/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=2914283377175251957" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/2914283377175251957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/2914283377175251957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/_WyfgjS9U9o/jquery-uuid-generator-updated.html" title="jQuery UUID Generator updated!" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2011/07/jquery-uuid-generator-updated.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIFR3s4eyp7ImA9WxFbE0s.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-3782801416917459928</id><published>2010-07-05T18:41:00.001-03:00</published><updated>2010-07-05T18:48:36.533-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T18:48:36.533-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="indexeddb javascript bluesky" /><title>Considerations on Mozilla's IndexedDB</title><content type="html">I have read &lt;a href="http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/"&gt;Mozilla's proposal for IndexedDB&lt;/a&gt;, and while I am no defender of SQLite on the client-side, I also disliked a lot the proposed syntax.&lt;br /&gt;
&lt;br /&gt;
It is just too verbose and convoluted to do a simple thing as a join, as their example showed. It requires 2~3 more code than their own WebDatabase counter-example, and is hard to wrap your brain around the usage.&lt;br /&gt;
&lt;br /&gt;
I would prefer a document-based storage method which can simply save JS objects to disk, and is able to fetch them back or operate with them, similar to couchDB. The documents would all be required to have an id (primary key in SQL terms).&lt;br /&gt;
&lt;br /&gt;
I will build those examples on top of the kids/candy database used by the mozilla blog post.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var db = indexedDB.open("somedb"); //sets the db for reading&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;db.async = true|false // sets (a)synchronous execution&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;db.autosave = true|false // if set to true, there is no need to call the save() function to commit the changes to the storage, as they happen automatically.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var onekid = db.filter(id="id"); // prepares a single document to be fetched from the storage&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;onekid.&lt;span class="Apple-style-span" style="color: purple;"&gt;get&lt;/span&gt;(); // fetches the onekid data as a JS object.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;onekid.age = 12; // adds or changes some information on the document&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;onekid.&lt;span class="Apple-style-span" style="color: purple;"&gt;save&lt;/span&gt;(); // saves to the storage&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;OR we could do:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;onekid.&lt;span class="Apple-style-span" style="color: purple;"&gt;save&lt;/span&gt;().onsuccess = function(event){&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;alert("saved "+event.objects[0]+" successfully."); // the objects property of the event would store all ids of all documents affected by the transaction.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;db.&lt;span class="Apple-style-span" style="color: purple;"&gt;add&lt;/span&gt;({name:&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"john"&lt;/span&gt;}); // add an object to the storage&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;db.&lt;span class="Apple-style-span" style="color: purple;"&gt;save&lt;/span&gt;(); &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var kidstable = db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;({"name":"john","age":"36"})&amp;nbsp;&lt;span class="Apple-style-span" style="color: #666666;"&gt;// prepares to fetch multiple property+value pairs&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;kidstable = db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;(["name","age"])&amp;nbsp;&lt;span class="Apple-style-span" style="color: #666666;"&gt;// prepares to fetch multiple properties&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidstable = db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;("name") &lt;span class="Apple-style-span" style="color: #666666;"&gt;// prepares to fetch all documents with a name property&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidslist = kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;get&lt;/span&gt;(); &lt;span class="Apple-style-span" style="color: #666666;"&gt;//this would happen synchronously and return the actual documents as JS objects to be assigned to kidslist&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;(&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"gender"&lt;/span&gt;); &lt;span class="Apple-style-span" style="color: #666666;"&gt;/* sets a gender property on all documents represented by the filter */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;.onfailure = function(event){alert(&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"could not set property "&lt;/span&gt;+event.key);}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;({gender:&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"male"}&lt;/span&gt;); &lt;span class="Apple-style-span" style="color: #666666;"&gt;/* sets the gender property to value 'male' on all documents represented by kidstable */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;result = kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;({age:12});&lt;span class="Apple-style-span" style="color: #666666;"&gt; /* forces synchronous execution. returns true on success, false on failure */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;data&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;nbsp;= kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;({age:10}).get();&amp;nbsp;&lt;span class="Apple-style-span" style="color: #666666;"&gt;/* sets the data, then gets the modified data; */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;set&lt;/span&gt;({&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;age:10,gender:&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"female"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;}); &lt;span class="Apple-style-span" style="color: #666666;"&gt;/* multiple properties at once */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;unset&lt;/span&gt;([&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"gender"&lt;/span&gt;,&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"age"]&lt;/span&gt;); &lt;span class="Apple-style-span" style="color: #666666;"&gt;/*removes properties. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;kidstable.&lt;span class="Apple-style-span" style="color: purple;"&gt;del&lt;/span&gt;(); &lt;span class="Apple-style-span" style="color: #666666;"&gt;//deletes objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;set, unset and del functions could happen on memory-space and vaporize if save() is not called (unless autosave is true). Variable scope applies.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var thekids =&amp;nbsp;db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;(key.name).sort() &lt;span class="Apple-style-span" style="color: #666666;"&gt;/*&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;prepares to fetch all documents with a name attribute (kids).&amp;nbsp;also sorting ascending; the parameter 'desc' could be used to reverse the sort order. */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var sales =&amp;nbsp;&amp;nbsp;db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;(key.candysales).sort() &lt;span class="Apple-style-span" style="color: #666666;"&gt;/*prepares to search for all sales */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var kidsPurchases = db.&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;&lt;/span&gt;(candysales.kidId = thekids.id) &lt;span class="Apple-style-span" style="color: #666666;"&gt;/* prepares the search for all candysales. the query 'thekids' did not have to be executed to be used in the 'kidspurchases' query. */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;var kidsPurchasesSubset =&amp;nbsp;db.&lt;span class="Apple-style-span" style="color: purple;"&gt;filter&lt;/span&gt;(candysales.kidId = thekids.id).&lt;span class="Apple-style-span" style="color: purple;"&gt;keys&lt;/span&gt;(thekids.name, candysales.candyname,candysales.date); &lt;span class="Apple-style-span" style="color: #666666;"&gt;/* prepares to fetch only certain properties from the data storage */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;kidsPurchasesSubset.&lt;span class="Apple-style-span" style="color: purple;"&gt;each&lt;/span&gt; = function (doc) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var element = createElement("div");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #110000; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #110000; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #110000; line-height: 19px;"&gt;&lt;pre class="javascript" style="clear: none; line-height: 1.333; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre; width: auto;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    element.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #660066;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;textContent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"Name: "&lt;/span&gt;+doc.name+&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;" - Candy: "&lt;/span&gt;+doc.candyname+&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;" - Date: "&lt;/span&gt;+doc.date&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    document.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #660066;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;getElementById&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #009900;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;"kidList"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #009900;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #660066;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;appendChild&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #009900;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;element&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #009900;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #110000; line-height: 15px; white-space: pre;"&gt;&lt;span style="color: #339933;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;} &lt;span class="Apple-style-span" style="color: #666666;"&gt;/*runs for each item getted/setted when a query is executed.*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;db.index("candyname",false); /* creates an index to accelerate searching by the candyname property. */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
The second parameter in the index() function is for uniqueness. The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;false&lt;/span&gt; value indicates the index will allow for duplicate values, but will still create the index as a mean to accelerate partitioning and searching a specific subset of data.&lt;br /&gt;
&lt;br /&gt;
All operations would be atomic by default, but the data handling functions &lt;span class="Apple-style-span" style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;get, set, filter, unset, del, add,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;save &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;and&lt;/span&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt; abort&lt;/span&gt;&lt;/span&gt;&amp;nbsp;would allow for a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;transaction=&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;'string'&lt;/span&gt;&lt;/span&gt; parameter.&lt;br /&gt;
this parameter would cause the changes to not be commited even if the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;autosave()&lt;/span&gt; setting is &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;true&lt;/span&gt;. &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;save(transaction=&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;'transid'&lt;/span&gt;)&lt;/span&gt; would commit the transaction. &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;abort(transaction=&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;'transid'&lt;/span&gt;)&lt;/span&gt; would rollback all pending changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-3782801416917459928?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8u5QE4Lhj70p-9xInQaF30cB1ik/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8u5QE4Lhj70p-9xInQaF30cB1ik/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8u5QE4Lhj70p-9xInQaF30cB1ik/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8u5QE4Lhj70p-9xInQaF30cB1ik/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/7ykvXlgio6k" height="1" width="1"/&gt;</content><link rel="related" href="http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/" title="Considerations on Mozilla's IndexedDB" /><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/3782801416917459928/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=3782801416917459928" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3782801416917459928?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3782801416917459928?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/7ykvXlgio6k/considerations-on-mozillas-indexeddb.html" title="Considerations on Mozilla's IndexedDB" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2010/07/considerations-on-mozillas-indexeddb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUMR305fSp7ImA9WxVXEUU.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-5841538796431335245</id><published>2009-02-06T20:18:00.002-02:00</published><updated>2009-02-09T10:41:26.325-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-09T10:41:26.325-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sonicwall" /><category scheme="http://www.blogger.com/atom/ns#" term="network" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="vpn" /><category scheme="http://www.blogger.com/atom/ns#" term="ipsec" /><category scheme="http://www.blogger.com/atom/ns#" term="vyatta" /><category scheme="http://www.blogger.com/atom/ns#" term="openswan" /><title>Vyatta (Openswan) versus SonicWALL IPSec</title><content type="html">After some hair pulling, I found out how to set up a Vyatta &lt;-&gt; SonicWALL IPSec site-to-site tunnel.&lt;br /&gt;&lt;br /&gt;Vyatta 4.1.4 uses Openswan 2.4.2, which can interoperate with SonicWALL. turns out it needs some specific configurations though, and some of those options were not available on the configuration setup.&lt;br /&gt;Thankfully, being linux I could just &lt;code&gt;vim/etc/ipsec.conf&lt;/code&gt; and tweak the Openswan settings.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#ipsec.conf&lt;br /&gt;#these are the options which should be in your tunnel:&lt;br /&gt;        esp=3des-md5 # instead of esp=3des-md5-modp1024&lt;br /&gt;        pfs=yes # this is changeable by the configuration commands I believe&lt;br /&gt;        keyexchange=ike #didnt exist &lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-5841538796431335245?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VngFXEoXdV3eQxnosFe54yFPt2s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VngFXEoXdV3eQxnosFe54yFPt2s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VngFXEoXdV3eQxnosFe54yFPt2s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VngFXEoXdV3eQxnosFe54yFPt2s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/OZbiSLFf-ko" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/5841538796431335245/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=5841538796431335245" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/5841538796431335245?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/5841538796431335245?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/OZbiSLFf-ko/vyatta-openswan-versus-sonicwall-ipsec.html" title="Vyatta (Openswan) versus SonicWALL IPSec" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/02/vyatta-openswan-versus-sonicwall-ipsec.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCQHk-cCp7ImA9WxVXEUU.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-133995964035163736</id><published>2009-02-04T18:54:00.004-02:00</published><updated>2009-02-09T10:22:41.758-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-09T10:22:41.758-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="http" /><category scheme="http://www.blogger.com/atom/ns#" term="reverse proxy" /><category scheme="http://www.blogger.com/atom/ns#" term="network" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="http header" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><category scheme="http://www.blogger.com/atom/ns#" term="vyatta" /><title>Vyatta, network setup.</title><content type="html">VICTORY! or almost...&lt;br /&gt;&lt;br /&gt;I managed to set up the internet, NAT, firewall, poke the holes I needed. Now all that's there to it is the VPN tunnel. &lt;br /&gt;&lt;br /&gt;I have also set up a separate machine running Dnsmasq as a DNS cache/DHCP server, and a HTTP(S) reverse proxy. Which is nice, because I have a single fixed IP and I want different machines to serve separate subdomains. like using Zimbra to serve webmail.mydomain.com, my database web interface from db.mydomain.com, and the plain websites from www.mydomain.com.&lt;br /&gt;&lt;br /&gt;Word of advice: use the Apache Header module to make sure you are telling the browser to NOT cache your pages. at least while you are setting it up. Would have saved me a few headaches if I had done it prior to trying to set up the reverse proxy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-133995964035163736?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iRLPIp1AApDwrsv9fIxVucnlUsg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRLPIp1AApDwrsv9fIxVucnlUsg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iRLPIp1AApDwrsv9fIxVucnlUsg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRLPIp1AApDwrsv9fIxVucnlUsg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/G-ITa9tjyYo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/133995964035163736/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=133995964035163736" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/133995964035163736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/133995964035163736?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/G-ITa9tjyYo/vyatta-network-setup.html" title="Vyatta, network setup." /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/02/vyatta-network-setup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUFRn8yeCp7ImA9WxVQEk4.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-5510814326037156836</id><published>2009-01-29T09:43:00.007-02:00</published><updated>2009-01-29T09:56:57.190-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-29T09:56:57.190-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bridge" /><category scheme="http://www.blogger.com/atom/ns#" term="virtual" /><category scheme="http://www.blogger.com/atom/ns#" term="network" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="vmware" /><title>Rename VMWare Server 2.0 bridges</title><content type="html">After my brilliant eth* renaming merry-go-round, I had another simple, but annoyingly hard-to-find-info about mission: change bridge names (just the labels) in VMWare.&lt;br /&gt;&lt;br /&gt;After hastily running through the settings wizard on running &lt;code&gt;vmware-config.pl&lt;/code&gt;, I realized that I had 4 bridges:&lt;br /&gt;&lt;code&gt;Bridge&lt;br /&gt;Bridge(2)&lt;br /&gt;Bridge(3)&lt;br /&gt;Bridge(4)&lt;/code&gt;&lt;br /&gt;Which are not very helpful names. Sure, I could have given the right names from the start, but I am just human. Everyone looks back and say ' I could hve done that one better' right?&lt;br /&gt;After NOT finding any info on how to do it, I just tried the shotgun approach and got to dig on the &lt;code&gt;vmware-config.pl&lt;/code&gt; command options.&lt;br /&gt;&lt;br /&gt;Turns out I am a lucky guy. When i got to the network reconfiguration section, I told I wanted to change network settings, but instead of using the wizard ( as I always do - many people might do it too) I used the editor option. there we can change the network setting of all configured bridges, NATs and host-only networks. So I renamed all my bridges to "Bridge eth*" and it was all set.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-5510814326037156836?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/q4tnjyqNmwMEVhCBs-4qRqRRRNU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q4tnjyqNmwMEVhCBs-4qRqRRRNU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/q4tnjyqNmwMEVhCBs-4qRqRRRNU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q4tnjyqNmwMEVhCBs-4qRqRRRNU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/ZVCshWNmff4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/5510814326037156836/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=5510814326037156836" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/5510814326037156836?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/5510814326037156836?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/ZVCshWNmff4/rename-vmware-server-20-bridges.html" title="Rename VMWare Server 2.0 bridges" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/01/rename-vmware-server-20-bridges.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QMQ345eSp7ImA9WxVQEk8.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-3251097288053129079</id><published>2009-01-29T09:23:00.003-02:00</published><updated>2009-01-29T09:43:02.021-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-29T09:43:02.021-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ethernet" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="udev" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="hardy" /><title>Changing ethernet names in Ubuntu 8.04</title><content type="html">So, I was trying my stuff around Vyatta, and realized I didn't have enough NICs to virtualize everything I had. Our company's basic routing landscape involves two modems, one device acting as router + DHCP + DNS cache+access point (802.11g), another AP (802.11n 5.0Ghz), and the VPN router (RIP). The server only had 2 gigabit NICs though. If I moved the DHCP, DNS cache and VPN routing to VMs, I'd have to plug the 2 modems and the 2 wireless routers on it. Tha put me on a deficit of 2 network cards.&lt;br /&gt;&lt;br /&gt;Thankfully, I had some extra hardware lying around, I picked up 2 spare realtek-based NICs and plugged them on the server. 100Mbit/s is plenty for our current ADSL speeds.&lt;br /&gt;&lt;br /&gt;That was when I hit a small problem: ifconfig -a only showed eth0, eth1 and eth2. One of the NICs was dead. &lt;br /&gt;&lt;br /&gt;Oh, well. It would be a matter of switchingthe cards. It was not top-prority, so I went to grokking the software configuration. After some time I remembered I had some more cards lying on another machine, which was not in use. And those were some good 3com cards. I went on and picked out both of my realtek cards and plopped the 3com in.&lt;br /&gt;&lt;br /&gt;Then I noticed something: ifconfig showed eth0 and eth1 (onboard gigabit), then eth3 and eth4.&lt;br /&gt;&lt;br /&gt;Being a nitpicky guy I wanted eth2 back! Well, remembering which card held which eth* alias between boots is actually a good thing, but in this case i wanted to use eth2. Just for the fun of it. &lt;br /&gt;&lt;br /&gt;Using the same eth* alias can also save reconfiguration trouble for people who had a NIC die on them. Replace the hardware, make the system poin to the new card with the old name, everything works again.&lt;br /&gt;&lt;br /&gt;At least to me it was a bit hard to dig out the information on where it was, but I found it.&lt;br /&gt;&lt;br /&gt;Ubuntu (udev) has this little file where it registers the eth* name given to each NIC to make naming persstent between boots. If you want to change some ethernet number, just go there and change it to your liking: &lt;br /&gt;&lt;br /&gt;run via the command line:&lt;br /&gt;&lt;code&gt;sudo vim /etc/udev/rules.d/70-persistent-net.rules&lt;/code&gt;&lt;br /&gt;(or use your editor of choice)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-3251097288053129079?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gNaHU1jsJl_DSo0LpZt7PoVyg3E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gNaHU1jsJl_DSo0LpZt7PoVyg3E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gNaHU1jsJl_DSo0LpZt7PoVyg3E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gNaHU1jsJl_DSo0LpZt7PoVyg3E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/IL8L9jA3D2A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/3251097288053129079/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=3251097288053129079" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3251097288053129079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/3251097288053129079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/IL8L9jA3D2A/changing-ethernet-names-in-ubuntu-804.html" title="Changing ethernet names in Ubuntu 8.04" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/01/changing-ethernet-names-in-ubuntu-804.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUERHwyeip7ImA9WxVQEk8.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-222827671185073023</id><published>2009-01-29T09:11:00.003-02:00</published><updated>2009-01-29T09:23:25.292-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-29T09:23:25.292-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="virtual" /><category scheme="http://www.blogger.com/atom/ns#" term="router" /><category scheme="http://www.blogger.com/atom/ns#" term="vmware" /><category scheme="http://www.blogger.com/atom/ns#" term="vyatta" /><title>Vyatta inside VMWare</title><content type="html">A bit about my job:&lt;br /&gt;&lt;br /&gt;I am the IT jack-of-all-trades on my company's office. We have a few offices acattered around the blue marble, connected by VPN.&lt;br /&gt;&lt;br /&gt;My VPN router died on monday, and we scrambled for a solution. Living in Brazil, a device which costs U$ 499 in the U.S. magically soars up to U$ 1,600.00 inside our country... Given the global economic downturn (and me liking open source), I looked for something baed on open source, but which is not a 'hobby job'. I had to feel confident about the product. &lt;br /&gt;&lt;br /&gt;Also, having most of our infrastructure virtualized on VMWare Server 2.0, a virtualized router would come in handy, as long as virtualization does not impact performance.&lt;br /&gt;&lt;br /&gt;I ended up finding Vyatta (http://www.vyatta.com), which looks like an interesting solution so far. I have been experimenting with it, and have managed the most basic stuff (NAT masquerading, set up pppoe, remote SSH admin). I will post more about it later (after I figure it out :) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-222827671185073023?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EMIlSH2IICuKsg34LOYBrxaZuy8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EMIlSH2IICuKsg34LOYBrxaZuy8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EMIlSH2IICuKsg34LOYBrxaZuy8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EMIlSH2IICuKsg34LOYBrxaZuy8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/3P0LLlV11jo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/222827671185073023/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=222827671185073023" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/222827671185073023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/222827671185073023?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/3P0LLlV11jo/vyatta-inside-vmware.html" title="Vyatta inside VMWare" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/01/vyatta-inside-vmware.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cASHc-eSp7ImA9WxVRGUQ.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-8790889775606350124</id><published>2009-01-26T14:16:00.004-02:00</published><updated>2009-01-26T15:30:49.951-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T15:30:49.951-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uuid" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="plugin" /><category scheme="http://www.blogger.com/atom/ns#" term="jquery" /><title>jQuery UUID extension</title><content type="html">&lt;p&gt;This is a conversion of a few functions I make use of to a jQuery plugin.&lt;/p&gt; &lt;br /&gt;&lt;p&gt;This stems out from my need to be sure to have unique IDs, but I dont want to waste time reviewing code to make sure it is really unique, so as to not collide with other IDs on my page. I can have a random amount of forms at the same time in an inordinate amount of tabs, and each form has several form elements, and making sure they are all unique can be painstaking. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;So I track my forms by registering the id of each form in an object array.&lt;/p&gt; &lt;br /&gt;&lt;p&gt;Naturally, other people may have other uses for the UUIDs.&lt;/p&gt;&lt;br /&gt;&lt;p&gt; UUIDs are generated in the format: 00000000-0000-0000-0000-000000000000 , with an optional prefix.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Usage 1:&lt;/b&gt; define the default prefix by using an object with the property prefix as a parameter which contains a string value;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="codeblock"&gt;&lt;code&gt;jQuery.uuid({prefix: 'id'}); //returns nothing, sets default prefix to string 'id'&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt; &lt;b&gt;Usage 2:&lt;/b&gt; call the function jQuery.uuid() with a string parameter p to be used as a prefix to generate a random uuid;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="codeblock"&gt;&lt;code&gt;jQuery.uuid('foo-'); // returns 'foo-&amp;lt;uuid&amp;gt;'&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt; &lt;b&gt;Usage 3:&lt;/b&gt; call the function jQuery.uuid() with no parameters to generate a uuid with the default prefix; The default prefix is '' (empty string)&lt;br /&gt;&lt;/p&gt;&lt;div class="codeblock"&gt;&lt;code&gt;jQuery.uuid(); //returns '&amp;lt;prefix&amp;gt;&amp;lt;uuid&amp;gt;'&lt;br /&gt;&lt;br /&gt;Get it at &lt;/code&gt;&lt;a href="http://plugins.jquery.com/project/uuid"&gt;http://plugins.jquery.com/project/uuid&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-8790889775606350124?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P88bujmq2uPGGR6Gmt5SQL5ADnY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P88bujmq2uPGGR6Gmt5SQL5ADnY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P88bujmq2uPGGR6Gmt5SQL5ADnY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P88bujmq2uPGGR6Gmt5SQL5ADnY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/3qaXF7upyFE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/8790889775606350124/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=8790889775606350124" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/8790889775606350124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/8790889775606350124?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/3qaXF7upyFE/jquery-uuid-extension.html" title="jQuery UUID extension" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/01/jquery-uuid-extension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcEQno6fCp7ImA9WxVRGUU.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-335652171387670335</id><published>2009-01-26T13:30:00.001-02:00</published><updated>2009-01-26T13:33:23.414-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T13:33:23.414-02:00</app:edited><title>Ressurectum</title><content type="html">After having registered this blog with my nick of choice on the 'web, I figured I could actually use it for anything other than gather bit-dust.&lt;br /&gt;&lt;br /&gt;Such as posting some of my codes...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-335652171387670335?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Qq0CdB6Fbsd8ARJsP_Ur09ynVWQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qq0CdB6Fbsd8ARJsP_Ur09ynVWQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Qq0CdB6Fbsd8ARJsP_Ur09ynVWQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qq0CdB6Fbsd8ARJsP_Ur09ynVWQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/fLpIszpJJcI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/335652171387670335/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=335652171387670335" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/335652171387670335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/335652171387670335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/fLpIszpJJcI/ressurectum.html" title="Ressurectum" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2009/01/ressurectum.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8GQHwzfip7ImA9WBRbFk0.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-112860782127589647</id><published>2005-10-06T11:10:00.000-03:00</published><updated>2005-10-06T11:10:21.286-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-10-06T11:10:21.286-03:00</app:edited><title>Brazilian Joe's Hideout</title><content type="html">Ping? Pong!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-112860782127589647?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-mOfz60oLnloP3llK6NCRh2GL1w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-mOfz60oLnloP3llK6NCRh2GL1w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-mOfz60oLnloP3llK6NCRh2GL1w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-mOfz60oLnloP3llK6NCRh2GL1w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/c4ntZPmR6H8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/112860782127589647/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=112860782127589647" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/112860782127589647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/112860782127589647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/c4ntZPmR6H8/brazilian-joes-hideout.html" title="Brazilian Joe's Hideout" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2005/10/brazilian-joes-hideout.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcERnszfip7ImA9WBRTFUo.&quot;"><id>tag:blogger.com,1999:blog-14210740.post-112057000758477116</id><published>2005-07-05T10:26:00.000-03:00</published><updated>2005-07-05T10:26:47.586-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2005-07-05T10:26:47.586-03:00</app:edited><title>Bling!</title><content type="html">&lt;span style="font-family: trebuchet ms;"&gt;It's Alive!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14210740-112057000758477116?l=brazilianjoe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MyfnvnZODV5XhPXAzUXsX5d4eb4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MyfnvnZODV5XhPXAzUXsX5d4eb4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MyfnvnZODV5XhPXAzUXsX5d4eb4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MyfnvnZODV5XhPXAzUXsX5d4eb4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/BrazilianJoesHideout/~4/TLRS3VG3VuQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://brazilianjoe.blogspot.com/feeds/112057000758477116/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=14210740&amp;postID=112057000758477116" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/112057000758477116?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/14210740/posts/default/112057000758477116?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BrazilianJoesHideout/~3/TLRS3VG3VuQ/bling.html" title="Bling!" /><author><name>Brazilian Joe</name><uri>http://www.blogger.com/profile/18213498135865093079</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://brazilianjoe.blogspot.com/2005/07/bling.html</feedburner:origLink></entry></feed>

