<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mobile March</title>
	<atom:link href="http://www.frankdu.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.frankdu.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 03 Feb 2019 06:13:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.0.4</generator>
	<item>
		<title>Support 21:9 monitor resolution via HDMI in Raspberry Pi 3</title>
		<link>https://www.frankdu.com/blog/2019/02/02/support-219-monitor-resolution-via-hdmi-in-raspberry-pi-3/</link>
		<comments>https://www.frankdu.com/blog/2019/02/02/support-219-monitor-resolution-via-hdmi-in-raspberry-pi-3/#respond</comments>
		<pubDate>Sun, 03 Feb 2019 02:46:48 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Raspberry]]></category>

		<guid isPermaLink="false">https://www.frankdu.com/blog/?p=417</guid>
		<description><![CDATA[raspberry-3-config-for-21-vs-9-aspect-ratio-monitor <a href="https://www.frankdu.com/blog/2019/02/02/support-219-monitor-resolution-via-hdmi-in-raspberry-pi-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2019/02/02/support-219-monitor-resolution-via-hdmi-in-raspberry-pi-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: record screen cast like a breeze</title>
		<link>https://www.frankdu.com/blog/2014/01/26/android-record-screen-cast-easily/</link>
		<comments>https://www.frankdu.com/blog/2014/01/26/android-record-screen-cast-easily/#respond</comments>
		<pubDate>Mon, 27 Jan 2014 07:36:35 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=400</guid>
		<description><![CDATA[Record screen video can be super easy. First, put below lines in your .bash_profile file. Then type the command screenrecord demo_video_name. When you are done, press Ctrl + C to stop recording. Easy, huh! Please note: Android 4.4+ (KitKat or &#8230; <a href="https://www.frankdu.com/blog/2014/01/26/android-record-screen-cast-easily/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2014/01/26/android-record-screen-cast-easily/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android: capture screenshot with one line of adb command</title>
		<link>https://www.frankdu.com/blog/2014/01/26/android-capture-screenshot-with-one-line-of-adb-command/</link>
		<comments>https://www.frankdu.com/blog/2014/01/26/android-capture-screenshot-with-one-line-of-adb-command/#respond</comments>
		<pubDate>Mon, 27 Jan 2014 07:30:55 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=398</guid>
		<description><![CDATA[Just one-liner to capture android screenshot: [crayon-5cc1d55154000709740024/]]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2014/01/26/android-capture-screenshot-with-one-line-of-adb-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: Create android gradle project with dagger</title>
		<link>https://www.frankdu.com/blog/2014/01/18/tutorial-create-android-gradle-project-with-dagger/</link>
		<comments>https://www.frankdu.com/blog/2014/01/18/tutorial-create-android-gradle-project-with-dagger/#comments</comments>
		<pubDate>Sun, 19 Jan 2014 03:29:27 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[dagger]]></category>
		<category><![CDATA[gradle]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=386</guid>
		<description><![CDATA[It is tricky to set up multi-module projects with android &#038; gradle, if you are new to it. It is even trickier to make it working with Dagger. A bit background knowledge: Dagger is an open-source dependency injection framework designed &#8230; <a href="https://www.frankdu.com/blog/2014/01/18/tutorial-create-android-gradle-project-with-dagger/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2014/01/18/tutorial-create-android-gradle-project-with-dagger/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Gradle &#038; Dagger: Add dagger code generation to android library and app</title>
		<link>https://www.frankdu.com/blog/2013/11/20/gradle-dagger-compiler-code-generation-for-android-library-and-app-projects/</link>
		<comments>https://www.frankdu.com/blog/2013/11/20/gradle-dagger-compiler-code-generation-for-android-library-and-app-projects/#comments</comments>
		<pubDate>Thu, 21 Nov 2013 06:11:55 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=383</guid>
		<description><![CDATA[Edit: A newer and simpler method, is published in this blog post. Recommend you use that method. Before gradle better support annotation processors, you need a workaround to make: 1). dagger code generation working with android project; 2). Make really &#8230; <a href="https://www.frankdu.com/blog/2013/11/20/gradle-dagger-compiler-code-generation-for-android-library-and-app-projects/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2013/11/20/gradle-dagger-compiler-code-generation-for-android-library-and-app-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Technology Touched Over the Weekend</title>
		<link>https://www.frankdu.com/blog/2013/11/18/technology-touched-over-the-weekend/</link>
		<comments>https://www.frankdu.com/blog/2013/11/18/technology-touched-over-the-weekend/#respond</comments>
		<pubDate>Mon, 18 Nov 2013 08:29:52 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=377</guid>
		<description><![CDATA[Haven&#8217;t dived into new technologies for a while. Did several interesting things: OAuth 2.0 Provider Implementation &#8211; Implement both authorization provider and resource provider on Tornado, using oauth2lib. Redis &#8211; Used to store/retrieve OAuth codes and tokens. Social login &#8211; &#8230; <a href="https://www.frankdu.com/blog/2013/11/18/technology-touched-over-the-weekend/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2013/11/18/technology-touched-over-the-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed up static resources with AWS CloudFront CDN</title>
		<link>https://www.frankdu.com/blog/2013/09/07/speed-up-static-resources-with-aws-cloudfront-cdn/</link>
		<comments>https://www.frankdu.com/blog/2013/09/07/speed-up-static-resources-with-aws-cloudfront-cdn/#respond</comments>
		<pubDate>Sun, 08 Sep 2013 01:35:50 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=371</guid>
		<description><![CDATA[Nowadays CDN is easy to use. Even a startup or personal website shall consider use CDN to speed up static resources, such as photos, javascript/css files. Here are simple steps to use AWS CloudFront CDN and enable it in Tornado. &#8230; <a href="https://www.frankdu.com/blog/2013/09/07/speed-up-static-resources-with-aws-cloudfront-cdn/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2013/09/07/speed-up-static-resources-with-aws-cloudfront-cdn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INSTALL_REFERRER broadcast helps to track android installation referrer</title>
		<link>https://www.frankdu.com/blog/2013/09/02/install_referrer-broadcast-helps-to-track-android-installation-referrer/</link>
		<comments>https://www.frankdu.com/blog/2013/09/02/install_referrer-broadcast-helps-to-track-android-installation-referrer/#respond</comments>
		<pubDate>Tue, 03 Sep 2013 00:32:01 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www1.frankdu.com/blog/?p=367</guid>
		<description><![CDATA[Many businesses ask you how you hear about them, when you first visit them. Because the data is important for growing their businesses. OK, you have an android app. Aren&#8217;t you interested in tracking how the users find you? For &#8230; <a href="https://www.frankdu.com/blog/2013/09/02/install_referrer-broadcast-helps-to-track-android-installation-referrer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2013/09/02/install_referrer-broadcast-helps-to-track-android-installation-referrer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to display FPS (frame per second) number in Android</title>
		<link>https://www.frankdu.com/blog/2013/01/15/how-to-display-fps-frame-per-second-number-in-android/</link>
		<comments>https://www.frankdu.com/blog/2013/01/15/how-to-display-fps-frame-per-second-number-in-android/#respond</comments>
		<pubDate>Wed, 16 Jan 2013 02:09:44 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.frankdu.com/?p=324</guid>
		<description><![CDATA[Well, check out this blog: Window Backgrounds &#38; UI Speed http://android-developers.blogspot.com/2009/03/window-backgrounds-ui-speed.html]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2013/01/15/how-to-display-fps-frame-per-second-number-in-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploy OAuth provider with mod_wsgi</title>
		<link>https://www.frankdu.com/blog/2011/07/10/deploy-oauth-provider-with-mod_wsgi/</link>
		<comments>https://www.frankdu.com/blog/2011/07/10/deploy-oauth-provider-with-mod_wsgi/#respond</comments>
		<pubDate>Sun, 10 Jul 2011 20:33:57 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[mod_wsgi]]></category>
		<category><![CDATA[oauth]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=297</guid>
		<description><![CDATA[Recently I deploy an OAuth provider with apache/mod_wsgi. Everything works fine on django dev server locally, but is broken onto apache server. After analyzing the logs, it shows that the HTTP header &#8216;Authroization&#8217; is dropped by default. To pass thru &#8230; <a href="https://www.frankdu.com/blog/2011/07/10/deploy-oauth-provider-with-mod_wsgi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/07/10/deploy-oauth-provider-with-mod_wsgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Many profilers, and I need at least one</title>
		<link>https://www.frankdu.com/blog/2011/04/15/many-profilers-and-i-need-at-least-one/</link>
		<comments>https://www.frankdu.com/blog/2011/04/15/many-profilers-and-i-need-at-least-one/#respond</comments>
		<pubDate>Sat, 16 Apr 2011 00:05:17 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=285</guid>
		<description><![CDATA[Performance improvement is an ongoing task, always. So a profiler is a good friend. For me, the very basic tool is timing and print functions, lol. Yes, they are. In one of language tool, it helps to identify the parsing &#8230; <a href="https://www.frankdu.com/blog/2011/04/15/many-profilers-and-i-need-at-least-one/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/04/15/many-profilers-and-i-need-at-least-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another Way of Javascript Method Overloading</title>
		<link>https://www.frankdu.com/blog/2011/04/08/another-method-of-javascript-method-overloading/</link>
		<comments>https://www.frankdu.com/blog/2011/04/08/another-method-of-javascript-method-overloading/#respond</comments>
		<pubDate>Fri, 08 Apr 2011 18:36:25 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=275</guid>
		<description><![CDATA[In John Resig post, he presented a subtle method to support method overloading. It&#8217;s very useful when you have method overloading and each method behaves differently. However, it adds overhead by wrap up existing methods inside a new function. For &#8230; <a href="https://www.frankdu.com/blog/2011/04/08/another-method-of-javascript-method-overloading/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/04/08/another-method-of-javascript-method-overloading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial: How to ignore everything in a folder?</title>
		<link>https://www.frankdu.com/blog/2011/03/22/mercurial-how-to-ignore-everything-in-a-folder/</link>
		<comments>https://www.frankdu.com/blog/2011/03/22/mercurial-how-to-ignore-everything-in-a-folder/#respond</comments>
		<pubDate>Tue, 22 Mar 2011 17:16:39 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=273</guid>
		<description><![CDATA[I have been looking for this for a while. It&#8217;s pretty simple. Let&#8217;s say you have project A, and want to ignore 2 folders: bin and output. 1. In your project folder, edit the file &#8216;.hgignore&#8217;, or create it if &#8230; <a href="https://www.frankdu.com/blog/2011/03/22/mercurial-how-to-ignore-everything-in-a-folder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/03/22/mercurial-how-to-ignore-everything-in-a-folder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implement Unsigned Right Shift (&gt;&gt;&gt;) if the Operator is Unsupported</title>
		<link>https://www.frankdu.com/blog/2011/03/11/implement-unsigned-right-shift-if-the-operator-is-unsupported/</link>
		<comments>https://www.frankdu.com/blog/2011/03/11/implement-unsigned-right-shift-if-the-operator-is-unsupported/#respond</comments>
		<pubDate>Fri, 11 Mar 2011 23:06:25 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=267</guid>
		<description><![CDATA[If you are Java/Javascript/AS3 developer, you know what the >>> operator does. It is called unsigned right shift, or logical right shift. Check the definition in wikipedia. However, C# and C++ don&#8217;t have such operator for signed integers, though it &#8230; <a href="https://www.frankdu.com/blog/2011/03/11/implement-unsigned-right-shift-if-the-operator-is-unsupported/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/03/11/implement-unsigned-right-shift-if-the-operator-is-unsupported/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get the real client IP address, when you use a reverse proxy</title>
		<link>https://www.frankdu.com/blog/2011/02/11/get-the-real-client-ip-address-when-you-use-a-reverse-proxy/</link>
		<comments>https://www.frankdu.com/blog/2011/02/11/get-the-real-client-ip-address-when-you-use-a-reverse-proxy/#respond</comments>
		<pubDate>Sat, 12 Feb 2011 03:53:50 +0000</pubDate>
		<dc:creator><![CDATA[frankdu]]></dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.frankdu.com/notes/?p=236</guid>
		<description><![CDATA[Let&#8217;s say you are running ASP.NET, PHP, JSP, or Python web. If the code is visited via reverse proxy, then the client IP address is the proxy IP with regular detecting routue. To fix the issue, let&#8217;s first take a &#8230; <a href="https://www.frankdu.com/blog/2011/02/11/get-the-real-client-ip-address-when-you-use-a-reverse-proxy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>https://www.frankdu.com/blog/2011/02/11/get-the-real-client-ip-address-when-you-use-a-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.w3-edge.com/products/

Page Caching using disk: enhanced 

Served from: www.frankdu.com @ 2019-04-25 08:42:09 by W3 Total Cache
-->