<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1641257716255176426</id><updated>2024-10-24T02:04:22.021-07:00</updated><category term="css3"/><category term="database"/><category term="developer html"/><category term="javascript"/><category term="mobile"/><category term="native app"/><category term="web app"/><title type='text'>Logicdesign Developer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://logicdeveloper.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1641257716255176426/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://logicdeveloper.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02163886874882655391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1641257716255176426.post-6081492696908313656</id><published>2012-08-22T06:25:00.002-07:00</published><updated>2012-08-23T01:38:31.531-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css3"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="developer html"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="native app"/><category scheme="http://www.blogger.com/atom/ns#" term="web app"/><title type='text'>Mobile native apps storage using HTML5</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNpuxeVo93_k-uEm9W4pXrreaz1eY42AIZylcBWXYl_zIpcVad3fq8-eRYL2UXStBXujWxm_b8lWpWYjhvWs140bxellOxSwxSd_kKX7WOv-3WYQ-2JYK4LxiYCVLRGci4kgVgD9HG9qU/s1600/Platform-as-a-Service.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNpuxeVo93_k-uEm9W4pXrreaz1eY42AIZylcBWXYl_zIpcVad3fq8-eRYL2UXStBXujWxm_b8lWpWYjhvWs140bxellOxSwxSd_kKX7WOv-3WYQ-2JYK4LxiYCVLRGci4kgVgD9HG9qU/s320/Platform-as-a-Service.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;In this article I will speak about the database storage capabilities in HTML5 and how to enhance the native mobile app creation using them.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
As you maybe already know, we have quite a pack of frameworks hanging around that allow us to generate a native application using HTML5, CSS3 and Javascript. The apps created using those frameworks can be uploaded to their respectives app markets like any other native application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here you have some of them:&amp;nbsp; &lt;br /&gt;
&lt;a href=&quot;http://phonegap.com/&quot; target=&quot;_blank&quot;&gt;Phonegap&lt;/a&gt;, &lt;a href=&quot;http://www.appcelerator.com/&quot; target=&quot;_blank&quot;&gt;appcelerator&lt;/a&gt;, &lt;a href=&quot;http://www.redfoundry.com/&quot; target=&quot;_blank&quot;&gt;redfoundry,&lt;/a&gt; &lt;a href=&quot;http://rhomobile.com/&quot; target=&quot;_blank&quot;&gt;rhomobile&lt;/a&gt;, &lt;a href=&quot;http://www.appmobi.com/&quot; target=&quot;_blank&quot;&gt;appmobi&lt;/a&gt;, &lt;a href=&quot;http://www.anscamobile.com/&quot; target=&quot;_blank&quot;&gt;anscamobile&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
When we talk about the HTML5 and CSS3 functionalities one question comes often: &lt;i&gt;Is it crossbrowser ?&lt;/i&gt; With the html5 to native frameworks you are using the inner browser of the mobile OS to encapsulate the html5 application so it runs like any other native app.&lt;br /&gt;
&lt;br /&gt;
The problem of crossbrowsing is nearly solved in this context for 86% of the market as iOS and Android are leading and they use webkit browsers !&lt;br /&gt;
&lt;br /&gt;
Here you can check the statistics regarding mobile phones usage:&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZzXtqIUGG05Dz7B5m9iSwLpvA4bMj4KgrHsDUS_5jIbjV_OIMYvt855bjRM98IjN61UYTU-fe925c0D9Qr4l_o3XgGtElv2hav_LCnEkwS6uLEpcFL9sXFFzKFdE3L6WSK0_PzWIxqIY/s1600/os-mob.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;211&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZzXtqIUGG05Dz7B5m9iSwLpvA4bMj4KgrHsDUS_5jIbjV_OIMYvt855bjRM98IjN61UYTU-fe925c0D9Qr4l_o3XgGtElv2hav_LCnEkwS6uLEpcFL9sXFFzKFdE3L6WSK0_PzWIxqIY/s320/os-mob.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;22 august 2012 - http://www.netmarketshare.com/mobile-market-share&lt;/td&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Despite there is still a 14% that uses other kind of browsers we can be sure of the compatibility as we release each version in a platform specific compiled package.&lt;br /&gt;
&lt;br /&gt;
In most cases we aim the two leading platforms iOS and Android, both using a webkit based browser.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Client side storage:&amp;nbsp;&lt;/h2&gt;
&lt;h3&gt;
Cookies: &lt;/h3&gt;
There are different types of storage systems on browsers.&lt;br /&gt;
The most well known is the cookie storage. It has been used for a long time but it is quite restrictive as it only allows to store pairs of key-value with a 4ko size limit.&lt;br /&gt;
&lt;br /&gt;
Another disadvantage is that cookies are send using http headers and that slows down the website. Cookies are generally used to storage an identifier string and the data is in fact stored in a distant server.&lt;br /&gt;
&lt;br /&gt;
But other storage systems are appearing that allow us to go farther: Web storage, Index Database, Web SQL database and File storage.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Web SQL database:&lt;/h3&gt;
The web SQL database system is implemented by all webkit browsers ( Android and iOS default browsers ). This dabase system uses SQLite, a well known relational database (
almost the same as MySQL ), that will allow you to manage information using joints, and other interesting functions of the SQL.&lt;br /&gt;
&lt;br /&gt;
This SQL db uses transactions. A transaction allow to execute one or more sql sentences and if there are any error during the execution, to rollback to the state before the transaction. &lt;br /&gt;
&lt;br /&gt;
As you allready should know, lll the SQL management is done inside a &amp;lt;script&amp;gt; tag, using javascript.&lt;br /&gt;
&lt;br /&gt;
To create a database or to connect to an allready created database we have to call the openDatabase method.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;h4&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;openDatabase([database Name],[Version],[Description],[Size], [creationCallback] );
&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
The &lt;i&gt;openDatabase&lt;/i&gt; method is used to open a database  if it already exists or to create it if it doesn&#39;t exist.&lt;br /&gt;
&lt;table cellpadding=&quot;5&quot; class=&quot;src&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Above method takes five parameters:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Database name &lt;/li&gt;
&lt;li&gt;Version number&lt;/li&gt;
&lt;li&gt;Text description&lt;/li&gt;
&lt;li&gt;Size of database&lt;/li&gt;
&lt;li&gt;Creation callback&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
The creation callback is only executed if a database has been created, and it&#39;s optional.&lt;br /&gt;
&lt;br /&gt;
example:&amp;nbsp; &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp;var db = window.&lt;/b&gt;&lt;b&gt;openDatabase(&quot;Database&quot;, &quot;1.0&quot;, &quot;PhoneGap Demo&quot;, 200000);&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
To execute SQL statements you should call a transaction. The transaction has a single function argument that executes one or many SQL statements using &lt;b&gt;executeSql([SQL statement]);&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;db.transaction(function (tx) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;CREATE TABLE IF NOT EXISTS LOGS (id unique, log)&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;INSERT INTO LOGS (id, log) VALUES (1, &quot;foobar&quot;)&#39;);  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;INSERT INTO LOGS (id, log) VALUES (2, &quot;logmsg&quot;)&#39;);&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;});&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
If for any reason in the third operation there an error happens, the transaction won&#39;t be executed at all, rolling back the database to the state where it was before this trasaction. Great isn&#39;t ? This is one of some benefits from SQL databases.&lt;br /&gt;
&lt;br /&gt;
Now let&#39;s get things more interesting, we know how to create a database and how to create tables, insert and update data, but what about getting data from it ?&lt;br /&gt;
&lt;br /&gt;
The &quot;SELECT&quot; SQL statement is used as we have seen before, as a parameter of the executeSql function, but we need to add to more parameter to receive the rows from the database.&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;executeSql([SQL statement],[],[Select return function]);&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
full exemple:&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;var db = openDatabase(&#39;mydb&#39;, &#39;1.0&#39;, &#39;Test DB&#39;, 2 * 1024 * 1024);
db.transaction(function (tx) {&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;CREATE TABLE IF NOT EXISTS LOGS (id unique, log)&#39;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
 tx.executeSql(&#39;INSERT INTO LOGS (id, log) VALUES (1, &quot;foobar&quot;)&#39;);&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;INSERT INTO LOGS (id, log) VALUES (2, &quot;logmsg&quot;)&#39;);&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;});&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;db.transaction(function (tx) {&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.executeSql(&#39;SELECT * FROM LOGS&#39;, [], function (tx, results) {&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var len = results.rows.length, i;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg = &quot;&amp;lt;p&amp;gt;Found rows: &quot; + len + &quot;&amp;lt;/p&amp;gt;&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.querySelector(&#39;#status&#39;).innerHTML += msg;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; len; i++){&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(results.rows.item(i).log );&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, null);&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;});&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
This function will show the content of each column of logs&amp;nbsp; table inside the #status tag. This cover all the basic database functionalities you can do with html5 SQL database.&lt;br /&gt;
&lt;br /&gt;
Notice that this SQL system is to be used for relative complex database structure, other simpler structures can use the &quot;web storage&quot; ( with a better compatibility ) or a NoSQL database like the Indexed db API (still on it first steps, but really promissing) , or even the file storage system ( only avalaible on chrome, Android ) that allows the storage of big data structures ( files and folders ).&lt;br /&gt;
&lt;br /&gt;
With this information and examples you should be able to start using SQL databases inside your native mobile apps so what are you waiting ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Useful links, some used to write this post:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Here you have the &lt;a href=&quot;http://www.phonegap.com/&quot; target=&quot;_blank&quot;&gt;Phonegap&lt;/a&gt; ( aka Apache Cordova ) framework and their &lt;a href=&quot;http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html#Storage&quot; target=&quot;_blank&quot;&gt;SQL database tutorial&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Another tutorial with more specific explanations of the SQL functions: &lt;a href=&quot;http://www.tutorialspoint.com/html5/html5_web_sql.htm&quot;&gt;http://www.tutorialspoint.com/html5/html5_web_sql.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You can also find interesting the article from the W3C ( that announce they have stopped to maintain the specification) &lt;a href=&quot;http://dev.w3.org/html5/webdatabase/&quot;&gt;http://dev.w3.org/html5/webdatabase/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Other interesting resources: &lt;a href=&quot;http://www.html5rocks.com/en/tutorials/offline/whats-offline/&quot;&gt;http://www.html5rocks.com/en/tutorials/offline/whats-offline/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMxchgXP9CSMaZ-nhj7RoiCqSuOfnyhcUgRjINOiYeUS4Y4zqRX-2I1r2CvkQ-sdIivtHGoEKzSMBE6_IptrmiZbO6ICYkmPShcO0FMKRqzecThTLAgjS5T87ECOnS46lYA79IuvQEYcE/s1600/CFT0822_0823451A6A8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://logicdeveloper.blogspot.com/feeds/6081492696908313656/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://logicdeveloper.blogspot.com/2012/08/mobile-native-apps-storage-using-html5.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1641257716255176426/posts/default/6081492696908313656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1641257716255176426/posts/default/6081492696908313656'/><link rel='alternate' type='text/html' href='http://logicdeveloper.blogspot.com/2012/08/mobile-native-apps-storage-using-html5.html' title='Mobile native apps storage using HTML5'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02163886874882655391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNpuxeVo93_k-uEm9W4pXrreaz1eY42AIZylcBWXYl_zIpcVad3fq8-eRYL2UXStBXujWxm_b8lWpWYjhvWs140bxellOxSwxSd_kKX7WOv-3WYQ-2JYK4LxiYCVLRGci4kgVgD9HG9qU/s72-c/Platform-as-a-Service.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>