<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>竹部落</title><link>http://bamboobig.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BambooBig" /><description>My studying notebook</description><language>en</language><managingEditor>noreply@blogger.com (Cage)</managingEditor><lastBuildDate>Tue, 25 Oct 2011 01:48:51 PDT</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">59</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="bamboobig" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:thumbnail url="http://lh6.ggpht.com/cage.chung/SEf7GW49R_I/AAAAAAAADnE/n2kgZpHnrJU/CoffeeCup_Feed_76x76.png" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:image href="http://lh6.ggpht.com/cage.chung/SEf7GW49R_I/AAAAAAAADnE/n2kgZpHnrJU/CoffeeCup_Feed_76x76.png" /><itunes:subtitle>My studying notebook</itunes:subtitle><item><title>[Notebook] How to setup iphoneofflinemap on your iPhone, cydia requirement.</title><link>http://bamboobig.blogspot.com/2011/09/notebook-how-to-setup-iphoneofflinemap.html</link><category>Google Map</category><category>cydia</category><category>offlinemap</category><category>iOS</category><category>iphone</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 22 Sep 2011 08:49:03 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-4254225209475212993</guid><description>&lt;div&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
Smart phone map App may have already improved your life experience if you ever used it. You can check map anytime and anywhere on your smart phone but internet&amp;nbsp;necessary.&amp;nbsp;Offlinemap let you can check map without internet. It's very&amp;nbsp;convenient to you when you are in oversea or can't access the internet.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br clear="none" /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://code.google.com/p/iphoneofflinemap/"&gt;iphoneofflinemap&lt;/a&gt;&amp;nbsp;is an iphone cydia app that you can put offline map grabbed from Google map using&amp;nbsp;GMDL (Global Map Download Tool)&lt;/div&gt;
&lt;div&gt;
&lt;br clear="none" /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;span class="Apple-style-span" style="color: #6fa8dc; font-size: large;"&gt;simple scenario&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;
&lt;strong&gt;&lt;br clear="none" /&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;
preparing necessary tools → backup current iphone cache map →&amp;nbsp;Download target offline map → modify downloaded map → upload to iPhone → setup bookmark → respring&lt;/div&gt;
&lt;div&gt;
&lt;br clear="none" /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step1.Getting started. You need to download few tools.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.in7ane.com/psp/"&gt;GMDL&lt;/a&gt; (Global Map Download Tool). In iphoneofflinemap project. issues 59 reported: downloaded map doesn't work with ios4. Someone update a&amp;nbsp;GMDL ip4 v10 hack. You can download hacked version &lt;a href="http://d.pr/2HRn"&gt;here&lt;/a&gt; that you don't need to convert maps by&amp;nbsp;mapconverter anymore.&lt;/li&gt;
&lt;li&gt;SQLite manager Firefox extension that you can modify downloaded map.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.i-funbox.com/"&gt;iFunbox&lt;/a&gt; that you can upload offline maps to your iPhone very easily.&lt;/li&gt;
&lt;li&gt;install iphoneofflinemap app in cydia&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;Step2. backup iPhone current cache map.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Attache iPhone to computer and backup "&lt;strong&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;/var/mobile/Library/Caches/Map/MapTiles&lt;/span&gt;/&lt;/strong&gt;MapTiles.sqlitedb" &amp;nbsp;(this is original iPhone cache map)&amp;nbsp; by iFunbox.&lt;/div&gt;
&lt;div&gt;
&lt;br clear="none" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step3. Grab target offline map you want to download.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Download maps by GMDL.&lt;/li&gt;
&lt;li&gt;Convert maps tiles in an SQLite DB. The only one thing you should notice is locale. "en_TW" for example.&lt;br /&gt;&lt;br /&gt;&lt;a class="zoom" href="http://2.bp.blogspot.com/-klSDUzfpS_I/TntSKDSFW6I/AAAAAAAAaHs/LurXAjxmaz8/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Convert maps tiles in an SQLite DB"&gt;&lt;img border="0" height="117" src="http://2.bp.blogspot.com/-klSDUzfpS_I/TntSKDSFW6I/AAAAAAAAaHs/LurXAjxmaz8/s320/4.png" width="320" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In output folder. You can see "com.apple.Maps" and "MapTiles.sqlitedb". done.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step4. Modify download maps.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Open backup cache map earlier (original MapTiles.sqlitedb) by Firefox SQLite manager can check &lt;b&gt;version &lt;/b&gt;and &lt;b&gt;locale&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a class="zoom" href="http://3.bp.blogspot.com/-q82oP7xQtPQ/TntTa95nT3I/AAAAAAAAaHw/zNKy1CMXJ-w/s1600/8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="SQLite manager"&gt;&lt;img border="0" height="204" src="http://3.bp.blogspot.com/-q82oP7xQtPQ/TntTa95nT3I/AAAAAAAAaHw/zNKy1CMXJ-w/s320/8.jpg" width="320" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Modify downloaded MapTiles.sqlistedb version and locale same as cache map.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;Step5. Upload offline map to your iPhone.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;put target offline maps&amp;nbsp;MapTiles.sqlitedb to "&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;/var/mobile/Media/Maps/ChiMai&lt;/span&gt;&lt;/b&gt;". If Media don't have "&lt;b&gt;Maps&lt;/b&gt;" folder, create one and put maps on folder you want by iFunbox.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step6. Setup offline map bookmark.&lt;/b&gt;&lt;br /&gt;
Without internet access. you still can view map with GPS but search and direction. Therefore, it's better to put some map books in offline map also.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;you can visit Google Map (my places) and make some placemarks in maps called "Thailand trip" for example.&lt;br /&gt;&lt;br /&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/-fAZxH6zkZ-s/TntUTuvOo1I/AAAAAAAAaH0/_W1nwgAi20o/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Google Map My place"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-fAZxH6zkZ-s/TntUTuvOo1I/AAAAAAAAaH0/_W1nwgAi20o/s320/6.png" width="190" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;copy KML address and visit (&lt;a data-mce-href="http://vcenter.iis.sinica.edu.tw/mobile/kml/loadkml_map.html" href="http://vcenter.iis.sinica.edu.tw/mobile/kml/loadkml_map.html" shape="rect" target="_blank"&gt;http://vcenter.iis.sinica.edu.tw/mobile/kml/loadkml_map.html&lt;/a&gt;) to convert those placemarks to iPhone plist.&lt;br /&gt;&lt;br /&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/-cA0ICDpTlrg/TntUuB_PRTI/AAAAAAAAaH4/JKc_6OJNY_M/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="KML2Plist"&gt;&lt;img border="0" height="233" src="http://1.bp.blogspot.com/-cA0ICDpTlrg/TntUuB_PRTI/AAAAAAAAaH4/JKc_6OJNY_M/s320/7.png" width="320" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;upload Bookmarks.plist to&amp;nbsp;"&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;/var/mobile/Library/Map&lt;/span&gt;&lt;/b&gt;" (it's better to backup original one)&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div data-mce-style="margin-left: 30px;" style="margin-left: 30px;"&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step7. respring (it's very important).&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;open iphoneofflinemap (atlas) on iphone and "&lt;b&gt;remove all &amp;nbsp;caches&lt;/b&gt;".&lt;/li&gt;
&lt;li&gt;type your map and select copy&lt;/li&gt;
&lt;li&gt;select "Continues". &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Do NOT&lt;/span&gt;&lt;/b&gt; select "Map" directly.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;respring your iPhone&amp;nbsp;&lt;/li&gt;
&lt;li&gt;turn off 3G, WiFi and Data. You can use offline map now.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;b&gt;Result.&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="zoom" href="http://1.bp.blogspot.com/-EgkVWx2VTuc/TntWNabwsNI/AAAAAAAAaH8/6qYmLZkCMHM/s1600/Photo+11-9-22+23+35+27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-EgkVWx2VTuc/TntWNabwsNI/AAAAAAAAaH8/6qYmLZkCMHM/s320/Photo+11-9-22+23+35+27.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="zoom" href="http://3.bp.blogspot.com/-E6QHtVnbmFk/TntWORmozkI/AAAAAAAAaIA/SywN1TDSlTs/s1600/Photo+11-9-22+23+35+36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-E6QHtVnbmFk/TntWORmozkI/AAAAAAAAaIA/SywN1TDSlTs/s320/Photo+11-9-22+23+35+36.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-4254225209475212993?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-22T23:49:03.469+08:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/-klSDUzfpS_I/TntSKDSFW6I/AAAAAAAAaHs/LurXAjxmaz8/s72-c/4.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>[Notebook] Using jQuery templates in Google AppEngine</title><link>http://bamboobig.blogspot.com/2011/09/notebook-using-jquery-templates-in.html</link><category>GAE</category><category>Django</category><category>AppEngine</category><category>jquery</category><category>templates</category><category>Google</category><category>Python</category><author>noreply@blogger.com (Cage)</author><pubDate>Sun, 04 Sep 2011 07:54:36 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-2011955155996665649</guid><description>&lt;div&gt;
jQuery is a powerful javascript library that you can improve web browser experience just add some js codes. jQuery also has a lot of useful plugin you can add. lightbox, autocomplete etc.&lt;br /&gt;
&lt;br /&gt;
jQuery supports Templates plugin now that you can render HTML code very&amp;nbsp;simply. &lt;a href="http://api.jquery.com/category/plugins/templates/"&gt;Here&lt;/a&gt; has very detail document and tutorial. Today, i will talk about how to use jQuery templates in Google AppEngine. What is the problem using jQuery templates in Google AppEngine web application.?&amp;nbsp;&lt;b&gt;Braces {}&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Templates syntax.&lt;/b&gt;&lt;br /&gt;
Google AppEngine Django template.&lt;br /&gt;
&lt;pre class="prettyprint"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;{% for item in objs %}
	{{item}},
{% endfor %}&lt;/span&gt; &lt;/pre&gt;
&lt;br /&gt;
jQuery Templates&lt;br /&gt;
&lt;pre class="prettyprint"&gt;&amp;lt;script id="doclistTmp" type="text/x-jquery-tmpl"&amp;gt;
        {{each(i, o) obj}}
        &amp;lt;tr class="{{if i%2== 0}}odd{{else}}even{{/if}}"&amp;gt;
            &amp;lt;td&amp;gt; ${title}&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;${type}&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;${folders}&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        {{/each}}
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
They both use brases is problem that you will meet it if you want to use jQuery templates via ajax in Google AppEngine. Then, how to setup jQuery templates in Google AppEngine.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step1.&lt;/b&gt;&lt;br /&gt;
Register a tag in a py file called "&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 15px; white-space: pre-wrap;"&gt;verbatim_templatetag.py&lt;/span&gt;" {{if condition}} print something{{/if}}. Tell Django don't change anything within this tag.&lt;br /&gt;
&lt;pre class="prettyprint"&gt;"""
jQuery templates use constructs like:

    {{if condition}} print something{{/if}}

This, of course, completely screws up Django templates,
because Django thinks {{ and }} mean something.

Wrap {% verbatim %} and {% endverbatim %} around those
blocks of jQuery templates and this will try its best
to output the contents with no changes.
"""

from django import template

register = template.Library()

class VerbatimNode(template.Node):

    def __init__(self, text):
        self.text = text

    def render(self, context):
        return self.text

@register.tag
def verbatim(parser, token):
    text = []
    while 1:
        token = parser.tokens.pop(0)
        if token.contents == 'endverbatim':
            break
        if token.token_type == template.TOKEN_VAR:
            text.append('{{')
        elif token.token_type == template.TOKEN_BLOCK:
            text.append('{%')
        text.append(token.contents)
        if token.token_type == template.TOKEN_VAR:
            text.append('}}')
        elif token.token_type == template.TOKEN_BLOCK:
            text.append('%}')
    return VerbatimNode(''.join(text))&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Step2.&lt;/b&gt;&lt;br /&gt;
Include custom tag in your py file that you use web template&lt;br /&gt;
&lt;pre class="prettyprint"&gt; template.register_template_library('verbatim_templatetag') &lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Step3.&lt;/b&gt;&lt;br /&gt;
Add you jQuery template to html page.&lt;br /&gt;
&lt;pre class="prettyprint"&gt; {% verbatim %}
        &amp;lt;script id="movieTemplate" type="text/x-jquery-tmpl"&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;td&amp;gt;${posted}&amp;lt;/td&amp;gt;
                &amp;lt;td&amp;gt;&amp;lt;a href="${link}"&amp;gt;${response_count}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
                &amp;lt;td&amp;gt;{{html content}}&amp;lt;/td&amp;gt;
            &amp;lt;/tr&amp;gt;
        &amp;lt;/script&amp;gt;
 {% endverbatim %} &lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Step.4&lt;/b&gt;&lt;br /&gt;
call jQuery templates.&lt;br /&gt;
&lt;pre class="prettyprint"&gt;  $("#movieList").html($("#movieTemplate").tmpl( plurks )); &lt;/pre&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Reference&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://api.jquery.com/category/plugins/templates/"&gt;jQuery Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/jquery/jquery-tmpl"&gt;jQuery Templates (github)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-2011955155996665649?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-04T22:54:36.354+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Manage ebooks download list with Google Reader and RTM</title><link>http://bamboobig.blogspot.com/2011/05/manage-ebooks-download-list-with-google.html</link><category>RTM</category><author>noreply@blogger.com (Cage)</author><pubDate>Mon, 09 May 2011 08:33:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-7342061739102425501</guid><description>&lt;meta charset="utf-8"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 15px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;cause tablet computer like iPad etc. It's very convenient to read ebook (epub, pdf, etc) in your tablet computer anywhere. I like to download pdf ebook from websites and upload to my Google Docs. Then, i have my own ebook bookshelf on the cloud. I subscript few ebooks shared website. Most of those ebooks shared from web spaces that is limited download if you don't pay money. So, i create a RTM list to manage how many ebooks i haven't download. Once i downad it and i will mark it complete.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;simple scenario is:&lt;/b&gt;
&lt;br /&gt;Google Reader → send to function → RTM
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;step:&lt;/b&gt;
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;RTM setting: create a list called "ebook"&lt;/li&gt;&lt;li&gt;viste: https://m.rememberthemilk.com/add
&lt;br /&gt;after login your RTM. you will see the a simple form.
&lt;br /&gt;you can get "List" dropdown list value(id) by viewing sources code. ebook&lt;/li&gt;&lt;li&gt;Google Reader setting:
&lt;br /&gt;options &amp;gt; Reader settings &amp;gt; Send To, Create a custom link&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Name: RTM(ebook download)&lt;/li&gt;&lt;li&gt;URL: https://m.rememberthemilk.com/add?name=${title}&amp;amp;url=${url}&amp;amp;due=2 days&amp;amp;priority=3&amp;amp;repeat=0&amp;amp;estimate=5 minutes&amp;amp;tags=download&amp;amp;list=[your ebook list id]&lt;/li&gt;&lt;li&gt;Icon url: http://www.rememberthemilk.com/favicon.ico&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;fill form out with above value. You might notice that you can assign due, priority etc. The most important here is your ebook list id (you can get it at step 2). After finishing and save.
&lt;br /&gt;
&lt;br /&gt;All settings done.
&lt;br /&gt;Now, you can subscript ebook download site (http://www.wowebook.com/ for example) RSS. Once you get a new RSS and want to add to your RTM ebook download list. Just click "send to &amp;gt; RTM(ebook download)". You will redirect to http://m.rememberthemilk.com. Click "Add Task". done.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 15px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 15px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;i post it to RTM forum&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 15px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;https://www.rememberthemilk.com/forums/tips/12673/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-7342061739102425501?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T23:33:24.495+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Google Reader's Toggle Icon</title><link>http://bamboobig.blogspot.com/2010/07/google-readers-toggle-icon.html</link><category>icon</category><category>Css</category><author>noreply@blogger.com (Cage)</author><pubDate>Wed, 07 Jul 2010 00:13:58 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-954677878881817257</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/TDQjXZM1o2I/AAAAAAAAW-M/wm2BRiM03uE/s1600/toggleIcon.png" imageanchor="1" rel="20100707" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/TDQjXZM1o2I/AAAAAAAAW-M/wm2BRiM03uE/s320/toggleIcon.png" width="154" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
If you have used &lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt;. There is a toggle icon you can click and expand all items view size. This toggle icon is a small blue arrow. Is it a image? No. It's just a CSS tips and tricks. How does CSS do it?&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Toggle icon DOM element&lt;/b&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;...
＜td id="chrome-lhn-toggle"＞
    ＜div id="chrome-lhn-toggle-icon"＞＜/div＞
＜/td＞
...
&lt;/pre&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Toggle icon CSS&lt;/b&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;{
    width: 0;
    height: 0;
    border-color: #ebeff9 #68e #ebeff9 #ebeff9;
    border-style: solid;
    border-width: 5px 5px 5px 0;
}
&lt;/pre&gt;&lt;br /&gt;
You just need to assign the "&lt;b&gt;border&lt;/b&gt;" CSS to toggle icon DOM element like ahove. &lt;br /&gt;
You may have to assign others CSS if you want this toggle icon in that correct position you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/TDQjYtFEHDI/AAAAAAAAW-Q/25O6i6138ag/s1600/2010-07-07_142936.png" imageanchor="1" rel="20100707" style="margin-left: 1em; margin-right: 1em;" title="border CSS order"&gt;&lt;img border="0" height="138" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/TDQjYtFEHDI/AAAAAAAAW-Q/25O6i6138ag/s320/2010-07-07_142936.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;border Css order style&lt;/b&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;#right{
border-style:solid;
border-color: red green blue yellow;
border-style: solid;
border-width: 50px 50px 50px 50px;
width:0;
height:0;
display:inline-block;
}
#left{
border-style:solid;
border-color: #ebeff9 #68e #ebeff9 #ebeff9;
border-style: solid;
border-width: 50px 50px 50px 50px;
width:0;
height:0;
display:inline-block;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;Whole DOM and CSS code&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;//DOM
...
＜td id="chrome-lhn-toggle"＞
    ＜div id="chrome-lhn-toggle-icon"＞＜/div＞
＜/td＞
...
//CSS
#chrome-lhn-toggle:hover {
background: #C2CFF1;
}
#chrome-lhn-toggle, #chrome-viewer {
padding: 0px;
vertical-align: top;
}
#chrome-lhn-toggle {
background: #EBEFF9;
cursor: pointer;
width: 8px;
}
#chrome-lhn-toggle:hover #chrome-lhn-toggle-icon {
border-color: #C2CFF1 white #C2CFF1 #C2CFF1;
}
#chrome-lhn-toggle-icon {
border-color: #EBEFF9 #68E #EBEFF9 #EBEFF9;
border-style: solid;
border-width: 5px 5px 5px 0px;
height: 0px;
margin-left: 1px;
margin-top: -5px;
position: absolute;
top: 50%;
width: 0px;
}
#chrome-lhn-toggle-icon {
font-size: 1px;
line-height: 1px;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;This is a simple way to make a arrow icon by pure CSS instead of assigning image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-954677878881817257?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-07T15:13:58.105+08:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_R8RzIm7ykRo/TDQjXZM1o2I/AAAAAAAAW-M/wm2BRiM03uE/s72-c/toggleIcon.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Convert rgb color to hex color</title><link>http://bamboobig.blogspot.com/2010/07/convert-rgb-color-to-hex-color.html</link><category>rgb</category><category>color</category><category>Javscript</category><category>hex</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 01 Jul 2010 20:13:44 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-8068517200685591876</guid><description>&lt;div&gt;If you have written HTML file, you must know that how to assign color to DOM element. You just need to assign CSS style to &lt;/div&gt;&lt;div&gt;DOM element like&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;＜span style="color:#ff0000"＞This is text＜/span＞&lt;br /&gt;&lt;/pre&gt;It is very simple. But, we may want to change the color &lt;/div&gt;&lt;div&gt;by Javascript like color picker. What's the problem? You may get the "rgb(255, 0, 0)" color value by Javascript.&lt;/div&gt;&lt;div&gt;Then, you have to convert rgb to hex color or convert hex to rgb color. The following is simple code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;rgb to hex&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;function rgb2hex(rgb){&lt;br /&gt;   var hexDigits = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");&lt;br /&gt;   var hex = function(x){&lt;br /&gt;       return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];&lt;br /&gt;   };&lt;br /&gt;   var tmp = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);&lt;br /&gt;   var color = hex(tmp[1]) + hex(tmp[2]) + hex(tmp[3]);&lt;br /&gt;   return color;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;hex to rgb&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;function hex2rgb(v){&lt;br /&gt;   if (/^[0-9A-F]{3}$|^[0-9A-F]{6}$/.test(v.toUpperCase())) {&lt;br /&gt;       if (v.length == 3) {&lt;br /&gt;           v = v.match(/[0-9A-F]/g);&lt;br /&gt;           v = v[0] + v[0] + v[1] + v[1] + v[2] + v[2];&lt;br /&gt;           this.value = v;&lt;br /&gt;       }&lt;br /&gt;      &lt;br /&gt;       var r = parseInt(v.substr(0, 2), 16);&lt;br /&gt;       var g = parseInt(v.substr(2, 2), 16);&lt;br /&gt;       var b = parseInt(v.substr(4, 2), 16);&lt;br /&gt;       return [r, g, b].join(',');&lt;br /&gt;   }&lt;br /&gt;   return v;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;var input = $(this).css('color'); // rgb(255,0,0)&lt;br /&gt;&lt;br /&gt;var hex = rgb2hex(input); //ff0000&lt;br /&gt;var rgb = hex2rgb(hex);   //255,0,0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-8068517200685591876?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-02T11:13:44.008+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>[Chrome Extensions] QuietRead V2.1.0 Released</title><link>http://bamboobig.blogspot.com/2010/05/chrome-extensions-quietread-v210.html</link><category>Docs</category><category>Extensions</category><category>Chrome</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Sat, 01 May 2010 02:04:05 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-6753660195074046677</guid><description>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #0000ee;"&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;Chrome Extension - Quietread V2.1.0 Released&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
My last updated (v2.0.1) was one month ago. The biggest changed on Chrome extension Quietread V2.x was using Google OAuth for authorization. The Users don't type their Google Account and Password. It's more convenient and safe to access user's data on Google Spreadsheet. &lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Then, what's updated at version V2.1.0. The following list is simple summary. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Add Tags and Notes feature for each Item. Now, you could add tags or notes to help you find out specific item you haven't finished. &lt;/li&gt;
&lt;li&gt;Search and tags support auto complete. You could use multiple keywords (ex: tags:jquery 2010). The results will highlight also. &lt;/li&gt;
&lt;li&gt;Quietread supports auto fetch your data from Google Docs spreadsheet in background in specific period. Default setting is 300 secs. You also could update immediately by clicking refresh button.&lt;/li&gt;
&lt;li&gt;You could share link what you read to your friend by email button. &lt;/li&gt;
&lt;li&gt;Add page and remove page by keyboard short keys. &lt;/li&gt;
&lt;/ul&gt;The summary above are new features. Then, what features are pull off at this version.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Sorting. I take searching instead of sorting. &lt;/li&gt;
&lt;li&gt;Show list by keyboard short keys. This feature does not work very well because of some specific pages like Chrome Home page.&lt;/li&gt;
&lt;li&gt;Automatic add page by clicking Quietread icon. It seems a little bit annoy.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Layout&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9vf9ZBK-3I/AAAAAAAAWFA/cAlizY9BydE/s1600/1-1.png" rel="20100430"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5466208818525043570" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9vf9ZBK-3I/AAAAAAAAWFA/cAlizY9BydE/s400/1-1.png" style="cursor: pointer; display: block; height: 400px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 314px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;Edit Notes&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/S9vhKi-LrEI/AAAAAAAAWFg/dCkyyUZ0vJQ/s1600/2.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_R8RzIm7ykRo/S9vhKi-LrEI/AAAAAAAAWFg/dCkyyUZ0vJQ/s400/2.png" width="311" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Edit Tags&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vhKykuMbI/AAAAAAAAWFk/D-U6XgRxiZg/s1600/3.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vhKykuMbI/AAAAAAAAWFk/D-U6XgRxiZg/s400/3.png" width="312" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;Search box&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9vhKyxK_iI/AAAAAAAAWFo/l0sJ_XZiTfw/s1600/4.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9vhKyxK_iI/AAAAAAAAWFo/l0sJ_XZiTfw/s400/4.png" width="312" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Search for specific tag&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/S9vhLI7htaI/AAAAAAAAWFs/5u8CYE9SLC8/s1600/5.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/S9vhLI7htaI/AAAAAAAAWFs/5u8CYE9SLC8/s400/5.png" width="312" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Search for specific tag and keyword&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vhLn85qVI/AAAAAAAAWFw/jRSUUzJTPgU/s1600/6.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vhLn85qVI/AAAAAAAAWFw/jRSUUzJTPgU/s400/6.png" width="312" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Options&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9viuC6tGDI/AAAAAAAAWGM/J1zd-Hz42dE/s1600/7.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9viuC6tGDI/AAAAAAAAWGM/J1zd-Hz42dE/s400/7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Notices&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="zoom" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vi6kYhKTI/AAAAAAAAWGQ/kcVRq-zoM7k/s1600/8-1.png" imageanchor="1" rel="20100430" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/S9vi6kYhKTI/AAAAAAAAWGQ/kcVRq-zoM7k/s400/8-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;There may have problem when you update Quietread to version 2.1.0. You have to make sure "QuietreadQueue" that on your Google Docs has 7 columns at least.&lt;/div&gt;&lt;div class="btn"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;p class="btn"&gt;&lt;a href="https://chrome.google.com/extensions/detail/jcompkbkkcdgjigcmedmeggjbjelcojn"&gt;Download Quietread V2.1.0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-6753660195074046677?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-01T17:04:05.612+08:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_R8RzIm7ykRo/S9vf9ZBK-3I/AAAAAAAAWFA/cAlizY9BydE/s72-c/1-1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Blogger Template Testing</title><link>http://bamboobig.blogspot.com/2010/03/blogger-template-testing.html</link><category>tset</category><author>noreply@blogger.com (Cage)</author><pubDate>Tue, 23 Mar 2010 09:09:08 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-4527777308403438005</guid><description>&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;section subject&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="btn"&gt;&lt;br /&gt;&lt;a href="http://www.google.com"&gt;Google Search&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rearrange related posts code.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt; blockquote area&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;this.etag = json.gd$etag;&lt;br /&gt;var row = {};&lt;br /&gt;row.faviconurl = Url.decode(json.entry.gsx$faviconurl.$t);&lt;br /&gt;row.url        = Url.decode(json.entry.gsx$url.$t);&lt;br /&gt;row.title      = Url.decode(json.entry.gsx$title.$t);&lt;br /&gt;row.createdate = json.entry.gsx$createdate.$t;&lt;br /&gt;row.click      = json.entry.gsx$click.$t;&lt;br /&gt;row.edit       = json.entry.link[1].href;&lt;br /&gt;row.etag       = json.entry.gd$etag.$t;&lt;br /&gt;result.push(row);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-4527777308403438005?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T00:09:08.617+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>[Chrome Extensions] QuietRead</title><link>http://bamboobig.blogspot.com/2009/12/chrome-extensions-quietread.html</link><category>API</category><category>Extensions</category><category>Chrome</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:11:10 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-6174992440404423522</guid><description>&lt;div style="text-align: left;"&gt;Two weeks ago. I went to join &lt;a href="http://www.taipei-gtug.org/home"&gt;Taipei GTUG&lt;/a&gt; (Google Technology User Group) &lt;a href="http://www.taipei-gtug.org/events/google-chrome-hackathon-2009"&gt;Google Chrome Hackathon&lt;/a&gt;. At the Chrome Hackathon, the people who attended want to developed few useful, interesting, funny Google Chrome extensions.&lt;/div&gt;&lt;div&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:Arial, Verdana, sans-serif;font-size:13px;"&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;In my team (although 2 members) want to develop a useful chrome extensions. Nowadays, it's very convenient to search anything on the internet. Shopping, documents, and news for instance.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;You might browse a lot links in one day. How come you could remember all of that links. You might say that you can use bookmark to keep the URL you haven't read it but you interested in it. It's a good method. I use the bookmarks in different browsers too. But, i will keep the link to my bookmarks i thought it's helpful to me. So, i need to any way to keep the URL for a while. That's why QuieRead from. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;What's QuietRread?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;QuietRead is very simple concept. You might have used the similar service on the internet. What's different between they and QuietRead. I assume you already have a Google Account (If you haven't. Have one). Because QuietRead use Google Documnet List Data API &amp;amp; Google SpreadSheet Data API to save the URL in your Google Docs SpreadSheet. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;What does QuietRead do?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Quick answer: Add and remove URL on Google Docs specific SpreadSheet. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;How does QuietRead work?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because QuietRead use Google Documnet List Data API &amp;amp; Google SpreadSheet Data API, you have to login your Google account first in QuietRead extensions Option page. Following are simple step.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Login in your Google Account.&lt;/li&gt;&lt;li&gt;If login is succeed. Then, QuietRead will try to get Google Document List Data API &amp;amp; Google SpreadSheet Data API authorization. &lt;/li&gt;&lt;li&gt;Check "QuietreadQueue" spreadsheet file on your Google Docs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If "QuietreadQueue" is exist, loading data. If "QuietreadQueue" isn't exist. create new one.&lt;/li&gt;&lt;li&gt;now, you can add and remove URL in Chrome QuietRead Extensions.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a class="zoom" rel="20091224" title="QuietRead Icon" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/SzNmcdeW0RI/AAAAAAAAT5A/MlKxOHAwyPE/01.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_R8RzIm7ykRo/SzNmcdeW0RI/AAAAAAAAT5A/MlKxOHAwyPE/s400/01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5418787415791161618" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 305px; height: 132px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="zoom" rel="20091224" title="QuietRead Popup" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/SzNmcqk5GII/AAAAAAAAT5I/terP1cHknKc/02.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_R8RzIm7ykRo/SzNmcqk5GII/AAAAAAAAT5I/terP1cHknKc/s400/02.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5418787419308234882" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 371px; height: 400px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="zoom" rel="20091224" title="QuietRead Option page" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/SzNmczQlyNI/AAAAAAAAT5Q/E1tsUbbD008/04.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_R8RzIm7ykRo/SzNmczQlyNI/AAAAAAAAT5Q/E1tsUbbD008/s400/04.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5418787421639002322" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 246px; " /&gt;&lt;/a&gt;&lt;a class="zoom" rel="20091224" title="the links you saved in your Google Docs" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/SzOC6ocfiHI/AAAAAAAAT5Y/UG3Xju0KXIE/05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 254px;" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/SzOC6ocfiHI/AAAAAAAAT5Y/UG3Xju0KXIE/s400/05.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418818720457787506" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="btn"&gt;&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/jcompkbkkcdgjigcmedmeggjbjelcojn"&gt;Google Chrome QuietRead Extensions&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-6174992440404423522?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:11:10.047+08:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_R8RzIm7ykRo/SzNmcdeW0RI/AAAAAAAAT5A/MlKxOHAwyPE/s72-c/01.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>[Web Tool] SpriteMe</title><link>http://bamboobig.blogspot.com/2009/11/web-tool-spriteme.html</link><category>WebTool</category><category>Css</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 12 Nov 2009 07:27:13 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-526014978140939354</guid><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" class="zoom" title="SpriteMe" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/Svwld7hE98I/AAAAAAAARy8/0zTBEC-6SmU/SpriteMe.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_R8RzIm7ykRo/Svwld7hE98I/AAAAAAAARy8/0zTBEC-6SmU/s400/SpriteMe.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5403234849060616130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Recently, I read two books about performance article "High performance web sites: essential knowledge for frontend engineers"[1] and "Even Faster Web Sites: Essential Knowledge for Frontend Engineers"[2] by Steve Souders.&lt;/p&gt;&lt;p&gt;hat two books are very good books let you can understand how to increase web performance. I found few web tools in my searching. SpriteMe is one my want to share you guys. What is SpriteMe?&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Background images make pages look good, but also make them slower. Each background image is an extra HTTP request. There's a fix: combine background images into a CSS sprite. But creating sprites is hard, requiring arcane knowledge and lots of trial and error. SpriteMe removes the hassles with the click of a button.&lt;/p&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;br/&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://books.google.com/books?id=jRVlgNDOr60C&amp;printsec=frontcover&amp;hl=zh-TW#v=onepage&amp;q=&amp;f=false"&gt;High performance web sites: essential knowledge for frontend engineers [1]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://books.google.com/books?id=E7p-07kNfXYC&amp;printsec=frontcover&amp;hl=zh-TW#v=onepage&amp;q=&amp;f=false"&gt;Even Faster Web Sites: Essential Knowledge for Frontend Engineers [2]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://spriteme.org/"&gt;SpriteMe&lt;/a&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-526014978140939354?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-12T23:27:13.383+08:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_R8RzIm7ykRo/Svwld7hE98I/AAAAAAAARy8/0zTBEC-6SmU/s72-c/SpriteMe.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Rearrange Blogger Template Related Post &amp; Add New Features</title><link>http://bamboobig.blogspot.com/2009/11/rearrange-blogger-template-related-post.html</link><category>Tip</category><category>Blogger</category><author>noreply@blogger.com (Cage)</author><pubDate>Sat, 07 Nov 2009 16:43:14 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-7724665992786501790</guid><description>&lt;p&gt;Today i spent few time to modify Blogger template like:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rearrange related posts code.&lt;/li&gt;&lt;li&gt;prettyprint code syntax highlight.&lt;/li&gt;&lt;li&gt;Adding FancyBox lightBox and modify new.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I will keep on arranging my Blogger template and help it can more friendly. There had three parts on the above list. Second list is google code pretttify. I change my code syntax from &lt;a href="http://code.google.com/p/syntaxhighlighter/"&gt;syntaxhighligher&lt;/a&gt; to &lt;a href="http://code.google.com/p/google-code-prettify/"&gt;google-code-prettify&lt;/a&gt;. Google-code-prettify is using easier than syntaxhighlighter. You can just include two file(prettify.js &amp;amp; prettify.css) add function to execute prettify. Done!! Third list is &lt;a href="http://fancybox.net/"&gt;FancyBox&lt;/a&gt; lightBox jQuery plugin.  If you are familiar with jQuery. I think it's easy to add that plugin to your web page. About first list is what i want to share how do i arrange the Related Posts.&lt;/p&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Related Posts&lt;/span&gt;&lt;/span&gt;&lt;p&gt;Until now, Blogger haven't support related posts in your blogger template. If you want to add that feature, you have to modify some template code and add few javascript function to do that.&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Scenario&lt;/span&gt;&lt;/b&gt;&lt;p&gt;How does related posts work? The scenario is easy to understand. When you want to write new post, you will add Labels for this post on the bottom of Blogger editor. You add tags for the post you wrote. When web user visit your blog, related posts feature will list other relation posts following post content by specific tag. (&lt;span&gt;&lt;span&gt;you have three types can show related posts on your blog depending Blogger template pageType: 'item', 'archive', or 'index').[1]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="prettyprint"&gt;&amp;lt;b:if cond='data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&amp;gt;&lt;br /&gt;    &amp;lt;script expr:src='&amp;amp;quot;/feeds/posts/default/-/&amp;amp;quot; + data:label.name + &amp;amp;quot;?alt=json-in-script&amp;amp;amp;callback=RelatedLabels&amp;amp;amp;max-results=10&amp;amp;quot;'&lt;br /&gt;    type='text/javascript'&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/b:if&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I want to show related posts in user view specific page. So, i assign pageType is 'item'. As you can see. you can receive specific tag post content by callback function using Google Data Protocol[2].  Following is complete code to get all tage you add.&lt;/p&gt;&lt;pre class="prettyprint"&gt;&amp;lt;b:loop values='data:post.labels' var='label'&amp;gt;&lt;br /&gt;&amp;lt;!-- Fixed for Related Posts --&amp;gt;&lt;br /&gt;&amp;lt;b:if cond='data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&amp;gt;&lt;br /&gt;  &amp;lt;script expr:src='&amp;amp;quot;/feeds/posts/default/-/&amp;amp;quot; + data:label.name + &amp;amp;quot;?alt=json-in-script&amp;amp;amp;callback=RelatedLabels&amp;amp;amp;max-results=10&amp;amp;quot;'&lt;br /&gt;  type='text/javascript'&amp;gt;&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/b:if&amp;gt;&lt;br /&gt;&amp;lt;/b:loop&amp;gt;&lt;/pre&gt;&lt;p&gt;Finial, you need to render those data to web page. You can have simple function to do that like this.&lt;/p&gt;&lt;p&gt;After solving how receive data from Blogger template Layout data and render to web page. The key point of Related posts is parse data you need.&lt;/p&gt;&lt;p&gt;We receive Blogger template Layout data by callback function and return JSON data. The render data include post url, post title and post date (depending what you need). It's better to keep value in an object. Object is easier to understand and manipulate.&lt;/p&gt;&lt;pre class="prettyprint"&gt;function RelatedLabels(json) {&lt;br /&gt;var entries = json.feed.entry;&lt;br /&gt;for (var key in entries) {&lt;br /&gt;if (entries[key]) {&lt;br /&gt;var item = {};&lt;br /&gt;item.title = entries[key].title.$t;&lt;br /&gt;item.url = entries[key].link[4].href;&lt;br /&gt;item.date = entries[key].published.$t.substr(0, 10);&lt;br /&gt;relatedPosts.push(item);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;You might add multiple tags in different posts, and therefore might receive the same post in different tag by loop. There are many solutions to solve duplicate post in an object.&lt;p&gt;&lt;a class="zoom" title="related posts object" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvYRqFabjdI/AAAAAAAARxQ/RmdF3Yb8nTk/a.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvYRqFabjdI/AAAAAAAARxQ/RmdF3Yb8nTk/s400/a.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5401524217782701522" /&gt;&lt;/a&gt;&lt;/p&gt;I push related post in one object. We can extend Array.prototype.push() function to detect should we add this post to our object. If you are familiar with Javascript syntax. It's simple to manipulate DOM using Javascript like document.write(). If you concern web page performance, you should decrease manipulate DOM directly[3]. Following is complete code.&lt;/p&gt;&lt;pre class="prettyprint"&gt;var relatedPosts = [];&lt;br /&gt;relatedPosts.push = function (data) {&lt;br /&gt; var _push = true;&lt;br /&gt; var length = this.length;&lt;br /&gt; for (var i = 0; i &amp;lt; length; i++) {&lt;br /&gt;     if (this[i].url == data.url) _push = false;&lt;br /&gt; }&lt;br /&gt; if (_push) return Array.prototype.push.call(this, data);&lt;br /&gt; else return this;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function RelatedLabels(json) {&lt;br /&gt; var entries = json.feed.entry;&lt;br /&gt; for (var key in entries) {&lt;br /&gt;     if (entries[key]) {&lt;br /&gt;         var item = {};&lt;br /&gt;         item.title = entries[key].title.$t;&lt;br /&gt;         item.url = entries[key].link[4].href;&lt;br /&gt;         item.date = entries[key].published.$t.substr(0, 10);&lt;br /&gt;         relatedPosts.push(item);&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function ShowRelatedPosts(PostUrl) {&lt;br /&gt; var count = 0;&lt;br /&gt; var eleLi, link, date, fragment = document.createDocumentFragment();&lt;br /&gt; for (var key in relatedPosts) {&lt;br /&gt;     if (typeof(relatedPosts[key].url) != 'undefined' &amp;amp;&amp;amp; relatedPosts[key].url != PostUrl &amp;amp;&amp;amp; count &amp;lt; 5) {&lt;br /&gt;         eleLi = document.createElement('li');&lt;br /&gt;         link = document.createElement('a');&lt;br /&gt;         date = document.createTextNode(' (' + relatedPosts[key].date + ')');&lt;br /&gt;         link.setAttribute('href', relatedPosts[key].url);&lt;br /&gt;         link.innerHTML = relatedPosts[key].title;&lt;br /&gt;         eleLi.appendChild(link);&lt;br /&gt;         eleLi.appendChild(date);&lt;br /&gt;         fragment.appendChild(eleLi);&lt;br /&gt;&lt;br /&gt;         count++;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; var eleOl = document.createElement('ol');&lt;br /&gt; eleOl.appendChild(fragment);&lt;br /&gt; document.getElementById('relatedPosts').appendChild(eleOl);&lt;br /&gt;}&lt;/pre&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;reference&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/support/blogger/bin/answer.py?hlrm=b5&amp;amp;answer=47270"&gt;Blogger Layout Data Tage&lt;/a&gt;s [1]&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/intl/en/apis/gdata/docs/2.0/reference.html"&gt;Google Data Protocol Reference&lt;/a&gt; [2]&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/intl/zh-TW/speed/articles/javascript-dom.html"&gt;Speeding up JavaScript :Working with the DOM&lt;/a&gt; [3]&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:Arial, Helvetica, sans-serif;font-size:13px;"&gt;&lt;span class="Apple-style-span"   style=" -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;  font-family:Georgia, serif;font-size:16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-7724665992786501790?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-08T08:43:14.285+08:00</app:edited><media:thumbnail url="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvYRqFabjdI/AAAAAAAARxQ/RmdF3Yb8nTk/s72-c/a.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Inner Google Docs Quickly View Alternate URL by Chrome Extensions</title><link>http://bamboobig.blogspot.com/2009/11/inner-google-docs-quickly-view.html</link><category>Docs</category><category>Chrome</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:07:58 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-370719780574928282</guid><description>&lt;p style="color: rgb(51, 51, 51);"&gt;If you paid your attention at Google Docs service, you will found Google Docs team announce few new feature like &lt;a href="http://feedproxy.google.com/%7Er/OfficialGoogleDocsBlog/%7E3/-5zLlyoUAiw/view-online-files-using-google-docs.html"&gt;&lt;b&gt;&lt;i&gt;View online files using Google Doc Viewer&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, &lt;a href="http://feedproxy.google.com/%7Er/OfficialGoogleDocsBlog/%7E3/ixjYBD7JHr4/shared-folders-and-more-in-google-docs.html"&gt;&lt;b&gt;&lt;i&gt;Shared folders and more in Google Docs&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, &lt;a href="http://feedproxy.google.com/%7Er/OfficialGoogleDocsBlog/%7E3/z_bNTKg7im4/taking-charge-of-your-document-sharing.html"&gt;&lt;i&gt;&lt;b&gt;Taking charge of your document sharing&lt;/b&gt;&lt;/i&gt;&lt;/a&gt; &lt;span&gt;&lt;span&gt;etc. One of my favorite new feature is Google Docs Viewer. Google Docs Viewer let you quickly view documents online without leaving your browser. You don't need to download it if you just want quick it.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 51, 51);"&gt;&lt;a href="http://docs.google.com/viewer"&gt;Google Docs Viewer&lt;/a&gt; is a very convenience tool let you increase browser experience. But, it's still have few restrained. It's just support three file format: &lt;span style="font-weight: bold; font-style: italic;"&gt;PDF documents, PowerPoint presentations, and TIFF files now&lt;/span&gt;. Beside file type part, you need put documents on the internet.&lt;/p&gt;&lt;p style="color: rgb(51, 51, 51);"&gt;I like search documents on the internet when i don't know somethings. I type keyword in search engine and combine search file type. Google search engine started support QuickView new feature few weeks ago. It does work very well. But, there isn't every pdf or ppt item has QuickView button on the list. It's a easy way to solve this problem. Copy target doucment URL and paste it in Google Docs Quickly View. Then, Done!! It sounds great, right? Not at all, how could we do this job more convenience. I choose Chorme Extensions.&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);font-size:100%;" &gt;What's Chrome Extensions&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204); font-weight: bold;"&gt;?&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 51);"&gt;&lt;p&gt;Extensions are small software programs that can modify and enhance the functionality of Google Chrome.&lt;/p&gt;&lt;p&gt;You write them using web technologies like HTML, JavaScript, and CSS. So if you know how to write web pages, you already know most of what you need to know to write extensions." - Defintion in Google Chrome Extension: Development Documentation&lt;/p&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(102, 0, 204);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;The Basic of Chrome Extentsion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 51);"&gt;&lt;p&gt;"An extension is a zipped bundle of files — HTML, CSS, JavaScript, images, and anything else you need — that adds functionality to the Google Chrome browser. Extensions are essentially web pages, and they can use all the APIs that the browser provides to web pages, from XMLHttpRequest to JSON to HTML5 local storage.&lt;/p&gt;&lt;p&gt;Many extensions add UI to Google Chrome, in the form of toolstrips (toolbar additions) or page actions (clickable badges in the address bar). Extensions can also interact programmatically with browser features such as bookmarks and tabs. To interact with web pages or servers, extensions can use content scripts or cross-origin XMLHttpRequests." - &lt;a href="http://code.google.com/chrome/extensions/overview.html"&gt;OverView&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;As you can see above paragraph. We can almost do anythng you want from add Google Chrome UI to use content script to manipulate DOM tree. How do we slove problem we told in Chrome extension? The scenario is very simple. Using content script manipulate DOM tree and innert Google Docs Quick View URL in each target document.&lt;/p&gt;&lt;span style="color: rgb(102, 0, 204); font-weight: bold;"&gt;Content Script&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 51);"&gt;&lt;p&gt;Content scripts are JavaScript files that run in the context of web pages. By using the standard Document Object Model (DOM)," - &lt;a href="http://code.google.com/chrome/extensions/content_scripts.html"&gt;Content Script&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="color: rgb(51, 51, 51);"&gt;At my last post. There has a new search engine let you can search PDF file type ebooks. So, i holp content script can execute in two part. "Google Search Engine" and "PDFBooks search engine". First, we need to get target documnet url in DOM tree. There are few tools can help me to inspect current location in DOM Tree. I chose Google Chrome Developr tools (Ctrl+Shift+J).&lt;/p&gt;&lt;div style="text-align: center;"&gt;PDFBooks&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a class="zoom" rel="20091104" title="pdfBooks Dom inspector" style="color: rgb(51, 51, 51);" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvJwJvYlauI/AAAAAAAARvk/vykDKBbjGJw/2009-11-05_105654.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvJwJvYlauI/AAAAAAAARvk/vykDKBbjGJw/s400/2009-11-05_105654.png" alt="" id="BLOGGER_PHOTO_ID_5400502215811361506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google Search Engine&lt;br /&gt;&lt;/div&gt;&lt;a class="zoom" rel="20091104" title="Google Search Engine Dom inspector" style="color: rgb(51, 51, 51);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvJwJOD3WJI/AAAAAAAARvc/OZrRIwLLo-A/2009-11-05_105345.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 265px;" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvJwJOD3WJI/AAAAAAAARvc/OZrRIwLLo-A/s400/2009-11-05_105345.png" alt="" id="BLOGGER_PHOTO_ID_5400502206866086034" border="0" /&gt;&lt;/a&gt;&lt;pre class="prettyprint"&gt;if (doc.URL.toString().match(/^http:\/\/www.google.com/)) {&lt;br /&gt;    links = doc.querySelectorAll('h3 &gt; a.l');&lt;br /&gt;}&lt;br /&gt;if (doc.URL.toString().match(/^http://pdfbook-s.com/)) {&lt;br /&gt;    links = doc.querySelectorAll('div#menu + a');&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;We inspect target documents url by querySelectorAll.&lt;/p&gt;&lt;pre class="prettyprint"&gt;for (var i = 0, len = links.length; i &lt; len; i++) {&lt;br /&gt;    var link = links[i];&lt;br /&gt;    if (link.toString().match(/pdf$/) || link.toString().match(/ppt$/)) {&lt;br /&gt;        var docViewer = document.createElement('a');&lt;br /&gt;        docViewer.setAttribute('href', 'http://docs.google.com/viewer?url=' + link);&lt;br /&gt;        docViewer.setAttribute('target', 'blank');&lt;br /&gt;&lt;br /&gt;        var favicon = document.createElement('img');&lt;br /&gt;        favicon.src = 'http://docs.google.com/favicon.ico';&lt;br /&gt;&lt;br /&gt;        docViewer.appendChild(favicon);&lt;br /&gt;        link.parentNode.insertBefore(docViewer, link);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;Then, we can parse each hyperlink to insert alternate Google Docs Quick View URL if hyperlink has "PDF" or "PPT" keyword in a simple loop.&lt;p&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 204);font-size:100%;" &gt;Registered your content script&lt;/span&gt;&lt;p&gt;Content script needs to register in a extension's manifest.json file. like so:&lt;/p&gt;&lt;pre class="prettyprint"&gt;{&lt;br /&gt;  "name": "Insert Google Doc Quickly View URL", &lt;br /&gt;  "version": "0.1",&lt;br /&gt;  "description": "Insert Google Docs Quickly View for PDF &amp; PPT file format link",&lt;br /&gt;  "content_scripts": [&lt;br /&gt;    {&lt;br /&gt;      "matches": [&lt;br /&gt;        "http://www.google.com/search*",&lt;br /&gt;        "http://www.google.com.tw/search*",&lt;br /&gt;        "http://pdfbook-s.com/*"&lt;br /&gt;      ],&lt;br /&gt;      "js": ["insert_docs_quickly_view_url.js"]&lt;br /&gt;    }&lt;br /&gt;  ]&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Everything you done. What's different after using this extension.&lt;/p&gt;&lt;a class="zoom" rel="20091104" title="pdfBooks embed docs alternate url"  onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/SvJ4WMPgE_I/AAAAAAAARv0/ZROoPLuJFVE/2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/SvJ4WMPgE_I/AAAAAAAARv0/ZROoPLuJFVE/s400/2.png" alt="" id="BLOGGER_PHOTO_ID_5400511225809343474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="zoom" rel="20091104" title="Google Search Engine embed Docs alternate url" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/SvJ4V6sLB3I/AAAAAAAARvs/7VRfQZlyAf8/1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 243px;" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/SvJ4V6sLB3I/AAAAAAAARvs/7VRfQZlyAf8/s400/1.png" alt="" id="BLOGGER_PHOTO_ID_5400511221097760626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://code.google.com/chrome/extensions/index.html"&gt;Google Chrome Extensions: Developer Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pdfbook-s.com/"&gt;pdfBooks - Pdf Books search engine&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p class="btn"&gt;&lt;a href="http://cage.chung.googlepages.com/insert_docs_quickly_view_url.js"&gt;Download: insert_docs_quickly_view_url.js&lt;/a&gt;&lt;/p&gt;&lt;p class="btn"&gt;&lt;a href="http://cage.chung.googlepages.com/insert_docs_quickly_view_url.crx"&gt;Download: insert_docs_quickly_view_url.crx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-370719780574928282?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:07:58.103+08:00</app:edited><media:thumbnail url="http://4.bp.blogspot.com/_R8RzIm7ykRo/SvJwJvYlauI/AAAAAAAARvk/vykDKBbjGJw/s72-c/2009-11-05_105654.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><enclosure url="http://cage.chung.googlepages.com/insert_docs_quickly_view_url.js" length="1481" type="application/octet-stream" /><media:content url="http://cage.chung.googlepages.com/insert_docs_quickly_view_url.js" fileSize="1481" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>If you paid your attention at Google Docs service, you will found Google Docs team announce few new feature like View online files using Google Doc Viewer, Shared folders and more in Google Docs, Taking charge of your document sharing etc. One of my favor</itunes:subtitle><itunes:author>noreply@blogger.com (Cage)</itunes:author><itunes:summary>If you paid your attention at Google Docs service, you will found Google Docs team announce few new feature like View online files using Google Doc Viewer, Shared folders and more in Google Docs, Taking charge of your document sharing etc. One of my favorite new feature is Google Docs Viewer. Google Docs Viewer let you quickly view documents online without leaving your browser. You don't need to download it if you just want quick it.Google Docs Viewer is a very convenience tool let you increase browser experience. But, it's still have few restrained. It's just support three file format: PDF documents, PowerPoint presentations, and TIFF files now. Beside file type part, you need put documents on the internet.I like search documents on the internet when i don't know somethings. I type keyword in search engine and combine search file type. Google search engine started support QuickView new feature few weeks ago. It does work very well. But, there isn't every pdf or ppt item has QuickView button on the list. It's a easy way to solve this problem. Copy target doucment URL and paste it in Google Docs Quickly View. Then, Done!! It sounds great, right? Not at all, how could we do this job more convenience. I choose Chorme Extensions.What's Chrome Extensions? Extensions are small software programs that can modify and enhance the functionality of Google Chrome. You write them using web technologies like HTML, JavaScript, and CSS. So if you know how to write web pages, you already know most of what you need to know to write extensions." - Defintion in Google Chrome Extension: Development DocumentationThe Basic of Chrome Extentsion "An extension is a zipped bundle of files — HTML, CSS, JavaScript, images, and anything else you need — that adds functionality to the Google Chrome browser. Extensions are essentially web pages, and they can use all the APIs that the browser provides to web pages, from XMLHttpRequest to JSON to HTML5 local storage. Many extensions add UI to Google Chrome, in the form of toolstrips (toolbar additions) or page actions (clickable badges in the address bar). Extensions can also interact programmatically with browser features such as bookmarks and tabs. To interact with web pages or servers, extensions can use content scripts or cross-origin XMLHttpRequests." - OverView As you can see above paragraph. We can almost do anythng you want from add Google Chrome UI to use content script to manipulate DOM tree. How do we slove problem we told in Chrome extension? The scenario is very simple. Using content script manipulate DOM tree and innert Google Docs Quick View URL in each target document.Content Script Content scripts are JavaScript files that run in the context of web pages. By using the standard Document Object Model (DOM)," - Content ScriptAt my last post. There has a new search engine let you can search PDF file type ebooks. So, i holp content script can execute in two part. "Google Search Engine" and "PDFBooks search engine". First, we need to get target documnet url in DOM tree. There are few tools can help me to inspect current location in DOM Tree. I chose Google Chrome Developr tools (Ctrl+Shift+J).PDFBooks Google Search Engine if (doc.URL.toString().match(/^http:\/\/www.google.com/)) { links = doc.querySelectorAll('h3 a.l'); } if (doc.URL.toString().match(/^http://pdfbook-s.com/)) { links = doc.querySelectorAll('div#menu + a'); } We inspect target documents url by querySelectorAll.for (var i = 0, len = links.length; i Then, we can parse each hyperlink to insert alternate Google Docs Quick View URL if hyperlink has "PDF" or "PPT" keyword in a simple loop. Registered your content script Content script needs to register in a extension's manifest.json file. like so:{ "name": "Insert Google Doc Quickly View URL", "version": "0.1", "description": "Insert Google Docs Quickly View for PDF &amp; PPT file format link", "content_scripts": [ { "matches": [ "http://www.google.com/search*", "http://www.google.com.tw/search*</itunes:summary><itunes:keywords>Docs, Chrome, Google</itunes:keywords></item><item><title>PDFBooks</title><link>http://bamboobig.blogspot.com/2009/11/pdfbooks.html</link><category>free</category><author>noreply@blogger.com (Cage)</author><pubDate>Wed, 04 Nov 2009 07:42:46 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-5755685323662538160</guid><description>&lt;img src="http://2.bp.blogspot.com/_R8RzIm7ykRo/SvGdjP8m9II/AAAAAAAARvM/6yw2dh7xEX4/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-11-04+%E4%B8%8B%E5%8D%8811.27.37.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 187px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5400270657095660674" /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: none; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/SvGdjjOhojI/AAAAAAAARvU/vFXfWrIRJLg/s1600-h/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-11-04+%E4%B8%8B%E5%8D%8811.25.14.png"&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_R8RzIm7ykRo/SvGdjjOhojI/AAAAAAAARvU/vFXfWrIRJLg/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-11-04+%E4%B8%8B%E5%8D%8811.25.14.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400270662271083058" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 157px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I think you guys have searched any kink file type in Google search engine or others search engine. I often search PDF file on the Internet like &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;PDF&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;PPT&lt;/span&gt;&lt;/b&gt; etc. It's a good choice to research something you don't know on the Internet. You might get few information on the way!!&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;There has another way you can find many PDF file type books on the specific search engine. It's PDFBooks. Type the keyword you want and click the search button. You will get PDF file type list. You can &lt;b&gt;&lt;i&gt;download&lt;/i&gt;&lt;/b&gt; that file to your local disk or&lt;b&gt;&lt;i&gt; view it online&lt;/i&gt;&lt;/b&gt; (It's using &lt;a href="http://www.scribd.com/"&gt;Scribd&lt;/a&gt; flash viewer).&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Link&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://pdfbook-s.com/"&gt;PDFBooks&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-5755685323662538160?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T23:42:46.969+08:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_R8RzIm7ykRo/SvGdjP8m9II/AAAAAAAARvM/6yw2dh7xEX4/s72-c/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-11-04+%E4%B8%8B%E5%8D%8811.27.37.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>JSONC Of Picasa Web Ablum</title><link>http://bamboobig.blogspot.com/2009/11/jsonc-of-picasa-web-ablum.html</link><category>Picasa Web Ablum</category><category>JSONC</category><category>Javscript</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:08:20 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-2011394562230878942</guid><description>&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;What is JSON and JSONC?&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;JSON, short for JavaScript Object Notation, is a lightweight computer data interchange format. It is a text-based, human-readable format for representing simple data structures and associative arrays (called objects). - &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/JSON"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;wiki&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;JSONC: Clean, Compact, and Customizable. Minimize the number of JavaScript objects&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;You guys might have used a lot of JSON data in your web page, web application etc. If you are familiar with Blogger template, you might ever received your Picasa web album JSON  format data by calling Javascript function in your blogger by using this URL&lt;div&gt;&lt;pre class="prettyprint"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;http://picasaweb.google.com/data/feed/api/user/userID?alt=json&amp;amp;callback=?&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whatever you receive JSON data by Javascript callback function or jQuery Ajax callback funtion. You need to parse callback json data and get the data what you need.  There are too many objects in that data. It's a little complicate to get current fields you need.&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/apis/gdata/"&gt;Google Data Protocol&lt;/a&gt; support JSONC data format return in Google Web Album. That let you guys can receive data from Google Web Album more easy than before. What do we receive the JSONC format data. Changing feed URL to&lt;/div&gt;&lt;div&gt;&lt;pre class="prettyprint"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;http://picasaweb.google.com/data/feed/api/user/userID?&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;v=2&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;&amp;amp;alt=&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;jsonc&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;&amp;amp;callback=?&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a easy way to receive your Google Web Album data by modify feed URL arguments. The simple object data means you can decrease callback response time and increase the web page performance. If you are interested in performance articles, you should read following link&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Reference&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://code.google.com/apis/gdata/docs/2.0/migration_guide.html"&gt;Data APIs Version 2 Migration Guide &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/events/io/2009/sessions/EvolutionGoogleDataProtocol.html"&gt;Evolution of the Google Data Protocol: New Features for Building more Efficient Applications&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-2011394562230878942?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:08:20.873+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Our Earth Need Your Help!!</title><link>http://bamboobig.blogspot.com/2009/10/our-earth-need-your-help.html</link><category>Blog Action Day</category><author>noreply@blogger.com (Cage)</author><pubDate>Fri, 06 Nov 2009 19:47:06 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-4607520534640967815</guid><description>&lt;div&gt;Aug 8th, 2009. It's a really a longest and very worse Fathers Day for most Taiwanese. In south of Taiwan attacked by super typhoon Moraka and caused the most serious damaged in Taiwan history. It rains over 3000 mm one year annual rainfall only in three days. Many people were homeless in the aftermath of typhoon Moraka. Unfortunately, my parent and others family members were one of the homeless people. We lose anything expect life.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Until now, i can't accept the truth sometimes. but, i have to learn accept that and thinking what should we do after damaging? Rebuild our home and back to normal life as soon as possible.  What do we learn aftermath the typhoon Moraka?  What are reasons cause such as this damage? Something are changed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think you guys have heard some issue about Global warming. Our atmosphere has too much carbon dioxide  and cause the Earth temperature growth up too fast. You may think some big issues like that should be government's responsibility. Because most people can't lead relation political policies. Climate change is a human issue. What could we do be a person living in the Earth?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many resources you can find on the internet. Visit Climate change in the Google Earth, Explore the Climate Orb to concern what company learn for the stories behind the human face of climate change, Educate our kids about science of global warming etc. You can follow the tail of above issues and think about what "You" really can do to help the Earth. For me, i try to reduce my "carbon footprint" in my life. What's carbon footprint?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;"A carbon footprint is "the total set of greenhouse gas (GHG) emissions caused directly and indirectly by an individual, organization, event or product". For simplicity of reporting, it is often expressed in terms of the amount of carbon dioxide, or its equivalent of other GHGs, emitted." - definition by wikipedia&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many online carbon calculator you can figure out what yours is. You can understand that your impact is on climate change. Those online carbon calculators may not to help you figure out your carbon emission. It can remind you to change your life style to reduce the impact on climate change. Try to take public transportation, try to buy product from local area,  chose low-power electric equipments etc. You could fine you way!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our Earth need your help!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Reference&lt;/span&gt;&lt;/b&gt;&lt;ol style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;br /&gt; &lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;a id="cme-" href="http://www.blogactionday.org/" title="Blog Action Day '09 Climate Change web site" style="color: rgb(85, 26, 139); "&gt;Blog Action Day '09 Climate Change web site&lt;/a&gt;&lt;/li&gt;  &lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;a id="hsyw" href="http://www.google.com/landing/cop15/#intro" title="Visit - Climate change in Google Earth" style="color: rgb(85, 26, 139); "&gt;Visit - Climate change in Google Earth&lt;/a&gt;&lt;/li&gt;  &lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;a id="j7ye" href="http://tcktcktck.org/people/time-is-now/explore-climate-orb" title="Visit - Explore the Climate Orb"&gt;Visit - Explore the Climate Orb&lt;/a&gt;&lt;/li&gt;  &lt;li style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;a id="msok" href="http://www.mnn.com/earth-matters/climate-change/stories/the-15-best-carbon-calculators" title="MNN's 15 Best Carbon Calculators" style="color: rgb(85, 26, 139); "&gt;MNN's 15 Best Carbon Calculators&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-4607520534640967815?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-07T11:47:06.783+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Few New Google Chrome Video From GoogleJapan</title><link>http://bamboobig.blogspot.com/2009/10/few-new-google-chrome-video-from.html</link><category>Chrome</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:08:35 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-5903558946558018946</guid><description>&lt;div&gt;Have you seen the so~~~~~o cute Google Street View Video by Google Japan. If you haven't seen that video. Click &lt;a href="http://www.youtube.com/watch?v=PQGrIsYUm4c&amp;amp;feature=channel"&gt;here &lt;/a&gt;to see that. I very recommend  you guys to have a look even you just a end user. The video can give you a skeleton concept of Google Street View.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see. It's a good introduction video from Google Japan. It's show time again but the main character change to new super star "&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;Chrome&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;". I think that "&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;b&gt;Speed&lt;/b&gt;&lt;/span&gt;" will be one of the good browser experience of Chrome for you guys. You guys may have few browsers in the computers like me. That mean you are pay attention in browser developing. If you should be. Following has few new Chrome video by Google Japan. Have a look!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;速い + SUPER MONKEY BALL: Google Chrome アーティストテーマ&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vpNFjDDg7mk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/vpNFjDDg7mk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Google Chrome アーティスト テーマ スライドショー&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/B0wdXIaY1Bc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/B0wdXIaY1Bc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;速い + NINTEA: Google Chrome アーティストテーマ&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/StTTFNPMxcg&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/StTTFNPMxcg&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;速い + ART: Google Chrome アーティストテーマ&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lNDKKaq9SyY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/lNDKKaq9SyY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Reference&lt;/span&gt;&lt;/b&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/user/googlejapan"&gt;More Videos From Google Japan &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-5903558946558018946?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:08:35.724+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><enclosure url="http://www.youtube.com/v/vpNFjDDg7mk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" length="1103" type="application/x-shockwave-flash" /><media:content url="http://www.youtube.com/v/vpNFjDDg7mk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" fileSize="1103" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Have you seen the so~~~~~o cute Google Street View Video by Google Japan. If you haven't seen that video. Click here to see that. I very recommend you guys to have a look even you just a end user. The video can give you a skeleton concept of Google Street</itunes:subtitle><itunes:author>noreply@blogger.com (Cage)</itunes:author><itunes:summary>Have you seen the so~~~~~o cute Google Street View Video by Google Japan. If you haven't seen that video. Click here to see that. I very recommend you guys to have a look even you just a end user. The video can give you a skeleton concept of Google Street View. As you can see. It's a good introduction video from Google Japan. It's show time again but the main character change to new super star "Chrome". I think that "Speed" will be one of the good browser experience of Chrome for you guys. You guys may have few browsers in the computers like me. That mean you are pay attention in browser developing. If you should be. Following has few new Chrome video by Google Japan. Have a look!!! 速い + SUPER MONKEY BALL: Google Chrome アーティストテーマ Google Chrome アーティスト テーマ スライドショー 速い + NINTEA: Google Chrome アーティストテーマ 速い + ART: Google Chrome アーティストテーマ ReferenceMore Videos From Google Japan </itunes:summary><itunes:keywords>Chrome, Google</itunes:keywords></item><item><title>WhatTheFont</title><link>http://bamboobig.blogspot.com/2009/10/whatthefont.html</link><category>iPhone Apps</category><author>noreply@blogger.com (Cage)</author><pubDate>Sun, 11 Oct 2009 00:48:55 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-8977235741893227546</guid><description>I wrote a article (&lt;a href="http://bamboobig.blogspot.com/2008/06/javascript-countdown.html"&gt;[Javascript &amp;amp; Css] CountDown&lt;/a&gt;) about Google Code Jam 2008 main page countdown. It does work using Javascript + CSS + DHTML and following is sniper image.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://2.bp.blogspot.com/_R8RzIm7ykRo/SF-odaaHTSI/AAAAAAAAENc/G7HbnZLA1Wg/s400/codejamCountDown.png" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After i wrote this article. I try to search this font on the inter and  ask my colleagues. What's this font? Until today i still haven't gotten exactly this font.  But, i found iPhone app WhatTheFont in one iPhone Home screens of First &amp;amp; 20. &lt;a href="http://www.firstand20.com/"&gt;First &amp;amp; 20&lt;/a&gt; is a collection of Home screens of some of the best and brightest developers, designers and tech writers.&lt;br /&gt;&lt;br /&gt;What does &lt;a href="http://new.myfonts.com/WhatTheFont/"&gt;WhatTheFont&lt;/a&gt;[&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=304304134&amp;amp;mt=8"&gt;app store link&lt;/a&gt;]  do? It's very clear to understand as app name - Identify the fonts in a photo or web graphic!! Following is the simple step i try to identify the font i didn't know.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="font-weight: bold;"&gt;Using WhatTheFont app on your iPhone or iPhone touch.&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Sniper the photo of font and crop image. Then click upload&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/StGJSMs71dI/AAAAAAAARBI/5bisHgXJow0/s1600-h/IMG_0664.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/StGJSMs71dI/AAAAAAAARBI/5bisHgXJow0/s400/IMG_0664.PNG" alt="" id="BLOGGER_PHOTO_ID_5391241174679541202" border="0" /&gt;&lt;/a&gt;Check Chars and click identify!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/StGJSiBbJUI/AAAAAAAARBQ/7OXq8dlmliE/s1600-h/IMG_0665.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_R8RzIm7ykRo/StGJSiBbJUI/AAAAAAAARBQ/7OXq8dlmliE/s400/IMG_0665.PNG" alt="" id="BLOGGER_PHOTO_ID_5391241180402623810" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;You will get few font matches.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGM4oVQ8dI/AAAAAAAARBw/E6svq1_R0GM/s1600-h/IMG_0662.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGM4oVQ8dI/AAAAAAAARBw/E6svq1_R0GM/s400/IMG_0662.PNG" alt="" id="BLOGGER_PHOTO_ID_5391245133466366418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="font-weight: bold;"&gt;Using WhatTheFont web page to identify the fonts.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You can upload a file or paste a specify image url.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGMQV2dH5I/AAAAAAAARBg/VwTr255M6Sk/s1600-h/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.40.22.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 195px;" src="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGMQV2dH5I/AAAAAAAARBg/VwTr255M6Sk/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.40.22.png" alt="" id="BLOGGER_PHOTO_ID_5391244441310535570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Check selection characters.  Leave character boxes blank if no valid character is highlighted. Then, click continue.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGMQNm6mrI/AAAAAAAARBY/EbmgAwNfRE8/s1600-h/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.41.03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://2.bp.blogspot.com/_R8RzIm7ykRo/StGMQNm6mrI/AAAAAAAARBY/EbmgAwNfRE8/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.41.03.png" alt="" id="BLOGGER_PHOTO_ID_5391244439097875122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You will get few font matches as App version.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/StGMQ4aloII/AAAAAAAARBo/r-onqWB67g8/s1600-h/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.13.33.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://4.bp.blogspot.com/_R8RzIm7ykRo/StGMQ4aloII/AAAAAAAARBo/r-onqWB67g8/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-11+%E4%B8%8B%E5%8D%883.13.33.png" alt="" id="BLOGGER_PHOTO_ID_5391244450588893314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compare WhatTheFont App version and WhatTheFont web page font identify. I get more font matches by using App version than using web page font identify. But, as you can see. Using web page font identify is more easy  than App version. Whatever you chose which one. If you get the anwser like me. I think it's a good solution at least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-8977235741893227546?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T15:48:55.093+08:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_R8RzIm7ykRo/SF-odaaHTSI/AAAAAAAAENc/G7HbnZLA1Wg/s72-c/codejamCountDown.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Quickly view formatted PDFs in your search results</title><link>http://bamboobig.blogspot.com/2009/10/quickly-view-formatted-pdfs-in-your.html</link><category>Docs</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:08:47 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-8640194790980385951</guid><description>&lt;div style="text-align: left;"&gt;Two weeks ago. Google announced &lt;a href="http://docs.google.com/viewer?pli=1"&gt;Google Doc Viewer&lt;/a&gt;. You can embed formatted PDFs in your web page more easily. Just Go Google Doc Viewer and fill it up and copy paste the link to your web page. Done!! (&lt;b&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 0, 0);"&gt;Just pay attention in one thing. you must let your PDFs can access on the internet&lt;/span&gt;&lt;/b&gt;)&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/Ss9QYq8VBnI/AAAAAAAARAM/WqTr5BwglCg/s1600-h/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-09+%E4%B8%8B%E5%8D%8810.36.47.png"&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_R8RzIm7ykRo/Ss9QYq8VBnI/AAAAAAAARAM/WqTr5BwglCg/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-09+%E4%B8%8B%E5%8D%8810.36.47.png" alt="" id="BLOGGER_PHOTO_ID_5390615663760180850" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 271px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you often search information in google search engine and assign filetype as "&lt;b&gt;pdf&lt;/b&gt;" like me. The new Quick view function is very convenience for us. You don't download that PDF file anymore before you sure it's you want. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Until now, Google Doc Viewer support three types(&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;PDF document, PowerPoint presenetation and TIFF files&lt;/span&gt;). Only two of three can match search filetype filter(PDF &amp;amp; PPT). But new Quick view function just support PDFs now.  I think Google may announce Quick view PPT file too. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-8640194790980385951?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:08:47.071+08:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_R8RzIm7ykRo/Ss9QYq8VBnI/AAAAAAAARAM/WqTr5BwglCg/s72-c/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2009-10-09+%E4%B8%8B%E5%8D%8810.36.47.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>BambooBig.blogspot.com LiveDemo Gallery</title><link>http://bamboobig.blogspot.com/2009/10/bamboobigblogspotcom-livedemo-gallery.html</link><category>Blogger</category><author>noreply@blogger.com (Cage)</author><pubDate>Wed, 07 Oct 2009 06:36:33 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-1102079259661795569</guid><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R8RzIm7ykRo/SsyS4u3SdiI/AAAAAAAAQ-U/7bOdOI5Pfxo/s1600-h/2009-10-07_210753.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 348px; height: 107px;" src="http://3.bp.blogspot.com/_R8RzIm7ykRo/SsyS4u3SdiI/AAAAAAAAQ-U/7bOdOI5Pfxo/s400/2009-10-07_210753.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5389844357405898274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Few days ago. I spent few time to change &lt;a href="http://bamboobig.blogspot.com/"&gt;竹部落 (bamboobig.blogspot.com)&lt;/a&gt; a new blog template. I hope new template can decrease browser page loading time. Cause the loading preference, i took off few javascript blocks like &lt;a href="http://www.anobii.com/people/cage1016/"&gt;Anobii&lt;/a&gt; (my bookcase in Anobii), etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After modifying my new template. I build a demo gallery (&lt;a href="http://justmylabs.appspot.com/"&gt;BambooBig.blogspot.com LiveDemo Gallery&lt;/a&gt;) by &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;. I will put all new blog post live demo in here. Sure, i will transfer &lt;a href="http://bamboobig.blogspot.com/"&gt;竹部落 (bamboobig.blogspot.com)&lt;/a&gt; exist post had live demo to here too. I hope that demo gallery could let you guys to understand what i said in my blog post easier. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;link&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://justmylabs.appspot.com/"&gt;BambooBig.blogspot.com LiveDemo Gallery&lt;/a&gt; directly link&lt;/li&gt;&lt;li&gt;you guys should click 竹部落 (bamboobig.blogspot.com) page top right Lab icon to direct to demo gallery&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-1102079259661795569?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T21:36:33.222+08:00</app:edited><media:thumbnail url="http://3.bp.blogspot.com/_R8RzIm7ykRo/SsyS4u3SdiI/AAAAAAAAQ-U/7bOdOI5Pfxo/s72-c/2009-10-07_210753.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Come back to Dropbox!</title><link>http://bamboobig.blogspot.com/2009/10/come-back-to-dropbox.html</link><category>DropBox</category><author>noreply@blogger.com (Cage)</author><pubDate>Sun, 11 Oct 2009 00:51:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-4520542441840749241</guid><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://www.getdropbox.com/static/images/emails/no_activity.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 450px; height: 264px;" src="https://www.getdropbox.com/static/images/emails/no_activity.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;Hi Kai-Chu,&lt;br /&gt;&lt;br /&gt;We noticed that you signed up for Dropbox a while ago. Recently your Dropbox has been feeling kind of lonely :-(&lt;br /&gt;&lt;br /&gt;As a reminder, Dropbox lets you:&lt;br /&gt;&lt;br /&gt;- Sync files between your computers and the web&lt;br /&gt;- Backup your files online and access them from anywhere&lt;br /&gt;- Share large files and photos easily&lt;br /&gt;&lt;br /&gt;Your Dropbox hopes you'll come back!&lt;br /&gt;&lt;br /&gt;- The Dropbox Team&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;This morning. I got a E-mail from The DropBox Team.  I'm amazing a little bit. Even this E-mail generate by server automatic. Maybe somebody think it doesn't matter. but, i think The Dropbox Team can attract users to use their services more. They are really want everyone know that they concern every user and provide good services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Reference:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DropBox &lt;a href="http://www.getdropbox.com/"&gt;http://www.getdropbox.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=327630330&amp;amp;mt=8&amp;amp;s=143441"&gt;Download iPhone app&lt;/a&gt; for iPhone and iPod Touch&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-4520542441840749241?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T15:51:24.834+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Star Size Comparison HD</title><link>http://bamboobig.blogspot.com/2009/06/star-size-comparison-hd.html</link><category>Knowledge</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 25 Jun 2009 07:01:30 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-7139742836174091637</guid><description>Do you really understand the "Size"?  I think you can have a look.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HEheh1BH34Q&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HEheh1BH34Q&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-7139742836174091637?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-25T22:01:30.843+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://www.youtube.com/v/HEheh1BH34Q&amp;hl=zh_TW&amp;fs=1&amp;" length="1047" type="application/x-shockwave-flash" /><media:content url="http://www.youtube.com/v/HEheh1BH34Q&amp;hl=zh_TW&amp;fs=1&amp;" fileSize="1047" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Do you really understand the "Size"? I think you can have a look. </itunes:subtitle><itunes:author>noreply@blogger.com (Cage)</itunes:author><itunes:summary>Do you really understand the "Size"? I think you can have a look. </itunes:summary><itunes:keywords>Knowledge</itunes:keywords></item><item><title>Google Docs Support .xlsx and .docx Now</title><link>http://bamboobig.blogspot.com/2009/06/google-docs-support-xlsx-and-docx-now.html</link><category>Docs</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:09:01 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-3952366367627938294</guid><description>&lt;div style="text-align: left;"&gt;Until now, i start use &lt;a href="http://docs.google.com"&gt;Google Docs&lt;/a&gt; more and more. It's easy to collect information by Google Docs Form. You can build a Simple Form, Edit, Share and Send it to anybody of your Gamil contacts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will upload few documents to Google Docs like PDF, doc etcs sometimes. Beacuse i can accept these files when i logon Google Docs by computer or mobile device. Now, it'a good news for Microsoft Office 2007 users. Google Docs support user can upload &lt;b&gt;.xlsx&lt;/b&gt; and &lt;b&gt;.docx&lt;/b&gt; now. &lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;But not including &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;.pptx&lt;/span&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SiU1W-o9jfI/AAAAAAAAMs8/t5MyMe624P8/s400/office2007.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5342735201833160178" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 292px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-3952366367627938294?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:09:01.151+08:00</app:edited><media:thumbnail url="http://4.bp.blogspot.com/_R8RzIm7ykRo/SiU1W-o9jfI/AAAAAAAAMs8/t5MyMe624P8/s72-c/office2007.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>App Engine TemplateSyntaxError</title><link>http://bamboobig.blogspot.com/2009/05/app-engine-templatesyntaxerror.html</link><category>AppEngine</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:09:39 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-1689066553200036434</guid><description>&lt;pre class="prettyprint"&gt;from google.appengine.ext.webapp import template&lt;br /&gt;&lt;br /&gt;def HtmlRender(self, template_file, template_values):     &lt;br /&gt;temp = os.path.join(os.path.dirname(__file__),&lt;br /&gt;    'templates/'+template_file)&lt;br /&gt;self.response.out.write( template.render(temp, template_values) )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;template_values ={&lt;br /&gt;   'url' : self.request.url,&lt;br /&gt;   'my_dictionary' : { 'item1' : 1, 'item2' : 2}&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;url: {{ url }}&lt;br /&gt;{% for key, value in my_dictionary.items %}&lt;br /&gt;{{ item.key }} : {{ item.value }}&lt;br /&gt;{% endfor %}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see above code. you can app engine template to generate HTML than before generate code from within strings in the Python..&lt;br /&gt;&lt;br /&gt;"&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;TemplateSyntaxError: 'for' statements with five words should end in 'reversed': for key, value in my_dictionary.items&lt;/span&gt;&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Yes, you will get one error message. What? It looks as normal python code and seems does work. Because Google App Engine now support Django 0.96 version. If you want to receive a dictionary data type from python. You must modify Django template in HTML page.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;more detail information:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/intl/en/appengine/docs/python/gettingstarted/templates.html"&gt;Using Templates in Google App Engine Document&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs"&gt;Django Templates in Django Document&lt;/a&gt;&lt;a href="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-Templates.pdf"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-Templates.pdf"&gt;Google Application Engine Templates for HTML University of Michigan – Informatics Charles Severance&lt;/a&gt;&lt;a href="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-WebApp.pdf"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-WebApp.pdf"&gt;Using the webapp Framework Google Application Engine University of Michigan – Informatics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-1689066553200036434?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:09:39.233+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-Templates.pdf" length="459988" type="application/pdf" /><media:content url="http://www-personal.umich.edu/~csev/courses/appengine/handouts/AppEngine-Templates.pdf" fileSize="459988" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>from google.appengine.ext.webapp import template def HtmlRender(self, template_file, template_values): temp = os.path.join(os.path.dirname(__file__), 'templates/'+template_file) self.response.out.write( template.render(temp, template_values) ) template_va</itunes:subtitle><itunes:author>noreply@blogger.com (Cage)</itunes:author><itunes:summary>from google.appengine.ext.webapp import template def HtmlRender(self, template_file, template_values): temp = os.path.join(os.path.dirname(__file__), 'templates/'+template_file) self.response.out.write( template.render(temp, template_values) ) template_values ={ 'url' : self.request.url, 'my_dictionary' : { 'item1' : 1, 'item2' : 2} } url: {{ url }} {% for key, value in my_dictionary.items %} {{ item.key }} : {{ item.value }} {% endfor %} As you can see above code. you can app engine template to generate HTML than before generate code from within strings in the Python.. "TemplateSyntaxError: 'for' statements with five words should end in 'reversed': for key, value in my_dictionary.items". Yes, you will get one error message. What? It looks as normal python code and seems does work. Because Google App Engine now support Django 0.96 version. If you want to receive a dictionary data type from python. You must modify Django template in HTML page. more detail information:Using Templates in Google App Engine DocumentDjango Templates in Django DocumentGoogle Application Engine Templates for HTML University of Michigan – Informatics Charles SeveranceUsing the webapp Framework Google Application Engine University of Michigan – Informatics</itunes:summary><itunes:keywords>AppEngine, Google</itunes:keywords></item><item><title>Free iPhone Application Programming by Apple &amp; Stanford</title><link>http://bamboobig.blogspot.com/2009/04/free-iphone-application-programming-by.html</link><category>iPhone Apps</category><author>noreply@blogger.com (Cage)</author><pubDate>Sun, 11 Oct 2009 00:53:13 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-1648957693282428028</guid><description>If you have a iPhone or iPod touch. You may install many apps form Apple App Store. It's very interesting and challenge a little bit [1].  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you enjoy these apps. Have you ever thought that you can try to develop some apps or games by yourself. If the answer is YES or you did it. Congratulation!! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, there is a good free iPhone Application Programming by Apple &amp;amp; Stanford. you can download the videos from &lt;a href="http://itunes.stanford.edu/"&gt;Stanford on iTunes U&lt;/a&gt; and visite the &lt;a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php"&gt;CS193P iPhone Application Programming class&lt;/a&gt; by Stanford. Enjoying and try to do some interested apps!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;You can use &lt;a href="http://www.google.com.tw/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fitunes.apple.com%2FWebObjects%2FMZStore.woa%2Fwa%2FviewSoftware%3Fid%3D294706770%26mt%3D8&amp;amp;ei=d8rbSYOeBZiYkQXr9LXOCA&amp;amp;usg=AFQjCNEThlpuxI3yJlXHl142FF5dx4_4rQ&amp;amp;sig2=Y-heh1xebg6DgNUhO9c8QA"&gt;AppSniper&lt;/a&gt; to track apps form app stroe on your iPhone or iPod touch. Or, you can visite &lt;a href="http://appshopper.com/"&gt;AppShopper.com&lt;/a&gt; that you can track apps on web too.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-1648957693282428028?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T15:53:13.018+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Let's Golf for iPhone</title><link>http://bamboobig.blogspot.com/2009/03/lets-golf-for-iphone.html</link><category>iPhone Apps</category><author>noreply@blogger.com (Cage)</author><pubDate>Sun, 11 Oct 2009 00:52:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-2244523515593100919</guid><description>Few dasy ago. gameloft announce a new golf game. after few months waitting. i bought it from app stroe right now. It's a nice golf game. You can enjoy palying golf even just use your fingers. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/y8wnOtU1T44&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/y8wnOtU1T44&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;you can see more detial about Let's gold and others game made by &lt;a href="http://www.gameloft.com/iphone-games/"&gt;gameloft&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/569131076581403375-2244523515593100919?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T15:52:07.855+08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://www.youtube.com/v/y8wnOtU1T44&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;rel=0" length="1036" type="application/x-shockwave-flash" /><media:content url="http://www.youtube.com/v/y8wnOtU1T44&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;rel=0" fileSize="1036" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Few dasy ago. gameloft announce a new golf game. after few months waitting. i bought it from app stroe right now. It's a nice golf game. You can enjoy palying golf even just use your fingers. you can see more detial about Let's gold and others game made b</itunes:subtitle><itunes:author>noreply@blogger.com (Cage)</itunes:author><itunes:summary>Few dasy ago. gameloft announce a new golf game. after few months waitting. i bought it from app stroe right now. It's a nice golf game. You can enjoy palying golf even just use your fingers. you can see more detial about Let's gold and others game made by gameloft</itunes:summary><itunes:keywords>iPhone Apps</itunes:keywords></item><item><title>Google Calendar Primary Calendar Change</title><link>http://bamboobig.blogspot.com/2009/02/google-calendar-primary-calendar-change.html</link><category>Calendar</category><category>Google</category><author>noreply@blogger.com (Cage)</author><pubDate>Thu, 24 Dec 2009 07:09:52 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-569131076581403375.post-5822081223356234404</guid><description>&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Problem&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;when i add new calendar event in &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;iPhone&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. There isn't another calendar that you choose. Default setting is primary calendar(the first calendar of your calendar lists). I &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;often&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; review the schedule and want to add in my wall street calendar in the Wall Street. How to Change the Google Calendar primary calendar.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/SaLL4OoQ2rI/AAAAAAAAJmw/EgHVzgSb5LE/s1600-h/2009-02-23_234156.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R8RzIm7ykRo/SavXtdLOS1I/AAAAAAAAJr4/aUnFV3vg6h4/s1600-h/IMG_0008%5B1%5D.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_R8RzIm7ykRo/SavXtdLOS1I/AAAAAAAAJr4/aUnFV3vg6h4/s400/IMG_0008%5B1%5D.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5308573761712048978" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 267px; height: 400px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Solution&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/SavYQ4vnloI/AAAAAAAAJsA/J9b03486J5Q/s1600-h/2009-03-02_205357.png"&gt;&lt;img src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SavYQ4vnloI/AAAAAAAAJsA/J9b03486J5Q/s400/2009-03-02_205357.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5308574370407880322" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 182px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;When you &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;log in&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; your google calendar. you can see the calendar lists of Calendar Settings/Calendars. The &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;first&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; one (show in list is enable) is your primary &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;calendar&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. You can't delete primary calendar or unsubscribe it. Maybe you had added some events in these two calendar. How to change your primary? &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;backup your calendar (export these calendars).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;delete the calendar that you want to change to primary calendar.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;delete the &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;primary&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; calendar (you can't delete this calendar truly. just clear events).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;this stage. you have two empty &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;calendars&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;change the primary calendar name what you want. (ex: Wall Street).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;import backup calendars to your primary calendar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_R8RzIm7ykRo/SavbzBwSKwI/AAAAAAAAJsI/CshwvKPVhDg/s400/2009-03-02_211257.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5308578255477025538" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 398px; height: 200px; " /&gt;&lt;/li&gt;&lt;li style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;create new calendar(your original primary calendar)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;import backup&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;done&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R8RzIm7ykRo/Savc5OeqJoI/AAAAAAAAJsQ/EBW2SXHczpI/s1600-h/IMG_0009%5B1%5D.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_R8RzIm7ykRo/Savc5OeqJoI/AAAAAAAAJsQ/EBW2SXHczpI/s400/IMG_0009%5B1%5D.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5308579461483603586" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 267px; height: 400px; " /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;In fact, you can add new event in your different google calendars use computer easily. But when you use mobile device and this way can solve the requirement of add new event outdoor.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/569131076581403375-5822081223356234404?l=bamboobig.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T23:09:52.987+08:00</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_R8RzIm7ykRo/SavXtdLOS1I/AAAAAAAAJr4/aUnFV3vg6h4/s72-c/IMG_0008%5B1%5D.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><media:rating>nonadult</media:rating></channel></rss>

