tag:blogger.com,1999:blog-63824808197690057762024-02-18T20:32:21.442-08:00HipaticBlog about technology and more.Unknownnoreply@blogger.comBlogger56125tag:blogger.com,1999:blog-6382480819769005776.post-31680583503554576842023-11-22T05:54:00.000-08:002023-11-22T05:54:58.162-08:00Run Visual Studio Code Natively on Termux Proot Ubuntu or Other Linux Distribution<p> I recently got back to Android because I came across an article on installing Ubuntu "natively" on Android without systemd via Termux and proot.</p><p>I will link relevant articles as I update this post.</p><p>After I installed Ubuntu via proot, I searched for ways to get a GUI running. This can be done via VNC Server.</p><p>Again, I will link relevant articles later.</p><p>Then, I looked for ways to get VS Code running and found that most guides propose installing code-server and then accessing Code via a browser, which has some limitations with extensions. I would propose using vscode.dev instead if you generally have a good network connection on your phone. Because I had a gui running from step 2, I installed VS Code as you would normally on Ubuntu (from a .deb file or using the tar.gz file available for download for arm64 on the VS code website. I realised that I could not install .deb files on a stripped down Ubuntu environment (it worked when I installed ubuntu-desktop instead of gnome desktop and apt-utils). Then finally I was able to run VS code without sandbox by passing the parameters --no-sandbox.</p><p>There are still plenty of issues and I am passed why a full vm is not available on android. </p><p>That is for a another post.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-74214806074257490482020-08-07T14:08:00.001-07:002020-08-07T14:08:36.952-07:00The Best Intel Gaming CPUs of 2020<p></p><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8bNFv90vGyd2YUrXGAkmEe6V7yv52bJMfn3FZrtpINfz9c4-NRL9fi5mfMlSGSsAoNgZsCg-PWGwugYHMMp-Ac4ejjUjimW3pjUBrgk43mBN1uH2mEvhdbRY5mJSH_gN4_eFlzWGYX6Q/s1280/processor-2217771_1280.jpg" imageanchor="1" style="display: block; padding: 1em 0px;"><span style="font-family: helvetica;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8bNFv90vGyd2YUrXGAkmEe6V7yv52bJMfn3FZrtpINfz9c4-NRL9fi5mfMlSGSsAoNgZsCg-PWGwugYHMMp-Ac4ejjUjimW3pjUBrgk43mBN1uH2mEvhdbRY5mJSH_gN4_eFlzWGYX6Q/s640/processor-2217771_1280.jpg" width="640" /></span></a></div><div class="separator" style="clear: both;"><span style="font-family: helvetica;"><br /></span></div><p><span style="font-family: helvetica;"><strong>1. Intel Core i9 10900K: </strong><br /> Based on Intel's Comet Lake, Intel Core i9 10900K was launched in 43922 for a starting price of 488 USD. This CPU was ranked #1 in the review.</span></p>
<p><span style="font-family: helvetica;"><strong>2. Intel Core i9 9900K: </strong><br /> Based on Intel's Comet Lake, Intel Core i9 9900K was launched in 43374 for a starting price of 499 USD. This CPU was ranked #2 in the review.</span></p>
<p><span style="font-family: helvetica;"><strong>3. Intel Core i7 9700K: </strong><br /> Based on Intel's Coffee Lake, Intel Core i7 9700K was launched in 43374 for a starting price of 374 USD. This CPU was ranked a joint #2 in the review.</span></p>
<p><span style="font-family: helvetica;"><strong>4. Intel Core i5-10600K: </strong><br /> Based on Intel's Comet Lake, Intel Core i5-10600K was launched in 43922 for a starting price of 262 USD. This CPU was ranked #3 in the review.</span></p>
<p><span style="font-family: helvetica;"><strong>5. Intel Core i5 9400F: </strong><br /> Based on Intel's Coffee Lake, Intel Core i5 9400F was launched in 43466 for a starting price of 182 USD. This CPU was ranked #4 in the review.</span></p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 266px;">
<colgroup><col span="2" style="mso-width-alt: 4631; mso-width-source: userset; width: 100pt;" width="133"></col>
</colgroup><tbody><tr height="19" style="height: 14.5pt;">
<td class="xl66" height="19" style="height: 14.5pt; text-align: center; width: 100pt;" width="133"><span style="font-family: helvetica;">Rank</span></td>
<td class="xl66" style="border-left: none; text-align: center; width: 100pt;" width="133"><span style="font-family: helvetica;">CPU</span></td>
</tr>
<tr height="19" style="height: 14.5pt;">
<td class="xl65" height="19" style="border-top: none; height: 14.5pt; text-align: center;"><span style="font-family: helvetica;">1</span></td>
<td class="xl65" style="border-left: none; border-top: none; text-align: center;"><span style="font-family: helvetica;"> Intel Core i9 10900K</span></td>
</tr>
<tr height="19" style="height: 14.5pt;">
<td class="xl65" height="19" style="border-top: none; height: 14.5pt; text-align: center;"><span style="font-family: helvetica;">2</span></td>
<td class="xl65" style="border-left: none; border-top: none; text-align: center;"><span style="font-family: helvetica;"> Intel Core i9 9900K</span></td>
</tr>
<tr height="19" style="height: 14.5pt;">
<td class="xl65" height="19" style="border-top: none; height: 14.5pt; text-align: center;"><span style="font-family: helvetica;">2</span></td>
<td class="xl65" style="border-left: none; border-top: none; text-align: center;"><span style="font-family: helvetica;"> Intel Core i7 9700K</span></td>
</tr>
<tr height="19" style="height: 14.5pt;">
<td class="xl65" height="19" style="border-top: none; height: 14.5pt; text-align: center;"><span style="font-family: helvetica;">3</span></td>
<td class="xl65" style="border-left: none; border-top: none; text-align: center;"><span style="font-family: helvetica;"> Intel Core i5-10600K</span></td>
</tr>
<tr height="19" style="height: 14.5pt;">
<td class="xl65" height="19" style="border-top: none; height: 14.5pt; text-align: center;"><span style="font-family: helvetica;">4</span></td>
<td class="xl65" style="border-left: none; border-top: none; text-align: center;"><span style="font-family: helvetica;"> Intel Core i5 9400F</span></td>
</tr></tbody></table><span style="font-family: helvetica;"><br />
</span><div><span style="font-family: helvetica;">Sources:</span></div><div><div class="csl-left-margin" style="box-sizing: border-box; font-size: 16px;"><span style="font-family: helvetica;">1. Wikipedia Contributors. List of Intel Core i9 microprocessors [Internet]. Wikipedia. Wikimedia Foundation; 2020 [cited 2020 Aug 7]. Available from: <a href="https://en.wikipedia.org/wiki/List_of_Intel_Core_i9_microprocessors">https://en.wikipedia.org/wiki/List_of_Intel_Core_i9_microprocessors</a></span></div><p style="box-sizing: border-box; font-size: 16px;"></p><p style="box-sizing: border-box; font-size: 16px;"><span style="font-family: helvetica;">2. Wikipedia Contributors. List of Intel Core i7 microprocessors [Internet]. Wikipedia. Wikimedia Foundation; 2020 [cited 2020 Aug 7]. Available from: <a href="https://en.wikipedia.org/wiki/List_of_Intel_Core_i7_microprocessors">https://en.wikipedia.org/wiki/List_of_Intel_Core_i7_microprocessors</a></span></p><p style="box-sizing: border-box; font-size: 16px;"></p><p style="box-sizing: border-box; font-size: 16px;"><span style="font-family: helvetica;">3. Wikipedia Contributors. List of Intel Core i5 microprocessors [Internet]. Wikipedia. Wikimedia Foundation; 2020 [cited 2020 Aug 7]. Available from: <a href="https://en.wikipedia.org/wiki/List_of_Intel_Core_i5_microprocessors">https://en.wikipedia.org/wiki/List_of_Intel_Core_i5_microprocessors</a></span></p><p style="box-sizing: border-box; font-size: 16px;"></p><p style="box-sizing: border-box; font-size: 16px;"><span style="font-family: helvetica;">4. Image by <a href="https://pixabay.com/users/ColiN00B-346653/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2217771">Colin Behrens</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2217771">Pixabay</a></span></p></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-66906090530311953782017-11-27T15:47:00.000-08:002017-11-27T15:48:26.986-08:00Outlook.com with 2fa and Microsoft Authenticator is broken!So if you have enabled 2fa on your Microsoft account and then enabled Microsoft Authenticator and you uninstall the authenticator app, you can no longer login to your email account.<br />
<br />
You cannot ask for help as that requires you to login. You can basically do nothing.<br />
<br />
The error:<br />
<br />
When you login to your Microsoft account, you enter your password, then the login page prompts you to accept the login on the Authenticator app. Without the app, if you try and login using your backup email or phone number, you are routed back to your enter password screen. This then loops endlessly.<br />
<br />
I have written to Microsoft regarding this. Let me see if they reply. Will update the post soon hopefully.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-57875293644639546482015-10-14T15:15:00.000-07:002015-10-14T15:15:09.046-07:00Lenovo A6000 / Plus with Lollipop 5.1.1 with Hindi Font issue solvedI recently updated my Lenovo A6000 (which is showing signs of wear) to Lollipop 5.1.1 using <a href="http://forum.xda-developers.com/android/development/android-lolipop-5-1-1-stable-rom-bug-t3221195">this tutorial</a> on XDA Developers. (The forum post tells me that the author of this rather marvelous mod is <a href="http://www.amodindo.tk/2015/10/rom-new-mokee-511-lenovo-a6000plus.html">A-MOD</a>). After updating, I found that I could no longer read WhatsApp forwards which were not in English. All Hindi and Marathi characters where replaced by blocks or what some people call "Tofu"(and hence the <b>No</b> <b>To</b>fu font - the Noto fonts by Google). So I did what I do best and found articles dating back to 2010 and 2012 talking about DroidSanFallback.ttf font, the /system/fonts folder, the /system/etc folder, the fonts.xml file and the fallback_fonts.xml file. After several permutations and combinations which luckily did not brick my phone. I got the following solution.<br />
<br />
To begin with, you will need a freshly tortured A6000/Plus with the 5.1.1 unofficial ROM installed. After that, I would recommend enabling Root Access from Developer Options for Apps, installing the ES File Browser app and enabling Root Explorer mode from within the app.<br />
<br />
Before you proceed take a backup of everything, create a restore point for your life, and ship all backup copies to a different continent, just in case.<br />
<br />
Then do the following<br />
<br />
1. Download <a href="http://forum.xda-developers.com/attachment.php?attachmentid=412380&d=1286103799">this version</a> (sourced from <a href="http://android.stackexchange.com/a/26285">this answer</a> on stackexchange) and extract DroidSansFallback.ttf<br />
<br />
2. Browse to /system/ and rename the fonts folder to fontsold<br />
<br />
3. Create a new "fonts" folder in /system<br />
<br />
4. Copy DroidSansFallback.ttf from step 1 to your new fonts folder.<br />
<br />
5. Copy all fonts with names starting with Roboto to the new fonts folder.<br />
<br />
6. Restart<br />
<br />
If everything went well, you will now be able to see Hindi characters. If not, you have my deepest apologies.<br />
<br />
There was one other thing that didn't work for me when I did the upgrade - recovery images. I was using recovery images for K30T to create a nandroid backup when I was on KitKat 4.4.4. And the advanced TWRP recovery for creating a backup of /efs and /modem. However, the recovery images for KitKat don't seem to work with the Lollipop updated phone. The recovery that worked for me was from <a href="http://d-h.st/cKK">this one</a> from <a href="http://www.itechaditya.com/roms/install-android-5-1-1-lollipop-on-lenovo-a6000plus/#">itechaditya's website</a>. <br />
<br />
Some more odds and ends - You might want to use a newer version of DroidSansFallback.ttf. The Hindi font isn't as good looking as the one on Kitkat. There must be a better solution to this issue like correcting fonts.xml and fallback_fonts.xmlUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-85943132939680599922014-11-08T05:16:00.000-08:002014-11-08T15:37:15.387-08:00MixRadio India subscriptions discontinuedMicrosoft who took over Nokia's mobile division, is no longer offering renewals for MixRadio in India. The subscription allowed users to download songs. Mixradio will continue as a streaming only service. <br />
The related FAQ page on microsoft.com has the following message:<br />
"You will no-longer be able to purchase renewals for your unlimited download subscription via Operator Billing, Credit/Debit Card or Voucher as this feature is no-longer available"<br />
<br />
<br />
Source: <a href="http://www.microsoft.com/en-in/mobile/support/product/mixradio/faq/?action=singleTopic&topic=FA144145">http://www.microsoft.com/en-in/mobile/support/product/mixradio/faq/?action=singleTopic&topic=FA144145</a><br />
<br /><br />
Update:<br />
wmpoweruser.com received a reply from Mixradio India's twitter handle saying they are working on re-enabling vouchers.<br />
Source: <a href="http://wmpoweruser.com/mixradio-working-on-re-enabling-voucher-payments-in-india/">http://wmpoweruser.com/mixradio-working-on-re-enabling-voucher-payments-in-india/</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-22108978508632014602014-01-25T04:57:00.000-08:002014-01-25T05:17:46.181-08:00Touchpad and WiFi stopped working on UbuntuThe last thing I remember about using this laptop was that bluetooth had stopped working. Even though it worked when I booted up Windows 8. I remember fiddling around with scripts I did not understand. So when I booted up my old laptop weeks later, I found that mouse(touchpad) and WiFi were dead too. What's more, everything worked fine on Windows.<br />
<br />
Let's cut to the chase. Since I did not have a working internet connection on the laptop(in Ubuntu), I wondered if I could reinstall the touchpad packages and opened up Synpatic Package Manager, which gave me an error asking me to run the following<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">> sudo dpkg --configure -a </span><br />
<br />
I ran it and rebooted Ubuntu. Mouse and Wifi started working after restarting the system.
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-76113857426278140772012-12-14T12:50:00.003-08:002012-12-15T02:59:41.873-08:00Appengine: Custom Error Handlers using webapp2 - Python 2.7Google Developers has a <a href="https://developers.google.com/appengine/docs/python/config/appconfig#Custom_Error_Responses">writeup on Custom Error Responses using app.yaml</a>
<br />
<br />
Here is a sample app.yaml<br />
<br />
<b><span style="font-family: "Courier New",Courier,monospace;">app.yaml</span></b><br />
<br />
<pre>application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
static_dir: static
http_headers:
Vary: Accept-Encoding
- url: /articles/.*
script: articles.app
</pre>
On the Development Environment, I get the following error when I visit http://localhost:8080/ i.e the home page
<br />
<pre>Not found error: / did not match any patterns in application configuration.
</pre>
<br />
On Appengine, a standard 404 Error is shown<br />
<br />
<pre>Error: Not Found
The requested URL / was not found on this server.
</pre>
This is because the app.yaml file does not specify any handler for "/"
Here is the articles.py file<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><b>articles.py</b></span> <br />
<br />
<pre>import webapp2
class HomePage(webapp2.RequestHandler):
def get(self):
self.response.write.out("Hello Birds!")
app = webapp2.WSGIApplication(
[ (r'/articles/', HomePage)
],
debug=True)
</pre>
<b>Specifying Custom Error Pages in app.yaml
</b><br />
<br />
Let us use the advice on <a href="https://developers.google.com/appengine/docs/python/config/appconfig#Custom_Error_Responses">this Google Developers page under Custom Error Responses section</a><br />
<br />
<pre>error_handlers:
- file: default_error.html
- error_code: over_quota
file: over_quota.html
</pre>
<br />
The page further goes on to say, that error_code can be<br />
1. over_quota<br />
2. dos_api_denial<br />
3. timeout<br />
<br />
Whether this error_handler can handle 404 or 500 errors is not mentioned.<br />
<br />
The error_code part is optional. So we edit app.yaml as follows
app.yaml<br />
<span style="font-family: "Courier New",Courier,monospace;"><b><br /></b></span>
<span style="font-family: "Courier New",Courier,monospace;"><b>app.yaml</b></span><br />
<br />
<pre>application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
static_dir: static
http_headers:
Vary: Accept-Encoding
- url: /articles/.*
script: articles.app
error_handlers:
- file: default_error.html
</pre>
<br />
On testing on both the development server and live environments, the Custom error page, default_error.html is <b>not</b> served for 404 errors. We get the same 404 error as before.<br />
<br />
I could not come up with something that would raise a 500 error without having to use a script.<br />
<br />
Additionally, I read this comment on <a href="http://code.google.com/p/googleappengine/issues/detail?id=6781">this Google Code page</a><br />
<blockquote class="tr_bq">
"Over quota error pages are only displayed if your entire app is over quota (eg, out of instance hours or bandwidth). If you've run out of quota for a specific API, then an exception is thrown..."
</blockquote>
Out of the three error codes supported, timeout is one which we can try to reproduce. Any request that takes more than 30 seconds will produce a timeout error. Change articles.py to the following<br />
<span style="font-family: "Courier New",Courier,monospace;"><b><br /></b></span>
<span style="font-family: "Courier New",Courier,monospace;"><b>articles.py</b></span><br />
<br />
<pre>import webapp2,time
class HomePage(webapp2.RequestHandler):
def get(self):
time.sleep(140)
self.response.write("Hello Birds!")
app = webapp2.WSGIApplication(
[ (r'/articles/', HomePage)
],
debug=True)
</pre>
The script sleeps for 140 seconds, enough to produce a timeout.<br />
<br />
On visiting /articles/ on the dev_server, I do not get an error. But the live environment gives me the custom error page.<br />
<br />
The Developer page says<br />
<blockquote class="tr_bq">
"Warning!: Make sure that the path to the error response file does not overlap with static file handler paths. " </blockquote>
But editing app.yaml, and moving the custom error file to a static directory, still gives me the custom error page on the live environment.<br />
<br />
<pre>error_handlers:
- file: static/default_error.html
</pre>
Note that I have only checked this for timeout. It hopefully should work for dos_api_denial and over_quota too.<br />
<br />
However, it does not work for 404 errors and I have my doubts about 500 errors being handled.<br />
<br />
On the other hand, 500 errors, will most likely be encountered in scripts, and there is a simpler way to handle 404, 500 and other exceptions within a script.<br />
<br />
The example below is for webapp2. I haven't tried the same on webapp.<br />
<br />
<b>Error handling using handle_exception(): </b><br />
<br />
<a href="http://webapp-improved.appspot.com/guide/exceptions.html">http://webapp-improved.appspot.com/guide/exceptions.html</a> describes the handle_exception method<br />
<br />
handle_exception is a method of webapp2.RequestHandler. Any uncaught exceptions are passed on to this method. All this method does by default is raise the error to WSGIApplication.handle_exception().<br />
<br />
To use it, we extend webapp2.RequestHandler.<br />
<br />
articles.py is edited as follows<br />
(code adapted from <a href="http://webapp-improved.appspot.com/guide/exceptions.html">webapp-improved.appspot.com/guide/exceptions.html</a>)<br />
<span style="font-family: "Courier New",Courier,monospace;"><b><br /></b></span>
<span style="font-family: "Courier New",Courier,monospace;"><b>articles.py</b></span><br />
<br />
<pre>import webapp2
class BaseHandler(webapp2.RequestHandler):
def handle_exception(self, exception, debug):
# Set a custom message.
<b> self.response.write('Custom Error Message')
</b>
# If the exception is a HTTPException, use its error code.
# Otherwise use a generic 500 error code.
if isinstance(exception, webapp2.HTTPException):
self.response.set_status(exception.code)
else:
self.response.set_status(500)
class HomePage(BaseHandler):
def get(self):
<b> self.session.pop("h")
</b> self.response.write("Hello Birds!")
app = webapp2.WSGIApplication(
[ (r'/articles/', HomePage)
],
debug=True)
</pre>
In the HomePage class, I am trying to pop a session when I have no session defined, so that a 500 error is raised.<br />
<br />
On visiting /articles/ I get a 500 error, with our custom text "Custom Error Message"<br />
<br />
On visiting /articles/blah ,which I am not mapping to anything, I get a generic 404 error.
This is because, all that the articles module is used for is the url /articles/ and nothing else.<br />
<br />
Changed articles.py as follows<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><b>articles.py</b> </span><br />
<br />
<pre>import webapp2
class BaseHandler(webapp2.RequestHandler):
def handle_exception(self, exception, debug):
# Set a custom message.
self.response.write('An error occurred.')
# If the exception is a HTTPException, use its error code.
# Otherwise use a generic 500 error code.
if isinstance(exception, webapp2.HTTPException):
self.response.set_status(exception.code)
else:
self.response.set_status(500)
<b>class MissingPage(BaseHandler):
def get(self):
self.response.set_status(404)
self.response.write("404 Custom Error!")
</b>
class HomePage(BaseHandler):
def get(self):
self.response.write("Hello Birds!")
app = webapp2.WSGIApplication(
[ (r'/articles/', HomePage),
<b> (r'/articles/.*', MissingPage)
</b> ],
debug=True)
</pre>
Now, when I visit /articles/blah I get my 404 Custom error message.
Instead of self.response.set_status, you can use self.error as well<br />
<br />
<pre>class MissingPage(BaseHandler):
def get(self):
self.error(404)
self.response.write("404 Custom Error!")
</pre>
error in self.error is a method of webapp2.RequestHandler, which does the following<br />
(code from <a href="http://code.google.com/codesearch#Qx8E-7HUBTk/trunk/python/lib/webapp2/webapp2.py">http://code.google.com/codesearch#Qx8E-7HUBTk/trunk/python/lib/webapp2/webapp2.py</a> Apache2 License) <br />
<br />
<pre>self.response.status = HTTP_ERROR_CODE
self.response.clear()
</pre>
<br />
<b>How to handle errors out of url path /articles/.* ? </b><br />
<br />
Map everything else to a script, which does the error handling as done in articles.py<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><b>app.yaml</b></span><br />
<br />
<pre>application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
static_dir: static
http_headers:
Vary: Accept-Encoding
- url: /articles/.*
script: articles.app
<b>- url: /.*
script: others.app
</b>
error_handlers:
- file: error.html
</pre>
<br />
<span style="font-family: "Courier New",Courier,monospace;"><b>others.py</b></span><br />
<br />
<pre>import webapp2
class BaseHandler(webapp2.RequestHandler):
def handle_exception(self, exception, debug):
self.response.write('An error occurred.')
if isinstance(exception, webapp2.HTTPException):
self.response.set_status(exception.code)
else:
self.response.set_status(500)
class MissingPage(BaseHandler):
def get(self):
self.response.set_status(404)
self.response.write("404 Custom!")
app = webapp2.WSGIApplication(
[ (r'/.*', MissingPage)
],
debug=True)
</pre>
This will map everything other than /articles/ and your static files as mentioned in app.yaml to our custom error page.<br />
<br />
<b>tl;dr </b>:<br />
<br />
Custom Error Handling in appengine:<br />
<br />
1. over_quota<br />
2. dos_api_denial<br />
3. timeout<br />
<br />
for the above three use, error handler in app.yaml<br />
<br />
<pre>error_handlers:
- file: default_error.html
- error_code: over_quota
file: over_quota.html
</pre>
<br />
<b>For 404, 500 and other errors in appengine: </b><br />
<br />
extend webapp2.RequestHandler <br />
override handle_exception() method and set your own custom message.<br />
<br />
<i>I haven't described template usage to keep things simple for myself. Additionally, you should go through <a href="http://webapp-improved.appspot.com/guide/exceptions.html">http://webapp-improved.appspot.com/guide/exceptions.html</a>. I have skipped the logging part of handling exceptions, which you might want to include. </i><br />
<br />
<b>Sources:</b><br />
Google Developers - <a href="https://developers.google.com/appengine/docs/python/config/appconfig#Custom_Error_Responses">https://developers.google.com/appengine/docs/python/config/appconfig#Custom_Error_Responses</a><br />
<br />
Webapp2 Docs - <a href="http://webapp-improved.appspot.com/guide/exceptions.html">webapp-improved.appspot.com/guide/exceptions.html</a><br />
<br />
<br />
Google Code Search - License Apache 2 - <a href="http://code.google.com/codesearch#Qx8E-7HUBTk/trunk/python/lib/webapp2/webapp2.py">http://code.google.com/codesearch#Qx8E-7HUBTk/trunk/python/lib/webapp2/webapp2.py</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-3110262205424154422012-11-17T12:56:00.001-08:002012-12-14T07:50:30.263-08:00AppEngine: Intermittent DJANGO_SETTINGS_MODULE is undefined error on Django with Python 2.7 on Google App EngineEver since moving from webapp to Django on Python 2.7, I was plagued with the following error, albeit intermittently.
Whenever, I would flush my memcache or start a new instance or run into an unhandled exception, my appengine based app wouldn't start. Logs gave me the following error,
<br />
<br />
<pre>Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
</pre>
<br />
I searched far and wide for a solution, looked up topics on stackoverflow. The DJANGO_SETTINGS_MODULE is a common problem for django novices like yours truly and stackoverflow had umpteen questions and answers regarding the issue, but I couldn't find the right answer.<br />
<br />
Well, let me start off with a piece of my bad code.<br />
<br />
I looked up the <a href="https://docs.djangoproject.com/en/dev/topics/settings/">official documentation</a> for pointers when I started the migration from webapp templates to purer Django templates on my appengine project.
The Django Documentation on Settings page mentions the following two options to configure django settings on a project(apart from using django-admin.py, if you are running a fuller django stack, instead of just django templates)<br />
<br />
<b>Option One: </b><br />
<br />
In your script file(the file which handles your urls as mentioned in your app.yaml) for eg. main.py, add this at the very top before calling anything Django. The Django Documentation on settings page describes this in context of mod_wsgi.
<br />
<br />
<pre>import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
</pre>
<br />
<br />
<b>Option Two: </b><br />
<br />
In your script file add this at the top before using anything django
<br />
<pre>from django.conf import settings
settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
TEMPLATE_DIRS=('/home/web-apps/myapp', '/home/web-apps/base'))
</pre>
<br />
Now, my settings file looks like this, as you may know from my previous posts. This settings.py is loaded when you set the DJANGO_SETTINGS_MODULE to the string 'settings'
<br />
<b>settings.py</b>
<br />
<pre>INSTALLED_APPS = ('myapp')
</pre>
Now, all this does is asks django to find a folder named myapp in my root application folder, for all the files that django templates needs.
<br />
<b>Folder structure</b>
<br />
<pre>applicationfolder(root)/
--myapp/
__init__.py
--templates/
--template.html
--app.yaml
--main.py
--settings.py
</pre>
<br />
For eg. all of the template files should go under the folder myapp, in a folder called templates, the tags, in a folder called templatetags and so on.
So far, so good.<br />
<br />
As I didn't know how to configure the second option for appengine, as we have no idea what the absolute folder paths will be for our appengine applications, I decided to use option one.<br />
<br />
After I had just moved to django templates from webapp, templates wouldn't render as I had not defined the settings module and I would get the DJANGO_SETTINGS_MODULE is undefined error 100 percent of the time and naturally so.<br />
<br />
So I added the settings as per option one in my main.py.<br />
<br />
<b>main.py
</b><br />
<pre>import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
#followed by other imports
</pre>
<br />
This worked rather well in the beginning. My templates started to render and I had no issues, till I ran into an unhandled exception when testing my site on the sdk's development server. After I fixed the code which was causing the exception, I got the DJANGO_SETTINGS_MODULE is undefined error which I would then go on to dread for the next day or so.<br />
<br />
I restarted the server and the error disappeared and my templates were rendering again, <i>without changing the code</i>.<br />
<br />
Then, when I flushed my memcache while working on my app, I once again got the DJANGO_SEETINGS_MODULE is undefined error. I restarted my server and the error disappeared.<br />
<br />
Then, I deployed the code on appengine and noticed my app would run for sometime, but would eventually stop serving with the aforementioned error.<br />
<br />
Here is a stack trace from appengine's log, with appname as my application name
<br />
<br />
<pre>Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
return handler.dispatch()
File "/base/data/home/apps/s~appname/1.766876876868686/main.py", line 807, in dispatch
webapp2.RequestHandler.dispatch(self)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~appname/1.766876876868686/main.py", line 1417, in get
self.template_out(tmpl, tvals)
File "/base/data/home/apps/s~appname/1.766876876868686/main.py", line 885, in template_out
dtemplate=get_template(path)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/template/loader.py", line 145, in get_template
template, origin = find_template(template_name)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/template/loader.py", line 127, in find_template
for loaader_name in settings.TEMPLATE_LOADERS:
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/utils/functional.py", line 184, in inner
self._setup()
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
</pre>
<br />
I didn't understand much, other than that the code mentions a line from my main.py,
<br />
<br />
<pre> dtemplate=get_template(path)
</pre>
<br />
which is how I get the template file's path.<br />
<br />
A solution to this error on the live environment was to shutdown the instance, the new instance would mostly start serving normally, until the error would pop up again.<br />
<br />
I have now(apparently) fixed this, which I will describe below, but I am not sure about the why's and how's of the error.<br />
<br />
<b>Finding a solution:</b><br />
<br />
I looked up questions on stackoveflow ( which is now the official place to ask questions regarding google appengine (use the official google-app-engine tag) ), but couldn't find anything that fit. I went back to the official documentation, which gave the following way to check for whether the environment variable DJANGO_SETTINGS_MODULE is set or not
<br />
<br />
<pre>from django.conf import settings
if not settings.configured:
settings.configure(myapp_defaults, DEBUG=True)
</pre>
<br />
The syntax used is the one from option two, so I modified it to,
<br />
<br />
<pre>import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
if not settings.configured:
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
</pre>
<br />
Which did not make any sense to me and did not work. The app would work for sometime and then would get into an error again.<br />
<br />
Deleting the compiled ( .pyc ) files and restarting the app, gave me some more running time, but the fix was not permanent.
I started searching for code samples on code.google.com/codesearch which could give me insights on how other users use this on their appengine apps, I found some code samples, but no solution.<br />
<br />
Searching for working Djnago implementations on appengine, brought me to this post by <a href="http://edcrewe.blogspot.com/2012/06/upgrading-google-app-engine-django-app.html">Ed Crewe on migrating his app from Python 2.5 to Python 2.7</a> which led me to the fix.<br />
<br />
<b>The Fix:</b><br />
<br />
In Ed Crewe's post, he is using the same,
<br />
<br />
<pre>os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
</pre>
<br />
which is option one above, to set his settings in his new python 2.7 app, which was causing me all the trouble(I wonder if it is causing him any...), but in the code for his Python 2.5 version of the app he does this
<br />
<br />
<pre>import os
from google.appengine.dist import use_library
use_library('django', '1.2')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
<b># Force Django to reload its settings.
settings._target = None
</b>
#code adapted from http://edcrewe.blogspot.com/2012/06/upgrading-google-app-engine-django-app.html,
</pre>
<br />
There is no use_library in Python 2.7(The django version is specified using the libraries handler in app.yaml), so the code for Python 2.7 looked like this on my app<br />
<br />
<b>main.py (fixed)</b><br />
<br />
<pre>import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
<b>
settings._target = None
</b></pre>
<br />
The line in bold is what works the wonder. It, apparently, forces django to reload the settings.<br />
<br />
The application now works and the dreaded error has not been heard from again.
I did not know about settings._target, but searching for the term on google leads me to plenty of results, some like this post from <a href="http://thomas.broxrost.com/2008/04/08/django-on-google-app-engine/"> Thomas Brox Rost on setting up django on the then young appengine in 2008</a><br />
<br />
<b>tl;dr</b><br />
see main.py (fixed)<br />
<br />
Please post a comment if you spot an error in the code.<br />
Sources:<br />
1. <a href="http://edcrewe.blogspot.in/2012/06/upgrading-google-app-engine-django-app.html">Ed Crewe: Upgrading a Google Django App</a>
<br />
2. <a href="https://docs.djangoproject.com/en/dev/ref/settings/">Django Documentation: Settings</a>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-56402791983720816502012-11-10T09:21:00.002-08:002012-11-11T05:05:57.714-08:00AppEngine: Python 2.7, Django Custom Template Filters without webapp, errors and morePart of the move from Python 2.5 to Python 2.7 on Google App Engine, included moving from Django 0.96 to Django > 1.2. Another part of moving, for me atleast, included leaving webapp behind.
I moved to Django 1.3, but leaving webapp is a work in progress and a part of the topic of this post.
<br />
<h2>
Webapp Django vs Django </h2>
<h3>
AppEngines's Internal Django:</h3>
Webapp uses django to handle templating, however, this django version
is an internal version(Let's call this "AppEngine's Internal Django"). This internal version may not support some of the features that a regular installation of Django templates would.<br />
<br />
As of SDK 1.7.3, webapp is located in <b>google.appengine.ext.webapp </b>and the internal django is located at <b>google.appengine._internal.django</b>.<br />
<br />
To use templates from webapp, one is expected to do the following
<br />
<pre class="prettyprint">from google.appengine.ext.webapp import template</pre>
<br />
The <span style="font-family: "Courier New",Courier,monospace;">webapp.template</span> module is just a wrapper for Appengine's Internal Django templates. which are located at <span style="font-family: "Courier New",Courier,monospace;">google.appengine._internal.django.template</span><br />
<br />
To understand this, let us look at how Django Templates work in general.<br />
<br />
<b>How django.template works?</b><br />
<i>(sample code which shows how django.template works. For demonstration only. Not required for appengine. To test - <a href="https://www.djangoproject.com/download/">Download</a> and extract django, cd into django using terminal/cmd, run python. At the python prompt type in the following.)</i><br />
<pre class="prettyprint">from django.template import Template, Context
t = Template("<html><body>This is static data. This is {{ dynamicdata }}</body></html>")
somevariable="some value"
c = Context({'dynamicdata':somevariable})
t.render(c)
</pre>
<br />
This will output the following<br />
<pre class="prettyprint"><html><body>This is static data. This is some value</body></html>
</pre>
<br />
There is support for providing external files(like "view.html"), to hold your template html, using django.template.loader.get_template.<br />
<br />
This however involves, defining DJANGO_SETTINGS_MODULE, defining INSTALLED_APPS, TEMPLATE_DIRS, restructuring your project's folder structure etc.<br />
<br />
To make things easier webapp.template acts as a wrapper for the above.<br />
<br />
<b>Using webapp.template<i> </i></b><br />
<i>(sample code for demonstration, doesn't work at the command line)
</i><br />
<pre class="prettyprint">from google.appengine.ext.webapp import template
somevariable="some value"
output = template.render('templates/view.html', {'dynamicdata': somevariable })
print output
</pre>
<br />
and templates/view.html would contain the required html.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">google.appengine.ext.webapp.template</span> uses the internal django version at <span style="font-family: "Courier New",Courier,monospace;">google.appengine._internal.django</span> , to do your work. This means you do not have to directly import <span style="font-family: "Courier New",Courier,monospace;">google.appengine._internal.django</span>. <br />
<h3>
Library Django</h3>
Apart from the partial internal version of Django, App engine also includes various libraries. As of SDK 1.7.3, Django 0.96 to Django 1.4 versions are included in the library. These versions of Django, apparently include the entire Django framework. Let us call these versions as "Library Django".<br />
<i>(Django is not fully compatible with Google's Datastore, but is with Google Cloud SQL.)</i><br />
<br />
This library version of django, can be used by calling<br />
<br />
import django<br />
<br />
Which version of Django is used, depends upon app.yaml.<br />
<br />
If the file app.yaml includes the following<br />
<br />
<pre class="prettyprint">
<b>app.yaml </b>
...
libraries:
- name: django
version: "1.3"
...
</pre>
<br />In the above case, Django version 1.3 is used. The version number can be changed.<br />
<br />
<span style="font-size: small;"><i>( Another method to import is using use_library</i></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace; font-size: small;">from google.appengine.dist import use_library<br />use_library('django', '1.3')<br />import django </span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><i>This works in Python 2.5, but not in Python 2.7 </i></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><i>On using in python 2.7, I get the following error </i></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace; font-size: small;"><i>File "google_appengine/google/appengine/dist/_library.py", line 190, in DjangoVersion<br /> import django<br /><b>ImportError: No module named django</b></i></span><br />
<br />
<i>)</i><br />
<br />
The topic of this post is using Custom Template Filters with Django Templates on Google App Engine.<br />
<br />
The ways in which this can be done are.<br />
<br />
1. Using AppEngine's Internal Django templates (webapp.template)<br />
<br />
2. Using Django templates from Library Django (django.template)<br />
<br />
<b>Example One: Using AppEngine's Internal Django templates (webapp.template)</b><br />
<i><br /></i>
<i>(My webapp implementation of custom template filters was based on an example from this <a href="http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html">2008 blog post</a>.)</i><br />
<br />
<pre class="prettyprint"><b>Directory structure:
</b>appname-root-directory/
-filterdir/
-customfilters.py
-__init__.py
-main.py
-app.yaml
-view.html
-base.html
<b> </b></pre>
<pre class="prettyprint"><b>app.yaml</b>
application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
#end of app.yaml#
</pre>
main.py should load webapp.template and register the filter by webapp.template.register_template_library('filterdir.customfilters'), where filterdir, is the directory where customfilters.py is located<br />
<pre class="prettyprint">
<b>main.py</b>
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
webapp.template.register_template_library('filterdir.customfilters')
class Manager(webapp.RequestHandler):
def template_print(self, template_file, template_values):
self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
template_file_path = template_file
res = template.render(template_file_path, template_values)
self.response.out.write(res)
class HomePage(Manager):
def get(self):
template_values = {
'hello' : "Hello World!"
}
self.template_print("view.html", template_values)
app = webapp.WSGIApplication(
[('/', HomePage)],
debug=True)
#end of main.py#
</pre>
<br />
customfilters.py should import webapp, have a variable named register and register the filter <br />
<pre class="prettyprint">
<b>customfilters.py</b>
from google.appengine.ext import webapp
register = webapp.template.create_template_register()
@register.filter('addTuring')
def addTuring(element):
return str("Alan Turing says " + (element))
#end of customfilters.py#
</pre>
<pre class="prettyprint"><b>__init__.py is an empty file</b></pre>
<pre class="prettyprint">
<b>base.html</b>
<html>
<body>
{% block content %}
Default Content
{% endblock content %}
</body>
</html>
#end of base.html#
</pre>
<pre class="prettyprint">
<b>view.html</b>
{% extends "base.html" %}
{% block content %}
{{hello|addTuring}}
{% endblock content %}
#end of view.html#
</pre>
<br />
<b>Example Two: Using Django templates from Library Django (django.template) </b><br />
<br />
<pre class="prettyprint">
<b>Directory structure:
</b>appname-root-directory/
-default/
-templates/
-base.html
-view.html
-templatetags/
-customfilters.py
-__init__.py
-__init__.py
-main.py
-app.yaml
-view.html
-base.html
-settings.py
</pre>
app.yaml should mention libraries and load the required version of django. <br />
<pre class="prettyprint">
<b>app.yaml</b>
application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
libraries:
- name: django
version: "1.3"
# end of app.yaml #
</pre>
main.py should load django.template and set os.environ['DJANGO_SETTINGS_MODULE'] to the name of the file which will contain django settings. In this case the string "settings" is used to refer to file settings.py <br />
<pre class="prettyprint">
<b>main.py</b>
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.ext import webapp
from django.template import Template, Context
from django.template.loader import get_template
class Manager(webapp.RequestHandler):
def template_print(self, template_file, template_values):
self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
t=get_template(template_file)
c = Context(template_values)
output = t.render(c)
self.response.out.write(output)
class HomePage(Manager):
def get(self):
template_values = {
'hello' : "Hello World!"
}
self.template_print("view.html", template_values)
app = webapp.WSGIApplication(
[('/', HomePage)],
debug=True)
#end of main.py#
</pre>
settings.py should mention INSTALLED_APPS. The value should include the name of the folder containing the templatetags folder.Blank __init__.py files are required to avoid getting a "No module named" error<br />
<pre class="prettyprint">
<b>settings.py</b>
INSTALLED_APPS = ('default')
#end of settings.py#
</pre>
customfilters.py should import django,and register the filter using djnago.template.Library(). <br />
<pre class="prettyprint">
<b>customfilters.py</b>
from django import template
register = template.Library()
@register.filter('addTuring')
def addTuring(element):
return str("Alan Turing says " + (element))
#end of customfilters.py#</pre>
<pre class="prettyprint"><b>__init__.py are blank files</b></pre>
<pre class="prettyprint"><b>base.html</b>(same in all examples)
<html>
<body>
{% block content %}
Default Content
{% endblock content %}
</body></html>
# end of base.html#
</pre>
view.html is the view/template(which extends a base template in this case. You could paste all the html in view.html with the {{}} tags, to avoid using the extends line. ) In view.html, load the filter library using {% load library_name %, where library_name in our case is customfilters, the name of the .py file containing the filter code.<br />
<pre class="prettyprint"><b>view.html </b>
{% extends "base.html" %}
{% load customfilters %}
{% block content %}
{{hello|addTuring}}
{% endblock content %}
#end of view.html#
</pre>
<br />
There was one other way(a mix of the above two ways), which I tried, which actually made me write this post.<br />
<br />
<b>webapp.template with technique used in Library Django above.</b><br />
<br />
If you go through, the documentation for Django Custom Tags and Filters for 1.3 or the current version of Django or the <a href="http://django096docs.appspot.com/templates_python.html">old Djnago 0.96 Documentation</a> (put up by someone kind, on appspot), they all mention calling {% load filter_or_tag_name %} in the template. However doing that, when you are using webapp.template to call the internal django, does not seem to work. <br />
<br />
<pre class="prettyprint">
TemplateSyntaxError: 'customfilter' is not a valid tag library: Template library customfilter not found, tried google.appengine._internal.django.templatetags.customfilter
</pre>
<br />
A google search of "tried google.appengine._internal.django.templatetags", lead me to <a href="http://code.google.com/p/googleappengine/issues/detail?id=7741">this bug report on code.google.com</a> .<br />
<br />
The bad source code which lead to the error, and a poor solution follow.<br />
<br />
Bad Code:<br />
<br />
Directory Structure mimics the structure of Library Django example above, However, running the app returned TemplateDoesNotExist error<br />
<pre class="prettyprint">
TemplateDoesNotExist: view.html
</pre>
which meant that the application folder "default", was not being detected by
the app, and hence the templates were not found. Appengine's webapp
framework, searches the root of the application for templates unlike
Django which searches applicationname/templates for templates and
applicationname/templatetags for tags and filters. So, view.html and base.html were copied to the root folder too. <br />
<br />
<pre class="prettyprint">
<b>Directory structure:
</b>appname-root-directory/
-default/
-templates/
-base.html
-view.html
-templatetags/
-customfilters.py
-__init__.py
-__init__.py
-main.py
-app.yaml
-view.html
-base.html
-settings.py
-appengine_config.py
<b>-base.html</b>
<b> -view.html </b>
</pre>
<br />
app.yaml:<br />
same as Library Django example<br />
<br />
<pre class="prettyprint"><b>appengine_config.py</b>
webapp_django_version = '1.3'
#end of appengine_onfig.py#
</pre>
<br />
main.py is an amalgamation of different versions. One of them is below. The os.environ line is used to pointto settings.py, but it seems to have no effect.<br />
<pre class="prettyprint">
<b>main.py
</b>
import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
class Manager(webapp.RequestHandler):
def template_print(self, template_file, template_values):
self.response.headers['Content-Type'] = 'text/html; charset=utf-8'
template_file_path = template_file
output = template.render(template_file_path, template_values)
self.response.out.write(output)
class HomePage(Manager):
def get(self):
template_values = {
'hello' : "Hello World!"
}
self.template_print("view.html", template_values)
app = webapp.WSGIApplication(
[('/', HomePage)],
debug=True)
#end of main.py
</pre>
<br />
customfilters.py is like the one from Library Django example above. Both file locations default/templatetags/customfilters.py and default/costumfilters.py( both with settings.py pointing to default ) and customfilters.py in the root folder were tried. <br />
<pre class="prettyprint">
<b>customfilters.py</b>
from django import template
register = template.Library()
@register.filter('addTuring')
def addTuring(element):
return str("Alan Turing says " + (element))
#end of customfilters.py#
</pre>
view.html contains the {% load library_name %} tag, like the Library Django example above
<br />
<pre class="prettyprint">
<b>view.html
</b>
{% extends "base.html" %}
{% load customfilters %}
{% block content %}
{{hello|addTuring}}
{% endblock content %}
# end of view.html #
</pre>
<br />
<b>Explaining the error: </b><br />
TemplateSyntaxError: 'customfilters' is not a valid tag library:<br />
Template library customfilters not found,
tried google.appengine._internal.django.templatetags.customfilters<br />
<br />
On removing the {% load customfilters %} tag from view.html,the error would change to<br />
<br />
<pre class="prettyprint">
TemplateSyntaxError: Invalid filter: 'addTuring'
</pre>
Which is expected. This means<br />
1. The error is because of no load tag in the beginning or<br />
2. The error is beacuse the filter is not registered.<br />
<br />
While developing on appengine with python 2.7, I noticed, that .py files which were used by the server, would get compiled. In this example, main.pyc and appengine_config.pyc files were created. But, the settings.py file and customfilters.py(and its __init__.py file) were not compiled. Perhaps, the files were not being read at all.<br />
<br />
If the files are not read at all, the filter would remain unregistered.<br />
<br />
On reinstating the {% load customfilters %} tag in view.html, the original error returns.<br />
<br />
app.yaml -> asks for django 1.3 from library. and sends control to main.py.<br />
<br />
main.py->imports webapp.template, sets os.environ["DJANGO_SETTINGS_MODULE"]="settings"<br />
<br />
settings.py->sets INSTALLED APPLICATIONS to default, but is apprently not read at all.<br />
<br />
The problem, thus seems to be settings.py having no effect on webapp's internal django version.<br />
<br />
<b>The Fix:</b><br />
<br />
The fix was to use<br />
<br />
1. Use webapp.template to point to the tag/filter folder(filterdir.customfilters like in example one) in main.py <br />
<br />
<pre class="prettyprint">
<b>main.py</b>
...
webapp.template.register_template_library('filterdir.customfilters') <br />
....
</pre>
<br />
2. Remove {% load library_name %} from view.html and place view.html and base.html in the root<br />
<br />
3. Remove os.environ from main.py and remove settings.py.<br />
<br />
4. Keep customfilters.py in a folder named filterdir, like in example one. The contents of customfilters.py is the same as example two.<br />
<br />
This essentially meant using webapp for pointing to the filter/tag file, but registering the filter using the library version of django. <br />
<br />
If the filter were registered using webapp, then the fix would become the same as example one.<br />
<br />
<b>tl;dr:</b><br />
use example two<br />
<br />
Post a comment, if you find errors in the code.<br />
<br />
Sources:<br />
1. <a href="https://docs.djangoproject.com/en/dev/howto/custom-template-tags/">Custom Template Tags and Filters</a><br />
2. <a href="https://developers.google.com/appengine/docs/python/tools/libraries">Third Party libraries in Python 2.5</a><br />
3. <a href="http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html">Using Django Custom Helper Elements </a><br />
4. <a href="http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html">Using Custom Helper Elements in Django - daily.profeth.de</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-6382480819769005776.post-12584808590466348022012-11-07T13:22:00.003-08:002012-11-07T13:31:49.493-08:00AppEngine: Migrating from Python 2.5 to Python 2.7 on Google App Engine in simple stepsI tried moving an old app on Google App Engine from Python 2.5 to Python 2.7. Google Developers has provided a <a href="https://developers.google.com/appengine/docs/python/python25/migrate27">nice writeup</a>, with all the prerequisites. However, being a noob, I found it rather difficult.<br />
<br />
The first problem being, main.app. In Python 2.5, the script is named after the filename. If you have a file called main.py which you want to be called to handle certain urls, you put the script name as main.py, under handlers in app.yaml.<br />
<br />
In the Python 2.7 runtime, app engine wants you to use the dot notation to call the appropriate "WSGI application object". So app.yaml has main.app instaed of main.py. <br />
<br />
<pre>handlers:
- url: /.*
script: main.app
</pre>
<br />
And by main.app, you are referring to the app attribute of main.py file(i.e the module called "main")<br />
<br />
I did not understand this at first, and changed the line in app.yaml to main.app and changed the name of the file main.py to main.app<br />
<br />
<b>ImportError: No module named main </b><br />
<br />
On running the application dev_appserver, I got the following error<br />
<br />
<pre>ERROR wsgi.py:219]
Traceback (most recent call last):
File "wsgi.py", line 196, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "wsgi.py", line 255, in _LoadHandler
handler = __import__(path[0])
<b>ImportError: No module named main
</b> </pre>
<br />
So, I renamed main.app(the incorrectly named file) back to main.py.<br />
<br />
<b>ImportError: module 'main' has no attribute app</b><br />
<br />
I changed the rest of the app as per the instructions on the Migrating to Python 2.7 tutorial. And I ran the app using dev_appserver.py. This time, I got a different error.<br />
<br />
<pre><module appname="appname" from="from" main.py="main.py" main="main">ImportError: <module appname="appname" from="from" main.py="main.py" main="main"> has no attribute app</module></module></pre>
<br />
If you see the old application code below,<br />
<br />
<pre><b>application</b> = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
</pre>
The application object is called <b>application</b> instead of app. So, you could either rename application in main.py to app or refer to main.application in your app.yaml file.
The old and new files are given below.<br />
<br />
<b>Structure of the application. </b><br />
<br />
<pre>appname-root-folder
-main.py
-app.yaml
-...
</pre>
<u><b>Old application</b></u><br />
<br />
<b>app.yaml</b><br />
<br />
<pre>application: appname
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: main.py
</pre>
<br />
<b>main.py</b><br />
<br />
<pre>from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main() </pre>
<br />
<u><b>New application (using webapp)</b></u><br />
<br />
Webapp is deprecated in Python 2.7 under Google App Engine. But, if you want to stick with webapp for some more time, you can do so.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><b>app.yaml</b></span><br />
<br />
<pre>application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.application
</pre>
<br />
<b><span style="font-family: "Courier New",Courier,monospace;">main.py</span></b><br />
<br />
<pre>from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
</pre>
<br />
<u><b>New application (with webapp2)</b></u><br />
<b> </b>
<br />
<span style="font-family: "Courier New",Courier,monospace;">app.yaml</span> remains the same. In main.py, we do not have to import <span style="font-family: "Courier New",Courier,monospace;">run_wsgi_app</span>.<br />
<br />
<b><span style="font-family: "Courier New",Courier,monospace;">app.yaml</span></b><br />
<br />
<pre>application: appname
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.application
</pre>
<br />
main.py
<br />
<pre>import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')
application = webapp2.WSGIApplication(
[('/', MainPage)],
debug=True)
</pre>
<br />
Note:
In the new <span style="font-family: "Courier New",Courier,monospace;">app.yaml</span>, the script is referred to as<br />
<br />
<pre>... </pre>
<pre>handlers:
- url: /.*
script: <b>main.application</b></pre>
<pre>...<b> </b>
</pre>
<br />
Instead of main.application, you can call the script as<span style="font-family: "Courier New",Courier,monospace;"> <b>main.app</b></span> or <span style="font-family: "Courier New",Courier,monospace;"><b>main.whatever</b></span>. Simply use the same name for the application object in your script file. i.e If you use <span style="font-family: "Courier New",Courier,monospace;">main.app</span> in <span style="font-family: "Courier New",Courier,monospace;">app.yaml</span>, change the line in <span style="font-family: "Courier New",Courier,monospace;">main.py </span>accordingly as follows.
<br />
<pre>...
<b>app</b> = webapp2.WSGIApplication(
[('/', MainPage)],
debug=True)
...
</pre>
<br />
<br />
<b>I don't have a <span style="font-family: "Courier New",Courier,monospace;">main.py</span>, where should I make the changes to migrate to Python 2.7?
</b><br />
<br />
Go to your app folder and open the <span style="font-family: "Courier New",Courier,monospace;">app.yaml</span> file. In this, you may already be specifying a file named <span style="font-family: "Courier New",Courier,monospace;">main.py</span> or <span style="font-family: "Courier New",Courier,monospace;">whatever_name.py </span>to handle certain urls.
In Python 2.5, the text in <span style="font-family: "Courier New",Courier,monospace;">app.yaml</span> looked as follows<br />
<br />
<pre>handlers:
- url: /.*
<b>script: main.py
</b></pre>
<br />
If instead of <span style="font-family: "Courier New",Courier,monospace;">main.py</span> you have the following text
<br />
<pre>handlers:
- url: /.*
<b>script: helloworld.py
</b></pre>
<br />
Then you should open the file named helloworld.py and edit it instead.
<br />
Do comment, if you spot errors in the code.<br />
<br />
<b>tl;dr</b><br />
1. Open app.yaml, change as given in <b>New application</b> above <br />
2. Open script file(main.py), change as given in <b>New application</b> above<br />
3. Done!<br />
<br />
<b>Sources:</b><br />
Code adapted from the following sources<br />
1. <a href="https://developers.google.com/appengine/docs/python/gettingstarted/usingwebapp"></a><a href="https://developers.google.com/appengine/docs/python/gettingstarted/usingwebapp">Using the webapp Framework - Google App Engine</a><br />
2. <a href="https://developers.google.com/appengine/docs/python/python25/migrate27">Migrating to Python 2.7 - Google App Engine</a>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-6382480819769005776.post-89639724953902265402012-11-01T13:00:00.000-07:002012-11-01T13:34:43.714-07:00Getting Back Ubuntu after Installing Windows 8So you installed Windows 8 on your system which had a Windows 7 and Ubuntu dual boot working nicely. And now Windows 8 is running well, but you can no longer boot into Ubuntu - the boot menu is missing.<br />
<br />
Well, I did. <a href="http://www.hipatic.com/2012/10/windows-8-on-4-year-old-acer-aspire-aoa.html">I wrote about it too</a>. I remember going through this every time I installed Windows. I always ended up searching "boot repair ubuntu" on google.<br />
<br />
Boot repair according ubuntu.com's <a href="http://recovering%20ubuntu%20after%20installing%20windows/">Recovering Ubuntu After Installing Windows</a> can be done in the following ways<br />
<br />
1. Boot from a Ubuntu Live CD -> Install & run boot-repair -> Click on Recommended Repair and you are done.<br />
2. Use the terminal (after logging into Ubuntu using the Live CD) and run<br />
<span class="anchor" id="line-22" style="background-color: white; border: 0px; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 13px; line-height: 13px; margin: 0px; padding: 0px; vertical-align: baseline;"></span><br />
sudo grub-install /dev/XXX<br />
<br />
where XXX is the name of the disk eg sda or sdb. You can find this out by running the following in a terminal window<br />
<br />
sudo fdisk -l<br />
<br />
3. Using the Alternate CD to get into Rescue Mode, which then lets you run the commands given in point two above.<br />
<br />
<br />
<b>Ubuntu Live CD does not work on some systems:</b><br />
<br />
The problem with boot-repair is that, on some systems, Ubuntu Live CD does not work. In that case you cannot use the usual way of using the Live CD to boot into a usable desktop and the running boot-repair.<br />
<br />
<br />
<b>No Alternate CD from Ubuntu 12.10 onwards:</b><br />
<b><br /></b>
Last time around, I used a 2 gb mmc with the Ubuntu Alternate 11.10 image on it, but since Ubuntu is no longer providing an alternate installation CD, I was at a loss. <br />
<br />
<b>Ubuntu Minimal CD:</b><br />
<br />
<a href="https://help.ubuntu.com/community/Installation/MinimalCD">Ubuntu Minimal CD</a> still exists and provides a way to install Ubuntu from a text based installer by downloading required packages from the web during the installation. The File size is a miniscule 28MB and can be written to a USB drive using Unetbootin or <a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/">YUMI </a>amongst others.<br />
<br />
Cutting to the chase, I booted into Windows 8, downloaded <a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/">YUMI</a> then downloaded <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Ubuntu 12.10 Minimal CD</a> which is only 28 MB in size.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguPxuWkztNxkqdRunQew5XE8LYAby90wMCzW3aeZSJfeykRDFcpdB-oJ8r1uP51rbTY2iTUqUIY01wMWrpKJbzjyFmWWBiiSelB3BplAkG6-Xhgqw-3a2ZOIYBexY2cin1-PAih_GLnBA/s1600/ubuntu01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguPxuWkztNxkqdRunQew5XE8LYAby90wMCzW3aeZSJfeykRDFcpdB-oJ8r1uP51rbTY2iTUqUIY01wMWrpKJbzjyFmWWBiiSelB3BplAkG6-Xhgqw-3a2ZOIYBexY2cin1-PAih_GLnBA/s320/ubuntu01.png" width="320" /></a></div>
<br />
<b>Using YUMI to create a Bootable USB with the Ubuntu Minimal CD iso</b><br />
<br />
1. Select the USB drive letter corresponding to your USB drive. (<i>Be very careful. Incorrect drive letter will cause data loss.</i>)<br />
2. Select "Try an Unlisted ISO" option<br />
3. Browse to the location of the Ubuntu Minimal CD iso.<br />
4. Click create.<br />
<br />
After creation of the usb disk, reboot and boot using the USB drive as your boot device.To do this, press the appropriate key to select boot device, when your computer restarts. In my case, I pressed F12 on boot, which gave me an option to boot from the USB drive.<br />
<br />
<b>Getting back GRUB:</b><br />
<br />
Select the ISO option under YUMI's grub menu and then select the Ubuntu Minimal CD option.<br />
<br />
Ubuntu Minimal CD uses the same text based installer, that the Alternate CD used. On boot, select the "Rescue a broken system" option.<br />
<br />
Setup will continue like a routine Ubuntu installation, but with the words Rescue Mode written on the left top side.<br />
<br />
After selecting Language, Keyboard, Location, PC name, Time, Network Settings and other options, you will be asked to select "Device to use as root file system"<br />
<br />
<b>"Device to use as root file system"</b><br />
Depending upon the complexity of your partitions and number of hard drives, you will see a different set of device names. I saw the following<br />
<br />
<br />
/dev/sda1<br />
<br />
/dev/sda2<br />
<br />
/dev/sda3<br />
<br />
/dev/sda4<br />
<br />
/dev/sda5<br />
<br />
/dev/sda6<br />
<br />
/dev/sdb1<br />
<br />
<br />
You have to select the Ubuntu partition from the list. Knowing which device corresponds to which partition is difficult from this list. So switch to Command Line Mode, by pressing Ctrl+Alt+F2 or F3 or F4 etc Then type in the following command at the command line<br />
<br />
blkid<br />
<br />
You will see a list with device names with ID and TYPE. The Type will indicate what type of file system is being used by the partition. For eg. Windows will be labelled as FAT or NTFS and Ubuntu partitions will be labelled as ext3 or ext4 depending on what format you had used.<br />
<br />
Now switch back to the installation with Ctrl+Alt+F1 (Graphical Installations are at Ctrl+Alt+F7) and continue the setup by choosing the appropriate device. Mine was on /dev/sda5<br />
<br />
<b>Reinstall GRUB</b><br />
<br />
In the next screen select "Reinstall GRUB" option<br />
<br />
After that you will be prompted to Install the GRUB to a location. This is usually the first hard drive's Master Boot Record (MBR). In my case this was /dev/sda. So I typed that in.<br />
<br />
The next screen gives you an option to Reboot the system.<br />
<br />
If everything was right, you should be back to your old dual boot setup, with access to both Ubuntu and Windows 8.<br />
<br />
<b>tl;dr</b><br />
<br />
1. Get <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Ubuntu Minimal CD</a><br />
2. Get <a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/">YUMI</a> and create bootable USB with the minimal iso<br />
3. Boot using the USB drive and enter Rescue Mode<br />
4. Select appropriate root partition - Your Ubuntu partition<br />
5. Select Reinstall Grub to appropriate location - (MBR of first hard disk commonly)<br />
6. Reboot!<br />
<br />
Also, for most sytems in point 1, you can use the Ubuntu desktop iso to create a live cd.<br />
<b><br /></b>
<b>Sources:</b><br />
1. <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Ubuntu Minmal CD</a><br />
2. <a href="http://members.iinet.net/~herman546/How-To-Rescue-a-Broken-System.html">How to Rescue a Broken System</a><br />
3. <a href="http://www.pendrivelinux.com/yumi-multiboot-usb-creator/">YUMI</a><br />
4. <a href="https://lists.ubuntu.com/archives/ubuntu-devel/2012-August/035675.html">Proposal to drop Ubuntu Alternate CD</a><br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-43791851959386718662012-10-31T16:46:00.001-07:002012-11-01T13:18:57.211-07:00Windows 8 on Acer Aspire One AOA 150 - a 4 year old netbook<b>OS: Windows 8 RTM 90 day Evaluation 32bit</b><br />
<br />
<b>PC: Acer Aspire One AOA 150</b><br />
CPU: Atom N270<br />
Graphics: Mobile Intel 945 Graphics Chipset with 256 MB memory<br />
HDD: 500gb 7200rpm SATA(custom)<br />
Screen Resolution: 1024x600<br />
<br />
<b>Installation:</b><br />
Installation was launched from within Windows 8 Release Preview. However, since upgrading from Windows 8 Release Preview to RTM is not supported, a clean installation was done<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0ufxBPvOTZ63cRqxxDmLc1Y8WVRwGyDxrZbyq-e-sjIf0zYALTe9mCSoLBC7n7M0QGx7RSNa9mvrrqQ3C4H4GZBLGDI5r9g_8Qve0PGnIE-sQBXKAT7n7oXGNwWcaDNP-0rn_WkTBFI/s1600/rtm01.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0ufxBPvOTZ63cRqxxDmLc1Y8WVRwGyDxrZbyq-e-sjIf0zYALTe9mCSoLBC7n7M0QGx7RSNa9mvrrqQ3C4H4GZBLGDI5r9g_8Qve0PGnIE-sQBXKAT7n7oXGNwWcaDNP-0rn_WkTBFI/s320/rtm01.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Installing Windows 8 : License Agreement</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDxy-9CcSHtO6aSqiRAFWJI4YGeaVIvyHMp9NafgM-hWzuUjlpbhed-H4FWrkXE_kRymsrj51XMZw4pN3J2lQYPs20WYUjLsSnXRnTI54ICxbq2CUwZDYEswH5uqRg9R2pOFoiynjTAo/s1600/rtm02.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDxy-9CcSHtO6aSqiRAFWJI4YGeaVIvyHMp9NafgM-hWzuUjlpbhed-H4FWrkXE_kRymsrj51XMZw4pN3J2lQYPs20WYUjLsSnXRnTI54ICxbq2CUwZDYEswH5uqRg9R2pOFoiynjTAo/s640/rtm02.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Select Upgrade vs Custom Install</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9xbFBm-45mK3Qs6sP_T6HOg9SQWXZ1yRZ9xdy14fzIGxLi6rpoYklMraVaKQ74ffxLygoKvtZtXuKhASNcBuABD52omGUXtV6ULKa_nLgwVMtY91f6A-xYzNvzy025reVZxLAMMZF55w/s1600/rtm03.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9xbFBm-45mK3Qs6sP_T6HOg9SQWXZ1yRZ9xdy14fzIGxLi6rpoYklMraVaKQ74ffxLygoKvtZtXuKhASNcBuABD52omGUXtV6ULKa_nLgwVMtY91f6A-xYzNvzy025reVZxLAMMZF55w/s320/rtm03.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Select Partition</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2i2CURXxHEHjuQA5PCeMKS-FPNkhK1rthNk315dZOFFQUFI2KKU4Vwn3bqp9uh-ij0B3DMZWC3TQnlKTyBjX-PBtQl2o-8S5I4R0aUtwyeS3xYqEGNutDXVQx_tUZmwAcpYK0FQUBiTQ/s1600/rtm04.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2i2CURXxHEHjuQA5PCeMKS-FPNkhK1rthNk315dZOFFQUFI2KKU4Vwn3bqp9uh-ij0B3DMZWC3TQnlKTyBjX-PBtQl2o-8S5I4R0aUtwyeS3xYqEGNutDXVQx_tUZmwAcpYK0FQUBiTQ/s320/rtm04.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Installation </td></tr>
</tbody></table>
<br />
Windows 8 installation restarts the computer a couple of times. After installing devices, installation prompts you to select express settings vs custom settings. These settings include the new "Do Not Track" feature in Internet Explorer 10, which is enabled by default if you select Express Settings and is shown clearly. It also includes a "Share information with Apps including your name, picture and location" setting. This is to personalize Windows 8 apps and is also enabled by default in the Express Settings. You can choose Custom Settings to set these settings on your own.<br />
<br />
After that, installation asks for a Microsoft ID. This too is optional. If you select a Microsoft ID, your apps are customized accordingly.<br />
<br />
The installation took about 20 minutes on the AOA 150.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuKCim4iYgczbAWKW1ua_rPIdsg9bpobb6NvyD-Hpf05rC7HIS28sNDmkDNrlIFRJ2HrQ5xzLEIxIU96c7lDBwM5D2I2QniW2B14q7p5L7-OnMKwVmt8WqnERTmewHp5eQvKIWia0QD0/s1600/rtm07.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuKCim4iYgczbAWKW1ua_rPIdsg9bpobb6NvyD-Hpf05rC7HIS28sNDmkDNrlIFRJ2HrQ5xzLEIxIU96c7lDBwM5D2I2QniW2B14q7p5L7-OnMKwVmt8WqnERTmewHp5eQvKIWia0QD0/s320/rtm07.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Start Screen at 1024x600 resolution</td></tr>
</tbody></table>
<b>Post installation driver issues:</b><br />
Windows 8 prompted me to install the driver for JMicron SD MMC controller. It provided the link to the driver in question, which I clicked on and downloaded, unzipped and installed.<br />
<br />
There were no issues with Sound, Display, Network Cards - Wifi Adapter or LAN Adapter.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyCTDnYutVLtUqKF8ih1e3L8WreURfSWG57nT9Y7TapXhecLEV36nk74EJB3SqdPvvc_HhtFW13LmHUv0i3Nm4_4hei5YpJyOoAUtk5lUqSO3UA9GRwcgd7LiNDlHrUdsYk4dinYiR1So/s1600/rtm26.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyCTDnYutVLtUqKF8ih1e3L8WreURfSWG57nT9Y7TapXhecLEV36nk74EJB3SqdPvvc_HhtFW13LmHUv0i3Nm4_4hei5YpJyOoAUtk5lUqSO3UA9GRwcgd7LiNDlHrUdsYk4dinYiR1So/s320/rtm26.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Device Manager on Windows 8 </td></tr>
</tbody></table>
<br />
<br />
<b>Fixing Display Resolution for Windows 8 Apps:</b><br />
<i><b>(Registry Editing can be risky and make your computer unusable.)</b></i><br />
The resolution being 1024 x 600, apps did not open at the outset. This was remedied by opening regedit and changing the "Display1_DownScalingSupported" DWORD from the value of 0 to 1.<br />
If you cannot find the DWORD "Display1_DownScalingSupported", try searching for it under the<br />
"HKEY_LOCAL_MACHINE > SYSTEM > ControlSet001 > Control" key.<br />
<br />
A restart was needed for the changes to take effect.<br />
<i>Opening registry can be done by pressing Win+R keys and typing regedit in the run window or by hitting Win key and typing regedit in the search bar.</i><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbqxuZZX7JH_Bl8cSNWs1zRxZCiiwV8klRcugKTvZz6zcxrn4KvYvfDwLXIXiuiuCKzyhx02jsg34B_WfQX7MjxcWr3yFPTEFqznCQbJJZQovY1pqJnPsE1UbzLDh9ZGsO0JiT3F5qrWM/s1600/rtm08.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbqxuZZX7JH_Bl8cSNWs1zRxZCiiwV8klRcugKTvZz6zcxrn4KvYvfDwLXIXiuiuCKzyhx02jsg34B_WfQX7MjxcWr3yFPTEFqznCQbJJZQovY1pqJnPsE1UbzLDh9ZGsO0JiT3F5qrWM/s640/rtm08.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8: Editing Registry to support scaled non native resolutions</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<i><br /></i>
After the restart, change the resolution to 1024x768 or higher. To do this right click on the desktop and click on Screen Resolution.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6pgJtUnU7a1a_f-e70blezFNq_YczYQJBDN_X6CoWMT_qPoIwP79LSDf1NU7awyVBd784mZr3EHgKfpKTHDZWegvHL6HoD9WJFJSDCB-ibTcN6pUI0Fn4irk_9PruOAxEE1CAyM2E1ek/s1600/rtm10.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6pgJtUnU7a1a_f-e70blezFNq_YczYQJBDN_X6CoWMT_qPoIwP79LSDf1NU7awyVBd784mZr3EHgKfpKTHDZWegvHL6HoD9WJFJSDCB-ibTcN6pUI0Fn4irk_9PruOAxEE1CAyM2E1ek/s320/rtm10.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Select Screen Resolution</td></tr>
</tbody></table>
<br />
Then select the resolution of 1024x768 or above and click OK.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYLQct_Fo3grheqm7_4PJ4ExKCiJtb-f3Y_PzQGmk8B5wY0aB5V283ZAaA11a2gX1URaXC81mSIJ8uiasD4vCUU8aGuuQWC3BiLO-FYGujlnjbpzaoYrLN2gxLB_vBc0C3aKArHykwv3c/s1600/rtm09.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYLQct_Fo3grheqm7_4PJ4ExKCiJtb-f3Y_PzQGmk8B5wY0aB5V283ZAaA11a2gX1URaXC81mSIJ8uiasD4vCUU8aGuuQWC3BiLO-FYGujlnjbpzaoYrLN2gxLB_vBc0C3aKArHykwv3c/s320/rtm09.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Changing resolution from 1024x600 to 1024x768</td></tr>
</tbody></table>
<br />
<b>Start Screen on Windows 8</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitb3Q8DS2BXJKU0mKm_hc0y_IGdqT6Z_JAF08G-QDrEukgs3IuwFmqYlHhUQwqWAg3XWW1xWdkfJWQQmllKJnyV9LFIu6J8wUdcaE-TsRBdQ4zXp_mh-u_BUtTsHnSqfISjhgsw7eiaD4/s1600/rtm13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitb3Q8DS2BXJKU0mKm_hc0y_IGdqT6Z_JAF08G-QDrEukgs3IuwFmqYlHhUQwqWAg3XWW1xWdkfJWQQmllKJnyV9LFIu6J8wUdcaE-TsRBdQ4zXp_mh-u_BUtTsHnSqfISjhgsw7eiaD4/s320/rtm13.png" width="320" /></a></div>
Personalizing the Start Screen<br />
Search for "Start Screen". To search just hit Win Key and start typing. Click Settings to see the Start Screen search result<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg56eNYrfdw3fmNf7B3IcV3PDt0Uwt4RdkjngJ2l8kXecEzGBCmfReQ4Xefpbsm94x4FZd6mK9K3mBjjkvyrx3QVgottwOREpnJfPv4dRfvQtgZCYHXyzL51yoKBiEJhHheYi94k5uWvvE/s1600/rtm17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg56eNYrfdw3fmNf7B3IcV3PDt0Uwt4RdkjngJ2l8kXecEzGBCmfReQ4Xefpbsm94x4FZd6mK9K3mBjjkvyrx3QVgottwOREpnJfPv4dRfvQtgZCYHXyzL51yoKBiEJhHheYi94k5uWvvE/s640/rtm17.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8: Searching for "Start screen" under Settings</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4LUo4oPVYEoCrwKdFzXkIUFu7t_XF8MxEb4ciM3RtDqeeQQGnNsS5JG1iU0yaKsPDQI2FHjKAWYOjaahCfjMOCAMtwkQTcvcZHmhXRyki1XomRoQmCC7HGoeFH-e1eY8nzLZjOZVDbLU/s1600/rtm18.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4LUo4oPVYEoCrwKdFzXkIUFu7t_XF8MxEb4ciM3RtDqeeQQGnNsS5JG1iU0yaKsPDQI2FHjKAWYOjaahCfjMOCAMtwkQTcvcZHmhXRyki1XomRoQmCC7HGoeFH-e1eY8nzLZjOZVDbLU/s320/rtm18.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Lock screen personalization</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxoFMf-cP2hymJFGiLpwyMF21WmHRoVvyPhP4h_43sCXGB19gUI-L-B8tO-SkYvRpW8NIk4DfLhHrrBPuVCgAh_XWd0-cRHVkYJTcYbNjIAznBC6MdhnV1K-jH1GZd7hhhU-qzWuAqrU/s1600/rtm19.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxoFMf-cP2hymJFGiLpwyMF21WmHRoVvyPhP4h_43sCXGB19gUI-L-B8tO-SkYvRpW8NIk4DfLhHrrBPuVCgAh_XWd0-cRHVkYJTcYbNjIAznBC6MdhnV1K-jH1GZd7hhhU-qzWuAqrU/s320/rtm19.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Start screen personalization</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCNWkvTDOmV59-0Lp5JmjFAxqSzym0tcomxqRLVUnyRPbX97ChyphenhyphenNjC4uX00NBYYp-jyszGODL4JMCeYbnSs9xumDfcP2HdyK2OWXTKRVXewB6Z3ap50qPCdlayjo_3BWWKuzlKaaueNw/s1600/rtm20.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCNWkvTDOmV59-0Lp5JmjFAxqSzym0tcomxqRLVUnyRPbX97ChyphenhyphenNjC4uX00NBYYp-jyszGODL4JMCeYbnSs9xumDfcP2HdyK2OWXTKRVXewB6Z3ap50qPCdlayjo_3BWWKuzlKaaueNw/s320/rtm20.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Lock Screen apps integration</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Customizing the lock screen has options to integrate data from apps to the Lock screen.<br />
<br />
<b>Windows 8 Apps:</b><br />
I remember the Weather App on Developer Preview being sluggish to the point of being unusable on the Acer Aspire AOA 150 last September. The netbook being antique I found it acceptable. The Developer Preview Weather app would have performed better on present day hardware, I presume.<br />
<br />
<br />
The Weather app on the final Windows 8 just works! There is not a hint of lag, much like the rest of the OS.<br />
<div>
<br /></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkMvZXV_npdR2IYAPactYp8zUHIzCZG12Uz88FbrkdLCLMyetdTMBwe_Ugzan5z2gU-yt7v_qNaEMD1Rcl-WqyJ_G4i2wsMrI5uDm-o0wHQBBIiY60RwGI68vQsAQ_VpU7Li0zRI0XjgM/s1600/rtm14.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkMvZXV_npdR2IYAPactYp8zUHIzCZG12Uz88FbrkdLCLMyetdTMBwe_Ugzan5z2gU-yt7v_qNaEMD1Rcl-WqyJ_G4i2wsMrI5uDm-o0wHQBBIiY60RwGI68vQsAQ_VpU7Li0zRI0XjgM/s640/rtm14.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Weather App</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCtUi1E3k_JxA99efeT-260o7i1T6NEC-KaYFsslTYFvn6ColH-A_fqrWq0sZNcoMbfYQk3OApWoXjrSBkM66aipO4OIzSEiPlFusI170_9bqC6fIq7SYx3307ejgcNhIqzTQ79N9zwc/s1600/rtm15.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqCtUi1E3k_JxA99efeT-260o7i1T6NEC-KaYFsslTYFvn6ColH-A_fqrWq0sZNcoMbfYQk3OApWoXjrSBkM66aipO4OIzSEiPlFusI170_9bqC6fIq7SYx3307ejgcNhIqzTQ79N9zwc/s320/rtm15.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Weather App</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyIxjVsu-DAG9BkyUCbjWYqlC2iile9qBgvCHyuNFMLDmovU6ChJBdBKXxcmyfVacHraTvIXaCzQJh97zppxhXrPGID_Qd_Q936vQZzmYv9X5o-zE3dkM67l0UnNCtTKYJ3u3NjFqAFkg/s1600/rtm16.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyIxjVsu-DAG9BkyUCbjWYqlC2iile9qBgvCHyuNFMLDmovU6ChJBdBKXxcmyfVacHraTvIXaCzQJh97zppxhXrPGID_Qd_Q936vQZzmYv9X5o-zE3dkM67l0UnNCtTKYJ3u3NjFqAFkg/s320/rtm16.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Weather App</td></tr>
</tbody></table>
<br />
<br />
The Bing app is interesting too. Searching with tiles is something that people might find difficult to take to. But the opportunity for change is undeniable.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ecA-RKbX8VVEA-vrx2fD2VFOWeWs9pd5NWNT-Lpw2xQvkWXfbGlL-FzQ042ViB6yXoPWs3EzWxKjvnrVDfHZJwy1B9Hw9lTB2rsPxv2cV4Uyf1bY8XlM_NdqDWnDzw-k9P41KxsPuzk/s1600/rtm21.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ecA-RKbX8VVEA-vrx2fD2VFOWeWs9pd5NWNT-Lpw2xQvkWXfbGlL-FzQ042ViB6yXoPWs3EzWxKjvnrVDfHZJwy1B9Hw9lTB2rsPxv2cV4Uyf1bY8XlM_NdqDWnDzw-k9P41KxsPuzk/s640/rtm21.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 Apps: Bing app with cats</td></tr>
</tbody></table>
<br />
<b>Resolution Hurts:</b><br />
The apps run fine, but the non native resolution which is required hurts your eyes. For a test drive this may be ok, but the Aspire One AOA 150 is not a good candidate to run Windows 8 apps for the resolution reason alone. If you will be using Windows 8 without the apps, then things should be fine.<br />
<br />
<b>Performance of Windows 8 on Aspire One:</b><br />
The user interface is snappy and responsive. Much better than Windows 7 and leagues ahead of the Developer Preview version.<br />
Here are some Task Manager readings.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1tP4MP2j8j1Dcz2f2zoXIGA63RNufsHHXa8M_BtlmjFoGlc7fAfLLssO9qiK5gmUKEP16XBhQCdhVvkT72xT563PHs74TYzkLLDWh2UL3eGwgZRFrfIKIAqhOgSCx3RbbeZTL07DjAQM/s1600/rtm23.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1tP4MP2j8j1Dcz2f2zoXIGA63RNufsHHXa8M_BtlmjFoGlc7fAfLLssO9qiK5gmUKEP16XBhQCdhVvkT72xT563PHs74TYzkLLDWh2UL3eGwgZRFrfIKIAqhOgSCx3RbbeZTL07DjAQM/s320/rtm23.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 memory usage on a system with 1 GB memory</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bz0rLN6ClK1z1jArjP8rKW53GgApFY2u03cphCHMsmgePtMlsjXy7VTLdgNd3xyuEu5kbwIR7sC5HZItJukYW6HosUzd-pcZXbOLiFBTTwJli9OjlA_RHS-tkLSvfiUhvNxt9q_eGJQ/s1600/rtm24.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bz0rLN6ClK1z1jArjP8rKW53GgApFY2u03cphCHMsmgePtMlsjXy7VTLdgNd3xyuEu5kbwIR7sC5HZItJukYW6HosUzd-pcZXbOLiFBTTwJli9OjlA_RHS-tkLSvfiUhvNxt9q_eGJQ/s320/rtm24.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 running processes</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypsvcrutQY486CoPDVdEwhS9BEgqWDO3nXMrxPdB2zz1lO91NUIwB3mJ3pb5e2ubtuDh-CocBP8y-xgM3ezr-BiYs03QhhTXs3-Q88EYwJx4uewXy13QiD5n_PcvdiWR7dLVqNpdKX2c/s1600/rtm25.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="586" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypsvcrutQY486CoPDVdEwhS9BEgqWDO3nXMrxPdB2zz1lO91NUIwB3mJ3pb5e2ubtuDh-CocBP8y-xgM3ezr-BiYs03QhhTXs3-Q88EYwJx4uewXy13QiD5n_PcvdiWR7dLVqNpdKX2c/s640/rtm25.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Windows 8 CPU Usage -Less than 50%</td></tr>
</tbody></table>
<br />
With two browsers running - Chrome and Firefox, CPU Load is pretty low.<br />
<br />
<b>Conclusion:</b><br />
This was not a scientific test.<br />
<br />
Windows 8 performs exceedingly well on a Acer Aspire AOA 150 - a 4 year old hardware with an Atom processor and 1 GB of RAM.<br />
The requirement of a minimum resolution is understandable but it would be great to see elastic or fluid layouts for Windows 8 apps which could accommodate fringe case scenarios such as users on netbooks with a resolution of less than 1024x768.<br />
<br />Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6382480819769005776.post-28976795506576091642012-10-30T16:30:00.000-07:002012-10-30T16:54:57.079-07:00AppEngine : Migrating to High Replication Datastore and retaining old application idLet me begin by saying that, if you have a memorable application id on appengine's *.appspot.com, but the application uses the now deprecated Master Slave Datastore and you would like to move to the new High Replication Datastore, but would like to retain the old application id, then you have no reason to worry. Because, the default migration tool, provided by Google, does exactly that. It migrates your datastore indexes and makes the old application id an alias for the new application id.<br />
<br />
If that is enough to allay your fears, then move on to the <a href="https://developers.google.com/appengine/docs/adminconsole/migration">Migration docs</a> provided by Google. For a step by step, read on.<br />
<br />
<b>Old application id:</b> appname<br />
<br />
<b>New application id with High Replication Datastore:</b> appname-hrd<br />
<br />
<b>Creating a new application with High Replication Datastore:</b><br />
<br />
This can be done in two ways.<br />
<br />
1. Goto <a href="http://appengine.google.com/">http://appengine.google.com</a> and click on create aplication<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgloaao9RRn2CMv7576nJ67JkNrCnQJJ2DPYT9AEh5j97MCwbY9e7HycNYL0r_9bS6cIXg0azb3ESu9MDMEHiBu_0AosHPcZHCVAtudzgZYyhT4hXFNMyoGfkZw1R_vx0Um58yqIII0E-E/s1600/appname01.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgloaao9RRn2CMv7576nJ67JkNrCnQJJ2DPYT9AEh5j97MCwbY9e7HycNYL0r_9bS6cIXg0azb3ESu9MDMEHiBu_0AosHPcZHCVAtudzgZYyhT4hXFNMyoGfkZw1R_vx0Um58yqIII0E-E/s640/appname01.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on Create Application</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cUNsaGT1gzC7xIB5Bnrxw7Kmivv0hikxaku9oT3UQWmQrFbo066yyHzqjDlK3ZX3ldNZZpLfId1gxJI2_LxFtXEHDIzu3DLqSeAjCl-grINY-V7pmjYtew29IM2nZ1Ly2C2ub6mMOKM/s1600/appname02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Fill in the new name, in this case, appname-hrd. Fill in a title, select other options.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz7X4lTGJYDNmM2_D3GoMOQuTQb_vWGqeRVlOZ12BcwWYZOQXKNjDCnjp1FucoCM4XYKpGMuoVUc1WxaAW7SLlGmCbaWSC0V7M7lqYXtjGejwOs6X_ZXv2FWr9hDItnI3nrStgF1khQEI/s1600/appname02.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="372" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz7X4lTGJYDNmM2_D3GoMOQuTQb_vWGqeRVlOZ12BcwWYZOQXKNjDCnjp1FucoCM4XYKpGMuoVUc1WxaAW7SLlGmCbaWSC0V7M7lqYXtjGejwOs6X_ZXv2FWr9hDItnI3nrStgF1khQEI/s640/appname02.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Give a new name to the application</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Make sure you select High Replication Datastore as the datastore.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSKoUxSCMht_5SRGpBUShULVJlFoPtJtshQHAMZ1wanR8sZV3NO5m_26B05qPtsVNQjgdZOfRbJvCWV2nez771AxMRYpatRY38kljil7z3qzWHsJS7yrSO6r_FQ176XYxo6r7agrXh3U/s1600/appname03.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="372" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSKoUxSCMht_5SRGpBUShULVJlFoPtJtshQHAMZ1wanR8sZV3NO5m_26B05qPtsVNQjgdZOfRbJvCWV2nez771AxMRYpatRY38kljil7z3qzWHsJS7yrSO6r_FQ176XYxo6r7agrXh3U/s640/appname03.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Select High Replication and click on Create Application</td></tr>
</tbody></table>
<br />
Then click on Create Application. <br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSlImxwrvELuWQ1RqsToWCi7-F6w458bFyI9RSpg8Vtextna6VSmiUSU4SomI2YRcccYbNwVM1VBGqBFnu8FEILrTGx3zF7NJkt7w5ONOiVAaURKTNA4G2mIikBr1cNfnGjWFcEjKnUYY/s1600/appname03.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
<br />
OR<br />
<br />
2. Go to http://appengine.google.com and click on the name of your old application, in this case appname.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgloaao9RRn2CMv7576nJ67JkNrCnQJJ2DPYT9AEh5j97MCwbY9e7HycNYL0r_9bS6cIXg0azb3ESu9MDMEHiBu_0AosHPcZHCVAtudzgZYyhT4hXFNMyoGfkZw1R_vx0Um58yqIII0E-E/s1600/appname01.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgloaao9RRn2CMv7576nJ67JkNrCnQJJ2DPYT9AEh5j97MCwbY9e7HycNYL0r_9bS6cIXg0azb3ESu9MDMEHiBu_0AosHPcZHCVAtudzgZYyhT4hXFNMyoGfkZw1R_vx0Um58yqIII0E-E/s640/appname01.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on application name</td></tr>
</tbody></table>
<br />
Go to Application Settings<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cmLrXh3YMDxaEe8aoDo4PmUYPP1aJ1MsRl0PSNihdhwxnpjU8SQr4y2odhR5JMzwiT6-IxUFTzG5zcpPZzqso0g2MQhkv8RBUTlkcowItblX3lAyiO0Z22Z14ZUigslT9ihMzzVAFRk/s1600/appname09.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cmLrXh3YMDxaEe8aoDo4PmUYPP1aJ1MsRl0PSNihdhwxnpjU8SQr4y2odhR5JMzwiT6-IxUFTzG5zcpPZzqso0g2MQhkv8RBUTlkcowItblX3lAyiO0Z22Z14ZUigslT9ihMzzVAFRk/s1600/appname09.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on Application Settings</td></tr>
</tbody></table>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvaZDlM-y4Tgnpu5qLKRbxV0Uf4B1V-_NPFF-WnWk5-lEH6DRKm1-HNf7wS4gRtbdxidNMDd2Dk3aI855RdddtEcC9BkXa3Q6MgvW3lUDas5-AIVAMoPsgD_1XxbkfFsnl-qxRQgk-_AI/s1600/appname05.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
Under Duplicate Application Settings, type in the new name, i.e appname-hrd and see if it is available.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8-_X10XgQZQAeayQLV5Pnk0T_GFI2ig2-Qwq9YXIG8CANZ5MFSgiHpQxMre_ucf8LW_82RKE0mDSjoc8k8IKLq735seVjzzqf6-F4ZGJpqUtLswhWkuXhQ19Wp40SX1wgn7q5Gw_jhvI/s1600/appname10.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8-_X10XgQZQAeayQLV5Pnk0T_GFI2ig2-Qwq9YXIG8CANZ5MFSgiHpQxMre_ucf8LW_82RKE0mDSjoc8k8IKLq735seVjzzqf6-F4ZGJpqUtLswhWkuXhQ19Wp40SX1wgn7q5Gw_jhvI/s640/appname10.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Type in a new application name and click on Duplicate Application</td></tr>
</tbody></table>
<br />
If available, click Duplicate Application. This will create an application named appname-hrd with the same title as your old application but with a High replication Datastore.<br />
<br />
If you followed any of the above two methods, you will now see the new application name on the <a href="http://appengine.google.com/">http://appengine.google.com</a> page.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhkidvOQ8LNinj4Rp5cErIhVt5Xolkrw6KUM9JZM7CTGHloQJbt2YYUZdAFodpD6Oxyij-ZYB_-pn52zVhFbLuDArSPQoE1FFfAvVqkkm4Op7kjmvYvGQWc5l_P9JnqT9fhMKOXIBDWA/s1600/appname06.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnhkidvOQ8LNinj4Rp5cErIhVt5Xolkrw6KUM9JZM7CTGHloQJbt2YYUZdAFodpD6Oxyij-ZYB_-pn52zVhFbLuDArSPQoE1FFfAvVqkkm4Op7kjmvYvGQWc5l_P9JnqT9fhMKOXIBDWA/s640/appname06.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Your new application has been created</td></tr>
</tbody></table>
<br />
<b>Pre-requisites before migrating.</b><br />
<br />
You are trying to migrate your app from the old Master-Slave Datastore to the new High Replication Datastore. You have created a new empty application. For the migration to be successfull, you should upload your application code from the old application to the new application id, i.e from appname to appname-hrd<br />
<br />
If you do not have the application code on your computer, you can download it from appengine as follows.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDL8IiXJv9vi04v-nnrrVWGtBpaZhpnVfUCZrrs5uG4kCCA71ro6wBsAbKQYkhJPCqN1_9Ds-4do_LC08FXcF2KSHiQle3WNiTiQlsrya4sm37AdNyYZBAKLqoYib8729lGLukBXDhSuM/s1600/appname05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
Open command prompt(Windows) or terminal(Linux)<br />
cd to the appropriate directory(location of google_appengine_sdk) and run the following command<br />
<br />
<br />
<pre>appcfg.py -A <i>appname</i> download_app <i>/path/to/dir</i>
</pre>
<br />
<br />
appname is the name of the old application from where you are downloading the code. /path/to/dir/ is the path to the folder where you want the code to be saved on your computer.<br />
<br />
If you have the application code on your computer, uploading the code to the new application id is as follows.<br />
<br />
(Before proceeding, backup your application code)<br />
<br />
Open the app.yaml file in your code folder and edit the application name to the new name<br />
<br />
<pre><b>app.yaml</b>
application: appname-hrd
...
...
</pre>
<br />
Save the changes, and then upload the code using the following<br />
<br />
<br class="Apple-interchange-newline" />
<br />
<pre>appcfg.py update <i>/path/to/dir</i>
</pre>
<br />
<br />
<br />
Where /path/to/dir is the path where your new code is saved.<br />
<br />
On completion, your new application-id should now be serving the same app that exists on your old-appication id, although without the datastore. To migrate the datastore, read on.<br />
<br />
<b>Migrate old application datastore to the new application.</b><br />
<br />
Go to <a href="http://appengine.google.com/">http://appengine.google.com</a>. Click on the old application-id i.e appname.<br />
<br />
Then click on Application Settings<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cmLrXh3YMDxaEe8aoDo4PmUYPP1aJ1MsRl0PSNihdhwxnpjU8SQr4y2odhR5JMzwiT6-IxUFTzG5zcpPZzqso0g2MQhkv8RBUTlkcowItblX3lAyiO0Z22Z14ZUigslT9ihMzzVAFRk/s1600/appname09.png" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1cmLrXh3YMDxaEe8aoDo4PmUYPP1aJ1MsRl0PSNihdhwxnpjU8SQr4y2odhR5JMzwiT6-IxUFTzG5zcpPZzqso0g2MQhkv8RBUTlkcowItblX3lAyiO0Z22Z14ZUigslT9ihMzzVAFRk/s1600/appname09.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on Application Settings</td></tr>
</tbody></table>
<br />
Under Migrate Application, click on View Migration Tool.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicGuvGi1DsqE9l7FyEFzGDZ3BgZsZy_S_1JUFwooHaxfARMLYfF-gtr_ugDwYC4UNw_ArYB1nxRrO5lMi_npbngqY1kc7uCgxo4ze8E5egSYXH7xxbgnToch4Epp7GsvTaDPdPV9SEHQ0/s1600/appname08.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicGuvGi1DsqE9l7FyEFzGDZ3BgZsZy_S_1JUFwooHaxfARMLYfF-gtr_ugDwYC4UNw_ArYB1nxRrO5lMi_npbngqY1kc7uCgxo4ze8E5egSYXH7xxbgnToch4Epp7GsvTaDPdPV9SEHQ0/s640/appname08.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on View Migration Tool</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkltilFL64Yivu5RkiqDRIr1TLJ19KGRMr1T_c5JbaFc-XWUO3P8lr3UrLHlny-4bWtTzpbfxF8O3fau4qoNL08V0S7ES-nNyJZxXJmgzsJjo19C6_Cjo72uWjksXBu6-ytTgaLnoj6hI/s1600/appname08.png" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
On the HRD Migration Page, select the new application-id from the drop down menu as the Destination Application<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU6DOeH7o8nJ9kslKnJpinZiUxpc-trdXoiQrtJIX5ke96HhUskKdx-b7RuTuKA7asMJHHqHLbJ5NkVemu0LDDI42iDx838fqtvP2Xu4hRVqYO-vZmbyTOTDl8iQk-Xadzo1jC0Oow71I/s1600/appname11.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU6DOeH7o8nJ9kslKnJpinZiUxpc-trdXoiQrtJIX5ke96HhUskKdx-b7RuTuKA7asMJHHqHLbJ5NkVemu0LDDI42iDx838fqtvP2Xu4hRVqYO-vZmbyTOTDl8iQk-Xadzo1jC0Oow71I/s640/appname11.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Select appname-hrd(new application id) as the Destination Application </td></tr>
</tbody></table>
<br />
And click on Start Migration<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5dTQq918xvDyueOw1BbO4BsqG8Zrl7fdaEYzwTIlQy-FeuDUkueXf3Gj1vI1ue0Hi5E5pzjmXe5VT5t6hnxlQBjbFkIosAlTx06Th75vFxkRlGt-u6janjT-kAS9S1xQKCcsNyB6OC94/s1600/appname12.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="352" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5dTQq918xvDyueOw1BbO4BsqG8Zrl7fdaEYzwTIlQy-FeuDUkueXf3Gj1vI1ue0Hi5E5pzjmXe5VT5t6hnxlQBjbFkIosAlTx06Th75vFxkRlGt-u6janjT-kAS9S1xQKCcsNyB6OC94/s640/appname12.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Starting Migration </td></tr>
</tbody></table>
<br />
The Migration should start and you should see the process status. <br />
<br />
<b>Possible errors:</b><br />
<br />
<b>Error</b>: "Please deploy your application code and index configuration on your target
application before beginning the migration."<br />
<br />
Reason: You haven't uploaded your code to the new application-id. If you did, check the application name in the app.yaml file<br />
<br />
<b>Error</b>: Warning: The application you selected to migrate to already contains data.<br />
You can delete this data using the Datastore Admin tool. Furthermore, you
can proceed anyway by checking the box below.<br />
Reason: Your default app may have created a few entries in the datastore. As long as there is no user generated data that you need to backup, you need not worry. Select Confirm migration to application with existing data and click Start Migration.<br />
<br />
There are some steps in the migration, in which you will have to intervene.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS4YpYCpEoyIouJEWY_lc2RmNWGQT71c2K5Vkb9vx9acFLB2OOd5S6llj1Ng8gvpLN_5bZNhnkF7e3GWFfBLYZlSpRHPveK3zrWb_u_2HgMMVjfgvfuY7K64AVrT7mchD7A13Tw_XN3-o/s1600/appname13.png" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4eiwniC00BppLdR9OTeu3cObbomDIsuAIhyey0JWaKWtiqtBVugXf6ALlxau6EQogRfjekeCnTL_0DdlTC4FSstTVi5FQm_NNpLpBYUO9HDuik_g5IEVA3S_oby6M__BZERRzb3EEPCQ/s1600/appname17.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4eiwniC00BppLdR9OTeu3cObbomDIsuAIhyey0JWaKWtiqtBVugXf6ALlxau6EQogRfjekeCnTL_0DdlTC4FSstTVi5FQm_NNpLpBYUO9HDuik_g5IEVA3S_oby6M__BZERRzb3EEPCQ/s640/appname17.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Activate Read Only</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMtP0tI29kfQMA_m5G0LUAx0kiwB6zvKo0AwZeyoQsVH4nmqcgSMyZqwfBFVv2kaEHCQMCHkwVMpj1x9AFQ67idyqyQQbnpwKUoE-yg5X2r3s6h7XzpNnfMdE6i1vK9QI4vG0BAAxj9n4/s1600/appname14.png" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
<b>Activate read only.</b><br />
You can select Activate Read Only directly or select Launch Incremental Copy first and then Activate Read Only.<br />
According to Google, the Launch Incremental Copy option is beneficial if you have a large amount of data and doing so reduces the amount of time the app has to be in a read only mode.<br />
If you want to cut short your read only time, click Launch Incremental Copy.<br />
<br />
After Launch Incremental Copy, you will see Sync as Running.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
When sync is complete, you can click on Activate Read-only.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4eiwniC00BppLdR9OTeu3cObbomDIsuAIhyey0JWaKWtiqtBVugXf6ALlxau6EQogRfjekeCnTL_0DdlTC4FSstTVi5FQm_NNpLpBYUO9HDuik_g5IEVA3S_oby6M__BZERRzb3EEPCQ/s1600/appname17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
<br />
After Catch up and Sync is complete, you will be prompted for alias assignment<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJeQrYiyuWXTPuN6SrjMoMjaTlP8-zEfHIuEhI1N1rwaw7cYVIYobmYNkr7CiiQ_oKFrzVHUL_Pill78_SJKJh4TLlW_GViwOkrwoxsgP2TxYUoXYZd4roNhxMEr0yVwz8bA6p98GG48/s1600/appname19.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJeQrYiyuWXTPuN6SrjMoMjaTlP8-zEfHIuEhI1N1rwaw7cYVIYobmYNkr7CiiQ_oKFrzVHUL_Pill78_SJKJh4TLlW_GViwOkrwoxsgP2TxYUoXYZd4roNhxMEr0yVwz8bA6p98GG48/s640/appname19.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click on Finish Migration</td></tr>
</tbody></table>
<br />
Click on Finish Migration to assign the alias and complete your migration.<br />
<br />
Now your old application will automatically point to your new application-id, without doing a 301 Redirect.Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-6382480819769005776.post-32972891649026883652012-09-25T06:12:00.002-07:002012-09-28T13:06:37.750-07:00AppEngine: Redirect naked or non-www domain to www domain on App Engine using Google Apps<br />
<b>Problem Statement:</b><br />
<br />
Your appspot domain: example.appspot.com<br />
Your custom domain: www.example.com<br />
non-www/ naked domain: example.com<br />
<br />
How to redirect naked/ non-www version of your custom domain to the www version of the custom domain name?<br />
<br />
<b>Generic Method:</b><br />
Add a 301 Redirect using your DNS provider. For example, if you own a domain at Godaddy, use Godaddy's DNS manager to redirect the non-www version to the www version. Alternatively, Namecheap offers a Free DNS feature for domain names registered with any registrar, which you can use by pointing your DNS servers to Namecheap's free nameservers.<br />
<br />
After that, point @ to your www.example.com, and select URL Redirect(301)<br />
<br />
Step By Step:<br />
<br />
1. Go to Namecheap.com. Select Free DNS from the Products menu.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwWh9jEAiOgkEFQAviox3lf7_krrcRPfeAYa8WLONXUZIBuPBGqJa-Hiw5RT6cTgQfTXeabtvTXb2Y39gjcLj0VeCUJdR3REHqc888ahyphenhyphenvmxQotbpRHCWiTaDWP8OLJc3sin2JX7EgYXE/s1600/freednslt0.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwWh9jEAiOgkEFQAviox3lf7_krrcRPfeAYa8WLONXUZIBuPBGqJa-Hiw5RT6cTgQfTXeabtvTXb2Y39gjcLj0VeCUJdR3REHqc888ahyphenhyphenvmxQotbpRHCWiTaDWP8OLJc3sin2JX7EgYXE/s320/freednslt0.png" width="320" /></a></div>
<br />
You will be asked for the domain name, sign up and point your dns servers as instructed.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM6XQvvq_yLXPZpC_H81aXR1X4qeFAv9y62yoDiY4a3qBRzqPEMl0naESIQzbrrjAia7cYK8nVgTE5yCF7szR5mRfmUV6AuNq340F0bQRSF-lOvTEFTx8Vx3OYZ4t7wovCfVtnDcbEwEo/s1600/freedns0.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM6XQvvq_yLXPZpC_H81aXR1X4qeFAv9y62yoDiY4a3qBRzqPEMl0naESIQzbrrjAia7cYK8nVgTE5yCF7szR5mRfmUV6AuNq340F0bQRSF-lOvTEFTx8Vx3OYZ4t7wovCfVtnDcbEwEo/s320/freedns0.png" width="320" /></a></div>
<br />
2. After you have Free DNS up and running, go to Your FreeDNS under the Products menu and select your domain name<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj73p6aguzAibjJ3JgmzIiL27-DXCTvL6kgvTzoF0aSZCe9hwkmA7K3WbRB-7tW8oYmzAqukWLJ6IYqVsK0_g-0qmxA8oa9yzeGVk_yFd11eSkSs1n1YrBaMvbzTqP_0aH2IKs7xBa21W8/s1600/freedns1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj73p6aguzAibjJ3JgmzIiL27-DXCTvL6kgvTzoF0aSZCe9hwkmA7K3WbRB-7tW8oYmzAqukWLJ6IYqVsK0_g-0qmxA8oa9yzeGVk_yFd11eSkSs1n1YrBaMvbzTqP_0aH2IKs7xBa21W8/s320/freedns1.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg31xZXw4cHCnXPS4-hkYAxkx3mWjTImyVBrnBk0cbab-cbFFmOpq1i56I2lXjeVrf4wISveaXFju6m6-DQfP2hDXkThzwmoxEruEOJyg9RqM3XBIwjuXfaMygMak30sGijiYmN4wj0S5M/s1600/freedns8.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="36" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg31xZXw4cHCnXPS4-hkYAxkx3mWjTImyVBrnBk0cbab-cbFFmOpq1i56I2lXjeVrf4wISveaXFju6m6-DQfP2hDXkThzwmoxEruEOJyg9RqM3XBIwjuXfaMygMak30sGijiYmN4wj0S5M/s320/freedns8.png" width="320" /></a></div>
<br />
In an empty field type and select as follows.<br />
@ www.example.com URL Redirect(301) <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNHBRBooAug_qnTkMikBZICu4zP3dv92MfuN3k_rC4HG6J905Nutjww2EOTPIvsB8KwPn5adY3AC5ZJUTbHZOO-v-6ZWCqcPgIzVvJXGNE12H50fkm5UTx6YDh2ZWd_xUosDaUMzjqwcU/s1600/freedns7.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="39" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNHBRBooAug_qnTkMikBZICu4zP3dv92MfuN3k_rC4HG6J905Nutjww2EOTPIvsB8KwPn5adY3AC5ZJUTbHZOO-v-6ZWCqcPgIzVvJXGNE12H50fkm5UTx6YDh2ZWd_xUosDaUMzjqwcU/s640/freedns7.png" width="640" /></a></div>
In some time, your naked/non-www domain(i.e http://example.com) will start to redirect to www.example.com.<br />
<br />
The following "Google Apps" method is not necessary if you can follow the above method.<br />
Use the Google Apps Method only if: <br />
a. Your DNS service provider does not give you an option to do a 301 Redirect.<br />
b. You do not want to setup a .htaccess/ php/ script based redirect<br />
c. You do not want to change your DNS service provider. <br />
<br />
<br />
<b>Google Apps Method:</b><br />
With the Google Apps method, you can redirect your non-www domain to the www domain by pointing your non-www domain to some Google servers (using A records), which then do the necessary redirection <br />
<br />
Pre-requisites:<br />
<br />
1. Sign up for Google Apps using the domain in question.<br />
Google offers a <a href="https://www.google.com/a/cpanel/standard/new3" target="_blank">free edition of Google Apps</a> which you can use to accomplish this.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig-3_XgEfBdvOjMMctOkaEfCLCdNAZ1uMQ7aPc06om3-GtTesx8pyZlRkMdGcdbT9ZRqBxreE8-sBMAGkMqGq1YayNs8C3sMtAA34CPLzl1VX04fBxRHc4DUfi7ZZ051A2l59-gI9TOLU/s1600/nonwww3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig-3_XgEfBdvOjMMctOkaEfCLCdNAZ1uMQ7aPc06om3-GtTesx8pyZlRkMdGcdbT9ZRqBxreE8-sBMAGkMqGq1YayNs8C3sMtAA34CPLzl1VX04fBxRHc4DUfi7ZZ051A2l59-gI9TOLU/s320/nonwww3.png" width="320" /></a></div>
<br />
<br />
2. Add the domain to your App Engine as a custom domain<br />
If you have you app working on www.example.com instead of example.appspot.com, you have already done this.<br />
<br />
If you have not, then sign in to your <a href="https://appengine.google.com/" target="_blank">app engine </a>account > select your app > Application Settings > Add Domain<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZlxf9O98K0T2yHSnjGCh8f2lzatGy3juGAP4qwYJ7kkIYJpApxZ0o0xVJPP2fNMlKiBtoETniZGpzY8IGZbi78Kzs2zoJek_lsqK5DReK3VwnOwv6bLbaPnaFJYlW2Emd2JAjfoVkSME/s1600/nonwww0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZlxf9O98K0T2yHSnjGCh8f2lzatGy3juGAP4qwYJ7kkIYJpApxZ0o0xVJPP2fNMlKiBtoETniZGpzY8IGZbi78Kzs2zoJek_lsqK5DReK3VwnOwv6bLbaPnaFJYlW2Emd2JAjfoVkSME/s1600/nonwww0.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnVLXYRd4KVy0Rs7WPGCz4EpMj2OZ76dPH0JVcTyloe1OpWmoosPX9QyXoggtD6PSQTAqJfRonwITv3hKKq_rN8Sena_Or1OE3QORXvDFiIxOt6gBepzIpayG3U0JfRetM24yFcpoUBg/s1600/nonwww1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnVLXYRd4KVy0Rs7WPGCz4EpMj2OZ76dPH0JVcTyloe1OpWmoosPX9QyXoggtD6PSQTAqJfRonwITv3hKKq_rN8Sena_Or1OE3QORXvDFiIxOt6gBepzIpayG3U0JfRetM24yFcpoUBg/s640/nonwww1.png" width="640" /></a></div>
<br />
Add your custom domain www.example.com, <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpqYlFJzssoPNAO6MzdLID-y_edPMbZpPEWfu4Hb6LaXHI9bM5UzlsSu_PxXesjA1xhx1d5wWqJeaDqGMEpEN9gTrWiZEcCWgGiOv6jGtOnLimWZOmVxgB8Wcqrbzvp10sseHZTt9hC8/s1600/nonwww7.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpqYlFJzssoPNAO6MzdLID-y_edPMbZpPEWfu4Hb6LaXHI9bM5UzlsSu_PxXesjA1xhx1d5wWqJeaDqGMEpEN9gTrWiZEcCWgGiOv6jGtOnLimWZOmVxgB8Wcqrbzvp10sseHZTt9hC8/s320/nonwww7.png" width="320" /></a></div>
<br />
<br />
You will be asked to sign in to your Google Apps account, where you can accept access to the app.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcdSGomk8EvfFCfb36B4372kemGI-T1MQ75hzZA-gHXik4wdclVul5_RF2Kj8MfRbBJu61F6adLbFhNnWeOP1Cxl8vuC6aOz_4d__D5sp8r3V-9KXEB65khJIC0-uPXvCbBhXp51F4v8c/s1600/nonwww8.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcdSGomk8EvfFCfb36B4372kemGI-T1MQ75hzZA-gHXik4wdclVul5_RF2Kj8MfRbBJu61F6adLbFhNnWeOP1Cxl8vuC6aOz_4d__D5sp8r3V-9KXEB65khJIC0-uPXvCbBhXp51F4v8c/s320/nonwww8.png" width="297" /></a></div>
<br />
Click on Add New URL <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpsU9G2KbfJUWwcg9U-dnJhoNGNOOdyRgO-XGDYyxpO48oFyd3U918ZfyTfLFyd3_Cj8zvO29PH1bDQA1yzVQdPv2HQ1SQvzy1KExl1cnCN04FA9DPmuwqCOwZ1tj1Q4uN3D1RWsyVVdU/s1600/nonwww9.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpsU9G2KbfJUWwcg9U-dnJhoNGNOOdyRgO-XGDYyxpO48oFyd3U918ZfyTfLFyd3_Cj8zvO29PH1bDQA1yzVQdPv2HQ1SQvzy1KExl1cnCN04FA9DPmuwqCOwZ1tj1Q4uN3D1RWsyVVdU/s400/nonwww9.png" width="400" /></a></div>
<br />
Type in "www" without quotes in the field provided and click "Add"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKplpgB4tFw_-6om_DruLg-VBUyyliASiqCVkpZCsuIlrnUL_xnwx3mI0QYnz-oEM6MaJq6P42slXaz-QM2ZIHhI1qhLOEE5TFFuY8pA4C2w_MPXFF0k4BX0LcnTtdsTAdAfQNEnIVXc8/s1600/nonwww10.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKplpgB4tFw_-6om_DruLg-VBUyyliASiqCVkpZCsuIlrnUL_xnwx3mI0QYnz-oEM6MaJq6P42slXaz-QM2ZIHhI1qhLOEE5TFFuY8pA4C2w_MPXFF0k4BX0LcnTtdsTAdAfQNEnIVXc8/s640/nonwww10.png" width="640" /></a></div>
The next page will give a step by step procedure of creating a CNAME which points "www" to "ghs.googlehosted.com". Click "I've completed these steps" after you are done.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6yB_w2sbz80KDCU44uKZ_4UItfwaZJPnXgjOBd9LhmWUXi4vrHmuaFLHaIH4-Dydn9tGpisrzQD4nDf15DRUqpTmoEtyI2uR0fgq1Am8X7DCfCBOTpPmwe0kBWOT_zgZynG00mNK3abU/s1600/nonwww11.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6yB_w2sbz80KDCU44uKZ_4UItfwaZJPnXgjOBd9LhmWUXi4vrHmuaFLHaIH4-Dydn9tGpisrzQD4nDf15DRUqpTmoEtyI2uR0fgq1Am8X7DCfCBOTpPmwe0kBWOT_zgZynG00mNK3abU/s400/nonwww11.png" width="400" /></a></div>
<br />
Going back to our Namecheap example, the DNS settings should look like this<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnB8bQBdnyHcHabP5XPdRGusGLXW7SA-fH30ERlVcU0zEJusWfgaFkjetzzgUCsxGP6hOvA97CaHDdy8ibWOtJCO4aKT-9nzpZUogmSSZDSVYNXncEYpl09e8ivcyU8YszjF_KflIG7hY/s1600/nonwww14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnB8bQBdnyHcHabP5XPdRGusGLXW7SA-fH30ERlVcU0zEJusWfgaFkjetzzgUCsxGP6hOvA97CaHDdy8ibWOtJCO4aKT-9nzpZUogmSSZDSVYNXncEYpl09e8ivcyU8YszjF_KflIG7hY/s640/nonwww14.png" width="640" /></a></div>
<br />
On completion, you will be greeted by the following<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3j9zFJhURQBtt6NjVdWauFF3oKjcJ_JaOihvr9Ik8VJ9awPHMucpi13FWp8flrhrRganE7npxOyPN_hWcg2jScffwmuOMxeBiOzyxqnPhiiVVWZ5kMynZcP86BsBEPzd9CeWtwFRUXA/s1600/nonwww9_f.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="379" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3j9zFJhURQBtt6NjVdWauFF3oKjcJ_JaOihvr9Ik8VJ9awPHMucpi13FWp8flrhrRganE7npxOyPN_hWcg2jScffwmuOMxeBiOzyxqnPhiiVVWZ5kMynZcP86BsBEPzd9CeWtwFRUXA/s640/nonwww9_f.png" width="640" /></a></div>
<br />
<br />
3. Now Log in to your Google Apps account at <a href="http://google.com/a">google.com/a</a> > select Sign in> Enter your domain name "example.com" & Select Domain Management from the drop down menu and click Go.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3j9zFJhURQBtt6NjVdWauFF3oKjcJ_JaOihvr9Ik8VJ9awPHMucpi13FWp8flrhrRganE7npxOyPN_hWcg2jScffwmuOMxeBiOzyxqnPhiiVVWZ5kMynZcP86BsBEPzd9CeWtwFRUXA/s1600/nonwww9_f.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhONKR7DC4DWHAD-VsfU8cKafiB-ycOWucduzBCqOKH4EnkQHLhJbeAWWWiMUXrAz3uOu3GjhSDMVME6THdl-JL4Bzr6HLAfnBSdmYyb2M7ubkDACnH1VQcPQLY-FzxBVXWUPG1g57o8GE/s1600/nowwww12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhONKR7DC4DWHAD-VsfU8cKafiB-ycOWucduzBCqOKH4EnkQHLhJbeAWWWiMUXrAz3uOu3GjhSDMVME6THdl-JL4Bzr6HLAfnBSdmYyb2M7ubkDACnH1VQcPQLY-FzxBVXWUPG1g57o8GE/s640/nowwww12.png" width="640" /></a></div>
<br />
<br />
Go to Domain Settings > Domain Names and Create a redirect<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJvPEn_yZAiF_kWzRpjT-tSqRHlommYiy0nmq_-eAanz4zazQQ3SRsC5ote2cd2oWiKdh87Ut3qapn2lv6pflXfbV2sl9sm2Luvz5YPR_9My1PdQOomyTGIMn5S_ZQNw3qWR_m4b3gwC0/s1600/freedns4.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJvPEn_yZAiF_kWzRpjT-tSqRHlommYiy0nmq_-eAanz4zazQQ3SRsC5ote2cd2oWiKdh87Ut3qapn2lv6pflXfbV2sl9sm2Luvz5YPR_9My1PdQOomyTGIMn5S_ZQNw3qWR_m4b3gwC0/s640/freedns4.png" width="640" /></a></div>
<br />
<br />
In the following screen , enter "www" in the field provided and click "Continue"<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK0QnRjBr8M8cX7obcPVCbRyns4BPIvyLYBaPAqwz55D8vl5uo1HROtzXTDOxE6Hri4fBJB1HYo3mnPgiqSoKktgy3KFQRC8R7E_IoSG2o2RKQre80dG44_Fi0oHBsqVNUEmSxkfQmXBA/s1600/freedns5.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK0QnRjBr8M8cX7obcPVCbRyns4BPIvyLYBaPAqwz55D8vl5uo1HROtzXTDOxE6Hri4fBJB1HYo3mnPgiqSoKktgy3KFQRC8R7E_IoSG2o2RKQre80dG44_Fi0oHBsqVNUEmSxkfQmXBA/s640/freedns5.png" width="640" /></a></div>
<br />
The next page will give you the directions to create the required redirect.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3uzHL2IJqH3Uy7mci2kbNYBiiNv0xIUMUA7EM9_uZuE-kKMpMtMkBEPlg-BA7VwrMxwtSmFEBRYXUuTD3fe8uh00-H9GdsHHeGJMF-AZPvhRM9gZGBqLjp3EKw7HJAmfW0tKJfwJEpr4/s1600/freedns6.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3uzHL2IJqH3Uy7mci2kbNYBiiNv0xIUMUA7EM9_uZuE-kKMpMtMkBEPlg-BA7VwrMxwtSmFEBRYXUuTD3fe8uh00-H9GdsHHeGJMF-AZPvhRM9gZGBqLjp3EKw7HJAmfW0tKJfwJEpr4/s320/freedns6.png" width="320" /></a></div>
<br />
Go to your DNS provider and create four(4) A records pointing your naked domain (i.e example.com) to the following Google servers<br />
216.239.32.21<br />
216.239.34.21<br />
216.239.36.21<br />
216.239.38.21<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4vt0Oe_6CK8tp8o5SkUjZisYF7ptD042lO_FOIpx0sSd8aOMc5EH_wxWTfgFlVeNzxSfUmr6lB49lyXB-VKK4q5UQFSXktMARkerUfzi0zDEJRTO7KzW3_8gdQkQIrdJbJVocF8g-K_0/s1600/nonwww13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4vt0Oe_6CK8tp8o5SkUjZisYF7ptD042lO_FOIpx0sSd8aOMc5EH_wxWTfgFlVeNzxSfUmr6lB49lyXB-VKK4q5UQFSXktMARkerUfzi0zDEJRTO7KzW3_8gdQkQIrdJbJVocF8g-K_0/s640/nonwww13.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH5IYT94cWzoozDREpYsCV9iIpKFNzqDPc6UlWbTggS8N0GSzUsSdnaI_NNeoQlcqjdM0iNZGTKECRtgXGo3gsZ1WHPCKLWrpax79MuB_ROg4bt-RJb53xTKwB7b7TLHHd-Gj_eWUxMJM/s1600/freedns2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
In some time, depending upon your DNS service provider, your redirect will start working.<br />
<br />
<b>How to check whether a 301 redirect is working?</b><br />
<br />
A 301 redirect is important for your domain name's serach rankings. So how do you check whether the redirect is working as intended.<br />
First check whether http://example.com goes to www.example.com.<br />
<br />
Then, using Firefox, Install the<a href="https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/" target="_blank"> Live HTTP Headers</a> add on, After the add on is installed and firefox has been restarted, go to Tools>Live HTTP Headers, then in the main firefox window type in "http://example.com" in the address bar(without quotes).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAttxBanU-gA2hhZG2VS_rntIDGiNnPnv-W-i58E_c_rRjzL7zGju2VtgjjMzxuYTeHyihFxCNzp5P8sW1ifx5HrtUpIG17EcAK9wRY6VEkS4I7e4OJKQ-t9JX2hPeGBj_3oC9di2lfhU/s1600/livehttp2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAttxBanU-gA2hhZG2VS_rntIDGiNnPnv-W-i58E_c_rRjzL7zGju2VtgjjMzxuYTeHyihFxCNzp5P8sW1ifx5HrtUpIG17EcAK9wRY6VEkS4I7e4OJKQ-t9JX2hPeGBj_3oC9di2lfhU/s320/livehttp2.png" width="320" /></a></div>
<br />
The Live HTTP Headers window will show the headers for the session, which will be as below<br />
<br />
<pre>http://example.com/
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
<b>HTTP/1.1 301 Moved Permanently</b>
<b>Location: http://www.example.com/</b>
Date: Tue, 25 Sep 2012 11:43:22 GMT
Content-Type: text/html; charset=UTF-8
<b>Server: ghs</b>
Content-Length: 223
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
----------------------------------------------------------
http://www.example.com/
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
</pre>
In the above log, one can see how the browser first requests for http://example.com and gets a reply that says<br />
<pre><b> </b></pre>
<pre><b>HTTP/1.1 301 Moved Permanently</b>
<b>Location: http://www.example.com/</b>
</pre>
<br />
The browser now makes a GET request for http://www.example.com and is greeted by a 200 OK status!<br />
<pre> </pre>
<pre><b>HTTP/1.1 200 OK
</b></pre>
<br />
<br />
Digressing a little bit, also note the server name,<br />
<pre><b> </b></pre>
<pre><b>Server: ghs</b></pre>
<br />
If you had used the first method(Namecheap FreeDNS + URL Redirect 301), the server name would have been different. I tried it out and got the result as<br />
<br />
<pre><b>Server: nginx</b></pre>
<br />
<br />
Nginx is an open source HTTP Server. I do not know what ghs stands for, but it could mean google hosted server. The server name can be changed, so it is not of much importance.<br />
<br />
<b>tl;dr</b><br />
If you want to redirect non-www domain to www, i.e example.com to example.com, use a 301 URL Redirect.<br />
If your DNS does not have that option, switch to one that does(like Namecheap)<br />
If you do not wish to switch DNS, use Google Apps "Change Redirect " option under Domain Settings>Domain Name<br />
<br />
Post a comment if you have doubts or spot mistakes in the post.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-54998194664615968272012-08-30T10:04:00.001-07:002012-09-04T00:21:15.765-07:00Chinese Android Debugging: How to use a Unbranded Android Device for Application Testing on Ubuntu with Eclipsedeveloper.android.com has a nice writeup on how to setup a hardware android device for application testing on the <a href="http://developer.android.com/tools/device.html" target="_blank">Using Hardware Devices</a> page. It also gives a list of USB Vendor IDs, which are required to setup your hardware device. But the list of vendors may not include your Chinese / Unbranded android phone or tablet.<br />
<br />
For eg. The vendor ID of a NATPC/MID tablet is apparently not on the list of vendor ids which includes the likes of HTC, Asus, Google,Foxconn, etc. <br />
<br />
In such a case, these are the errors you may get:<br />
<br />
On selecting Run app in Eclipse, you are greeted with a prompt asking you to select an Android Device. However the list of Android devices shows a Android Device with Serial Number as "??????????" i.e a series of question marks and same for the state of the device. Additionally, this device is not selectable.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF3arIJURnXSfifR76I6jlhUf0GChCRrAOiSXSrF5XUTFRYkPwWm0JJXt-ZwwUaZio2iVzEs1fZ7pf3VZ2rP_Seb4HmR9MSPuuUQBwG8YR8R_J5j4aZoUT5pirWO_adeiV0KKnbws2dSQ/s1600/eclipse-android-application-launch-device-select-prompt-error.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF3arIJURnXSfifR76I6jlhUf0GChCRrAOiSXSrF5XUTFRYkPwWm0JJXt-ZwwUaZio2iVzEs1fZ7pf3VZ2rP_Seb4HmR9MSPuuUQBwG8YR8R_J5j4aZoUT5pirWO_adeiV0KKnbws2dSQ/s320/eclipse-android-application-launch-device-select-prompt-error.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Eclipse: Prompt showing unrecognised android device</td></tr>
</tbody></table>
<br />
Open Terminal and cd into your android-sdk/platform-tools folder and run adb (Android Debug Bridge)<br />
<span style="font-family: "Courier New",Courier,monospace;">android-sdk/platform-tools$ ./adb devices<br />* daemon not running. starting it now on port 5037 *<br />* daemon started successfully *<br />List of devices attached <br />???????????? no permissions</span><br />
<br />
This is because the Vendor ID is not recognised by adb. Which is because we could not specify a Vendor ID, as the same is not available to us. <br />
<br />
<br />
Here are the steps to setup your Unbranded Android device for application testing.<br />
<br />
1. USB Debugging: Go to the settings on your android device and turn on USB debugging.<br />
<br />
2. Connect your android device via USB.<br />
<br />
3. Open a terminal and run lsusb<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$lsusb</span><br />
<span style="font-family: "Courier New",Courier,monospace;">Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />Bus 001 Device 002: ID <b>18d1</b>:0003 Google Inc. </span><br />
<br />
In the case of the Chinese device that I used, this was what lsusb returned. The last line of the above result shows a device labelled Google Inc. The Vendor ID is (see bold) <span style="font-family: "Courier New",Courier,monospace;"><b>18d1</b></span><br />
<br />
<i><a href="http://linuxcommand.org/man_pages/lsusb8.html" target="_blank">lsusb</a> gives you a list of USB buses and the devices attached to your computer via USB.</i><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: inherit;">Apparently, the Chinese device I used, makes itself appear as a device by Google</span><b> </b></span>Inc and uses the same Google Vendor ID. Your device may have a different Vendor & Vendor ID , but using lsusb you can easily access the same.<br />
<br />
4. With root privileges, create a xx-android.rules file at /etc/udev/rules.d where xx is a number.<br />
<br />
for eg. I created a file called <span style="font-family: "Courier New",Courier,monospace;">51-android.rules</span> with the following content<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">SUBSYSTEM=="usb", ATTR{idVendor}=="<b>18d1</b>", MODE="0666", GROUP="plugdev" </span><br />
<br />
<br />
(Instructions given in <a href="http://developer.android.com/tools/device.html" target="_blank">Using Hardware Devices</a>)<br />
<br />
The device id in this case is in bold (<span style="font-family: "Courier New",Courier,monospace;"><b>18d1)</b></span> and is all that you have to change.<br />
<br />
<br />
<i>The /etc/udev/rules.d/ folder contains custom rules that are read by udev.</i><br />
<i>If it is the only rules file you create for your android devices, the name of the rules file will not matter. The number is used for order of preference. (More info: <a href="http://dell9.ma.utexas.edu/cgi-bin/man-cgi?udev+7" target="_blank">udev</a> , the <span style="font-family: "Courier New",Courier,monospace;">README</span> file in the <span style="font-family: "Courier New",Courier,monospace;">/etc/udev/rules.d/</span> folder)</i><br />
<br />
<br />
5. Reboot<br />
<br />
Now when you run<span style="font-family: "Courier New",Courier,monospace;"> ./adb devices</span> from terminal you will get the serial number and Vendor of your device.<br />
<br />
cd into your <span style="font-family: "Courier New",Courier,monospace;">android-sdk/platform-tools</span> folder and run <span style="font-family: "Courier New",Courier,monospace;">./adb devices </span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">android-sdk/platform-tools/$ ./adb devices</span><br />
<span style="font-family: "Courier New",Courier,monospace;">List of devices attached <br /><b>12345678 device</b></span><br />
<br />
Eclipse will also recognize the device and you can select your device to test run your android application.<br />
<br />
<b>tl;dr:</b><br />
<br />
If you do not know the Vendor ID of your android device, which is needed for the 51-android.rules file and your device vendor is not on the Vendor ID list on the Android Developers website, run <span style="font-family: "Courier New",Courier,monospace;"><b>lsusb</b></span> from Terminal to get a list of devices with vendor ids attached via usb and use this id in your rules file.<br />
<br />
Sources & Further Reading:<br />
1. <a href="http://developer.android.com/tools/device.html" target="_blank">Android Developer: Using Hardware Devices</a><br />
2. <a href="http://linuxcommand.org/man_pages/lsusb8.html" target="_blank">lsusb</a><br />
3. <a href="http://dell9.ma.utexas.edu/cgi-bin/man-cgi?udev+7" target="_blank">udev </a><br />
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-6382480819769005776.post-91748996095385722932012-08-30T02:52:00.002-07:002012-09-04T00:15:18.149-07:00CS50: "undefined reference to `GetString' " and other errorsI was going through the CS50 lectures of Fall 2011. CS50 recommends using the <a href="https://manual.cs50.net/Appliance" target="_blank">CS50 Appliance</a> which is a VirtualBox installation of Fedora with libraries and software needed for the CS50 course. However, if you are already running a flavour of Linux (Ubuntu 12.04 in the case of this article) and want to do the examples natively, read on.<br />
<br />
On Linux, the CS50 manual gives instructions on how to install the CS50 Library for C for Linux (<a href="https://manual.cs50.net/Library#CentOS.2C_Fedora.2C_RedHat" target="_blank">Fedora </a>/ <a href="https://manual.cs50.net/Library#Debian.2C_Ubuntu" target="_blank">Ubuntu</a>). <br />
<br />
After installing the CS50 Library for C, I tried running some samples. While making pointers.c in the Week 5 lecture, I came across this error<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$make pointers</span><br />
<span style="font-family: "Courier New",Courier,monospace;">cc pointers.c -o pointers<br />pointers.c: In function ‘main’:<br />pointers.c:27:5: error: ‘for’ loop initial declarations are only allowed in C99 mode<br />pointers.c:27:5: note: use option -std=c99 or -std=gnu99 to compile your code<br />make: *** [pointers] Error 1</span><br />
<br />
If instead of using make, you use <span style="font-family: "Courier New",Courier,monospace;">gcc pointers</span>.c <span style="font-family: inherit;">you will get a similar error. To correct this, I ran</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$gcc pointers.c -std=c99 </span><br />
<br />
and got the following error<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">/tmp/cckKXdXr.o: In function `main':<br />pointers.c:(.text+0xb): undefined reference to `GetString'<br />collect2: ld returned 1 exit status</span><br />
<br />
Doing a Google search for <a href="https://www.google.com/search?q=getstring+cs50+undefined" target="_blank">"getstring cs50 undefined"</a> gives a link to <a href="http://cdn.cs50.net/2010/fall/lectures/1/week1w.txt" target="_blank">2010's Week1 lecture transcript</a> where David Malan says<br />
<blockquote class="tr_bq">
It can't find GetString right?...Someone else wrote GetString namely CS50. I have included it using the cs50.h but that only gives me access in the source code to actually using it by name. The bits, the zeros and ones that compose the library are actually in that file called cs50.c but those bits live or--even that's a white lie. They technically live in a file, as we'll eventually see called cs50.o....So it turns out that there's a two-step process. When you want to use a library like CS50's, you can't just run GCC on your program. You also have to tell the compiler at the very end of your command--you know what, let me use the library with the so called switch/l so that's an L not a 1. So a dash lowercase L and then what library?...so you'll have to explicitly say dash L CS50. Why is there no space? Stupid convention...So now let's hit Enter.</blockquote>
So, I ran the following<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$gcc pointers.c -std=c99 -lcs50</span><br />
<br />
And the program compiled.<br />
<br />
However, there are some inefficiencies still, for example the above code will give you the output as a.out. If you want to specify a name for the binary, you can use the -o switch, as in below.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$gcc pointers.c -std=c99 -lcs50 -opointers</span><br />
<br />
A look at the video lecture however will tell you that the make on the CS50 Appliance also uses additional switches. A screen capture is shown below<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd5ZqM3h-Hk1pIk5jjS1dCSi6j7YHfgTaVIDIzA5RQgYe_buZnTJdSXutMpIWRKAdQMkXfurIunHAmxJ1lKo86McX50tPvq93DNg1Am52c5BC0H8MUEI9Q2x8yVKy5LiM7U4FEIag8IgM/s1600/vlcsnap-2012-08-30-14h30m21s174.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd5ZqM3h-Hk1pIk5jjS1dCSi6j7YHfgTaVIDIzA5RQgYe_buZnTJdSXutMpIWRKAdQMkXfurIunHAmxJ1lKo86McX50tPvq93DNg1Am52c5BC0H8MUEI9Q2x8yVKy5LiM7U4FEIag8IgM/s320/vlcsnap-2012-08-30-14h30m21s174.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A screen capture from CS50 Fall 2011 Lecture series Week 5, Monday</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2LXhhV1HTpn7Ip5IR4pl9g9mPBRu2z8iyK1CJdTYEfDkYR3_05BuFF9pqk1lCmqIcHKOOnPRNWTBOcznZsFaXL1hz5LjtHiimI0jX3djJyAlHeNJXU9Xqq8v6c_RZIo8YSzNhfOQiPc/s1600/cs50_week12_gcc_make.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2LXhhV1HTpn7Ip5IR4pl9g9mPBRu2z8iyK1CJdTYEfDkYR3_05BuFF9pqk1lCmqIcHKOOnPRNWTBOcznZsFaXL1hz5LjtHiimI0jX3djJyAlHeNJXU9Xqq8v6c_RZIo8YSzNhfOQiPc/s320/cs50_week12_gcc_make.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Screencap from the Final lecture of CS50 in Fall 2011 showing gcc switches that make uses</td></tr>
</tbody></table>
<br />
<br />
So future proofing for CS50 2011 Fall Lecture series, let us add the other switches as well.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">$gcc -ggdb -std=c99 -Wall -Werror <b>pointers</b>.c -lcrypt -lcs50 -lm -o<b> pointers</b></span><br />
<br />
(In the above text replace pointers with the name of the current .c file in the two places.)<br />
<br />
(CS50 is a introductory course at Harvard aimed at beginners and is available for free under a CC BY-NC-SA 3.0 license)<br />
<br />
Sources & Further Reading:<br />
1. <a href="http://cs50.tv/" target="_blank">CS50 OpenCourseWare</a><br />
2. <a href="http://cs50.tv/2011/fall/" target="_blank">CS50 Fall 2011 Lectures</a><br />
3. <a href="https://manual.cs50.net/Library#Debian.2C_Ubuntu" target="_blank">CS50 Manual : Library</a><br />
4. <a href="http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html" target="_blank">GCC</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-6382480819769005776.post-28892636649311244622012-05-31T08:30:00.004-07:002012-08-30T02:54:34.608-07:00Slashdot Mobile Dying?The minimal "palm" mobile version of Slashdot[http://slashdot.org/palm] stopped getting new stories on the 29th of May 2012. The latest story posted was "TomTom Flames OpenStreetMaps".<br />
<br />
Hopefully, this is a temporary issue.<br />
<br />
(Update: The text only version is back up!)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-3174858969606306112011-11-14T08:38:00.001-08:002011-11-22T01:47:16.255-08:00Tablets compared! Kindle Fire, Nook Tablet, ASUS Eee Pad Transformer , Acer Iconia Tab, Samsung Galaxy Tab and Apple iPad<b><span style="font-size: large;">Kindle Fire:</span></b><br />
<a href="http://www.amazon.com/gp/product/B0051VVOB2/ref=as_li_ss_il?ie=UTF8&tag=hipatic-20&linkCode=as2&camp=217145&creative=399373&creativeASIN=B0051VVOB2"><img border="0" class=" aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue" height="200" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=B0051VVOB2&MarketPlace=US&ID=AsinImage&WS=1&tag=hipatic-20&ServiceVersion=20070822" width="200" /></a><img alt="" border="0" class=" aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue aiqtufskyrzcwbnushue" height="1" src="http://www.assoc-amazon.com/e/ir?t=hipatic-20&l=as2&o=1&a=B0051VVOB2&camp=217145&creative=399373" style="border: none !important; margin: 0px !important;" width="1" />
<br />
<blockquote class="tr_bq">
Kindle Fire is to movies and rich media, what Kindle was to ebooks.
</blockquote>
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Kindle Fire</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>199 USD</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>190 mm x 120 mm x 11.4 mm (7.5" x 4.7" x 0.45") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>413 g (14.6oz)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 7" IPS multi-touch display.<br />
Resolution: 1024x600<br />
169dpi
</td>
</tr>
<tr>
<td>Storage</td>
<td>8GB fixed</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>TI OMAP 4 4430 (dual core)</td>
</tr>
<tr>
<td>RAM</td>
<td>512 MB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>7.5-8hrs. (7.5hrs of video playback or 8hrs of reading.)</td>
</tr>
<tr>
<td>OS</td>
<td>Android 2.3 (Customized)</td>
</tr>
<tr class="alt">
<td>Connectivity</td>
<td>1.Wifi (No adhoc connection support)<br />
2.USB
</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>1.Amazon App Market
2.Amazon Silk Web Browser
</td>
</tr>
</tbody></table>
</div>
Kindle Fire is ready to be released for the holidays. Priced at less than 60 percent of the iPad and based on Google's Android operating system, the Kindle Fire is not a Kindle - the easy on the eye, e-ink based, month long battery wielding e-book reader. However, Kindle Fire is to movies and rich media, what Kindle was to ebooks.
<br />
<br />
<b>Upside: </b><br />
<b>Price: </b>Cheapest "mainstream" tablet (not counting fire-sale prices)<br />
<br />
<b>Downside:</b><br />
<b>Limited Storage:</b> 8GB(6GB usable) storage may not be enough. Higher storage versions are not available at present.This may be to coax users to buy content from Amazon which gets stored for free on the cloud.<br />
<br />
<b>No Camera, GPS:</b> No camera or GPS in this release, Kindle Fire 2 might have them next year.
<br />
<b>Other points:</b><br />
<b>No Android Marketplace:</b> Only apps whetted by Amazon's Kindle App Store/Market will be available. This may be a downer for both developer and consumer. However, this could prove beneficial for Amazon and offer better app-compatibility for users.Apps can <br />
<b>Custom Android OS:</b> Kindle Fire is based on the Gingerbread Android OS. However it does not include Google's proprietary apps and does not support the Android Market. Android OS upgrades provided by Google may also not work and the Kindle Fire may have it's own upgrade schedule.<br />
<br />
<span style="font-size: large;"><b>Nook Tablet:</b></span><br />
<blockquote class="tr_bq">
Nook wins over the Kindle Fire in storage, offering a possible 48GB (16+32) of offline storage to Kindle Fire's 8GB. </blockquote>
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Barnes & Noble Nook Tablet</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>249 USD</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>206 mm x 127 mm x 12 mm (8.1" x 5" x 0.48") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>399g(14.1oz)(0.88 lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 7" IPS capacitative multi-touch display.<br />
Resolution: 1024x600<br />
169dpi
</td>
</tr>
<tr>
<td>Storage</td>
<td>16GB. upgradeable with microSDHC slot </td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1GHz TI OMAP4 (dual-core) processor</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>11.5hrs reading, 9 hrs video playback</td>
</tr>
<tr>
<td>OS</td>
<td>Customized Android 2.3 (Gingerbread)</td>
</tr>
<tr class="alt">
<td>Connectivity</td>
<td>1.microSDHC Slot<br />
2.Wi-Fi 802.11b/g/n(2.4GHz only)<br />
3. Microphone</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>Barnes & Noble App Market</td>
</tr>
</tbody></table>
</div>
<br />
Nook wins over the Kindle Fire in storage, offering a possible 48GB (16+32) of offline storage to Kindle Fire's 8GB. Otherwise, it still has all the limitations of the Fire, a custom Android OS, custom App store, no camera, no GPS and no Bluetooth. Moreover Kindle Fire is priced at 50$ less.<br />
<br />
<br />
<span style="font-size: large;"><b>Samsung Galaxy Tab 7.0 plus:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Samsung Galaxy Tab 7.0 plus</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>399 USD(16GB) ?? USD(32GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>193.65 mmx 122.37 mmx 9.96 mm (7.62" x 4.82" x 0.39") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>345 g (12.17oz) (0.76lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 7" PLS multi-touch display.<br />
Resolution: 1024x600</td>
</tr>
<tr>
<td>Storage</td>
<td>16GB, 32GB</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1.2 GHz dual core</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>8hrs</td>
</tr>
<tr>
<td>OS</td>
<td>Android Honeycomb</td>
</tr>
<tr class="alt">
<td>Connectivity & More</td>
<td>1.Bluetooth 3.0<br />
2.Wi-Fi 802.11b/g/n(2.4GHz,5GHz)<br />
3.Wi-Fi Direct<br />
4.Camera: Rear - 3 megapixel, Front - 2 Megapixel<br />
5. HSPA/EDGE/GPRS<br />
6. 30 pin connector with HDMI, USB or SD card adapters available as addons<br />
7.A-GPS</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>Android Market </td>
</tr>
</tbody></table>
</div>
<br />
<br />
<span style="font-size: large;"><b>Samsung Galaxy Tab 10.1:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Samsung Galaxy Tab 10.1</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>499 USD(16GB) 599 USD(32GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>256.7 mm x 175.3 mm x 8.6 mm (10.11" x 6.90" x 0.33") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>565 g (19.93oz) (1.24lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 10.1" Super PLS multi-touch display.<br />
Resolution: 1280x800<br />
149ppi </td>
</tr>
<tr>
<td>Storage</td>
<td>16GB, 32GB</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1 GHz nVidia Tegra 2 dual core</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>9hrs video playback. 72hrs music playback</td>
</tr>
<tr>
<td>OS</td>
<td>Android 3.1 (Honeycomb)</td>
</tr>
<tr class="alt">
<td>Connectivity & More</td>
<td>1.Bluetooth 3<br />
2.Wi-Fi 802.11b/g/n(2.4GHz,5GHz)<br />
3.Wi-Fi Direct<br />
4.Camera: Rear - 3 megapixel, Front - 2 Megapixel<br />
5. HSPA/EDGE/GPRS<br />
6. 30 pin connector with HDMI, USB or SD card adapters available as addons<br />
7.A-GPS</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>Android Market </td>
</tr>
</tbody></table>
</div>
<br />
<span style="font-size: large;"><b>ASUS Eee Pad Transformer:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>ASUS Eee Pad Transformer</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>399 USD(16GB) 469 USD(32GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>270 mm x 180 mm x 13 mm (10" x 6.9" x 0.51") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>680 g (23.99oz) (1.49lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 10.1" IPS multi-touch display.<br />
Resolution: 1280x800<br />
160dpi
</td>
</tr>
<tr>
<td>Storage</td>
<td>16GB, 32GB. microSD slot, SD slot(with Dock)</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1 GHz dual-core nVidia Tegra 2</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>9.5hrs to 16hrs(with Dock) </td>
</tr>
<tr>
<td>OS</td>
<td>Android 3.2 (Honeycomb). Upgradeable to Android ICS 4.0</td>
</tr>
<tr class="alt">
<td>Connectivity</td>
<td>1.Bluetooth 2.1<br />
2.mini HDMI 1.3a<br />
3.USB 2.0 (with Dock)<br />
4.DLNA<br />
5.Wi-Fi 802.11b/g/n</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>1.Docking keyboard with 2 USB 2.0 ports, additional battery and SD card slot</td>
</tr>
</tbody></table>
</div>
The Eee Pad Transformer is another Android based tablet released in March 2011. A successor named ASUS Eee Pad Transformer Prime has been announced.
<br />
<br />
<span style="font-size: large;"><b>Acer Iconia Tab A100:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Acer Iconia Tab A100</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>349 USD(16GB) 329 USD(8GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>195 mm x 117 mm x 13.1 mm (7.68" x 4.60" x 0.52") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>410 g (14.4oz) (0.90lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 7" multi-touch display.<br />
Resolution: 1024x600
</td>
</tr>
<tr>
<td>Storage</td>
<td>8GB, 16GB</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1 GHz nVidia Tegra 250 dual core</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery </td>
<td>1530mAh, 2cell Battery</td>
</tr>
<tr>
<td>OS</td>
<td>Android 3.0 (Honeycomb). Upgradeable to Android 3.2</td>
</tr>
<tr class="alt">
<td>Connectivity</td>
<td>1.Bluetooth 2.1<br />
2.mini HDMI 1.3a<br />
3.micro USB 2.0 <br />
4.Wi-Fi 802.11b/g/n<br />
5.Rear:5MP camera with Flash, Front: 2MP Camera <br />
6.GPS</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>Android Market</td>
</tr>
</tbody></table>
</div>
<br />
<br />
<span style="font-size: large;"><b>Acer Iconia Tab A500:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Acer Iconia Tab A500</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>449 USD(16GB) 499 USD(32GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>260 mm x 177 mm x 13 mm (10.24" x 6.97" x 0.52") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>730 g (25.75oz) (1.61lb)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 10.1" multi-touch display.<br />
Resolution: 1280x800
</td>
</tr>
<tr>
<td>Storage</td>
<td>16GB, 32GB</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1 GHz nVidia Tegra 250 dual core</td>
</tr>
<tr>
<td>RAM</td>
<td>1 GB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>9.5hrs to 16hrs(with Dock) </td>
</tr>
<tr>
<td>OS</td>
<td>Android 3.0 (Honeycomb). Upgradeable to Android 3.2</td>
</tr>
<tr class="alt">
<td>Connectivity</td>
<td>1.Bluetooth 2.1<br />
2.mini HDMI 1.3a<br />
3.micro USB 2.0 <br />
4.Wi-Fi 802.11b/g/n<br />
5.Rear:5MP camera with Flash, Front: 2MP Camera <br />
6.GPS</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>1.Dock available</td>
</tr>
</tbody></table>
</div>
<br />
<span style="font-size: large;"><b>Apple iPad 2:
</b></span><br />
<div class="nbtable">
<table border="2" bordercolor="#A65600" cellpadding="10" cellspacing="0">
<caption>Apple iPad 2</caption>
<tbody>
<tr class="header">
<th>Spec</th>
<th>Details</th>
</tr>
<tr>
<td>Price</td>
<td>Wi-Fi:499 USD(16GB), 599 USD(32GB), 699 USD(64GB)<br />
Wi-Fi:629 USD(16GB), 729 USD(32GB), 829 USD(64GB)</td>
</tr>
<tr class="alt">
<td>Dimensions</td>
<td>241 mm x 186 mm x 8.8 mm (9.5" x 7.31" x 0.34") (H x W x T )</td>
</tr>
<tr>
<td>Weight</td>
<td>610 g (21.52oz) (1.34lb) <br />
600 g (21.16oz) (1.32lb)(Wi-Fi only model)</td>
</tr>
<tr class="alt">
<td>Display</td>
<td>Size: 9.7" multi-touch display.<br />
Resolution: 1024x768 (4:3)<br />
132ppi </td>
</tr>
<tr>
<td>Storage</td>
<td>16GB, 32GB, 64GB</td>
</tr>
<tr class="alt">
<td>CPU</td>
<td>1 GHz dual core Apple A5</td>
</tr>
<tr>
<td>RAM</td>
<td>512 MB</td>
</tr>
<tr class="alt">
<td>Battery Life</td>
<td>10hrs</td>
</tr>
<tr>
<td>OS</td>
<td>iOS 5</td>
</tr>
<tr class="alt">
<td>Connectivity & More</td>
<td>1.Bluetooth 2.1 +EDR<br />
2.Wi-Fi 802.11b/g/n(2.4GHz,5GHz)<br />
3.3G GSM/CDMA as per model<br />
4.Camera: Rear - 0.7 megapixel, Front - 0.3 Megapixel<br />
<br />
6. 30 pin connector with HDMI/VGA/USB/Card reader adapters available as addons<br />
7.A-GPS</td>
</tr>
<tr class="alt">
</tr>
<tr>
<td>Additional Points</td>
<td>1.Dock, Wireless Keyboard addons<br />
2. App Store</td>
</tr>
</tbody></table>
</div>
<br />
Sources:<br />
1. <a href="http://www.amazon.com/Kindle-Fire-Amazon-Tablet/dp/B0051VVOB2">http://www.amazon.com/Kindle-Fire-Amazon-Tablet/dp/B0051VVOB2</a><br />
2. <a href="http://www.asus.com/Eee/Eee_Pad/Eee_Pad_Transformer_TF101/">http://www.asus.com/Eee/Eee_Pad/Eee_Pad_Transformer_TF101/</a><br />
3. <a href="http://www.barnesandnoble.com/p/nook-tablet-barnes-noble/1104687969">http://www.barnesandnoble.com/p/nook-tablet-barnes-noble/1104687969</a><br />
4. <a href="http://www.apple.com/ipad/">http://www.apple.com/ipad/</a><br />
5. <a href="http://www.acer.co.uk/ac/en/GB/content/series/iconia-tab-a">http://www.acer.co.uk/ac/en/GB/content/series/iconia-tab-a</a><br />
6. <a href="http://en.wikipedia.org/wiki/ASUS_Eee_Pad_Transformer">http://en.wikipedia.org/wiki/ASUS_Eee_Pad_Transformer</a><br />
7. <a href="http://www.gsmarena.com/acer_iconia_tab_a500-3907.php">http://www.gsmarena.com/acer_iconia_tab_a500-3907.php</a><br />
8. <a href="http://www.gsmarena.com/acer_iconia_tab_a100-3841.php">http://www.gsmarena.com/acer_iconia_tab_a100-3841.php</a> <br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-64778261462873170172011-10-16T16:59:00.000-07:002011-10-19T03:05:29.849-07:00Ubuntu 11.10 Oneiric Ocelot on Acer Aspire One ZG5 AOA 150 ( with a gnome-shell workaround )<span style="font-family: "Trebuchet MS",sans-serif;">We recently did a review of Windows
8 Developer Preview on Acer Aspire One ZG5 AOA 150. In a similar vein,
we will be reviewing the October 13 release of Ubuntu's latest stable
offering, the Oneiric Ocelot. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Ubuntu's </span><a href="http://en.wikipedia.org/wiki/Oneirology"><span style="font-family: "Trebuchet MS",sans-serif;">dreamy</span></a><span style="font-family: "Trebuchet MS",sans-serif;"> </span><a href="http://en.wikipedia.org/wiki/Ocelot"><span style="font-family: "Trebuchet MS",sans-serif;">cat-leopard</span></a><span style="font-family: "Trebuchet MS",sans-serif;"> is available as</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1) Ubuntu Desktop 32bit and 64bit</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2) Ubuntu Server 32bit and 64bit</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">3) Ubuntu Alternate installer 32bit and 64bit</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">The
Alternate installer is for those who cannot run the desktop version of
the installer or for those whose systems failed to login after
installation due to driver or other issues using the default installer.
The alternate installer has a text based installer.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">For installation along with Windows, a WUBI installer is available.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Official Derivatives:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Ubuntu recognises 6 derivatives</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1) Kubuntu - KDE desktop with Ubuntu</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2) Xubuntu - XFCE desktop with Ubuntu</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">3) Lubuntu - LXDE desktop with Ubuntu</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">4) Edubuntu - Ubuntu for education with Unity desktop</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">5) Mythbuntu - Ubuntu for HTPC with XFCE desktop</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">6) Ubuntu Studio - Ubuntu for graphics , video and audio editing with XFCE </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">(At the time of writing this article, the Ubuntu Studio website has not put up a link for the 11.10 release)</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">These
derivatives generally run different desktop managers and/or software
but are based on the official Ubuntu release. You may choose to install a
derivative directly or install Ubuntu and then install the required
packages(eg. kubuntu-desktop, xubuntu-desktop or lubuntu-desktop). In
the latter case, you can select,for example, between Ubuntu's Unity
desktop or Kubuntu's KDE while logging on.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Installation:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">The
setup is available for download as .iso files of ~700MB size. DVD sized
.iso files are also available which contain language packs. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">New Installation:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Burn
the iso to CD/DVD or to a USB and boot into it. The .iso file is a live
disc and you can try Ubuntu before installation using it. Installation
is straight forward and you can choose to download updates from the
internet during installation.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Case Scenarios:</span></b><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">New PC:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">The setup will guide you through the partition setup and create a base partition and swap partition. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Windows User:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">If
you wish to retain your windows installation, do not format your
windows partition. Instead, create two new partitions. One for all your
files and the setup. The other is a swap partition which should be
around twice the size of your RAM. You can create additional partitions
if you so desire.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Upgrade from Ubuntu:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">You can
upgrade, if you are using 11.04. If you are using a previous version,
you need to upgrade to the following versions first.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Retain /home files only:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">If
you do not wish to retain your installed software and settings, and
only wish to retain your /home folder. You can boot into the CD/DVD/USB
and install into the existing partition, without formatting it first.
(Alternatively, you should be able install into a different partition
and then move your /home files as well)</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Retain installed software, settings and files:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1.
Upgrade Online: You can upgrade from the Update Manager which will
download the required packages. You do not need an .iso file for this.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2.
Upgrade using .iso file: You can upgrade using the Alternate installer.
Download the Alternate 32bit/64bit .iso file. At the terminal type
these commands</span><br />
<pre><span style="font-family: "Trebuchet MS",sans-serif;"> </span></pre>
<blockquote>
<pre><span style="font-family: "Trebuchet MS",sans-serif;">sudo mkdir -p /media/cdrom
sudo mount -o loop ~/Desktop/ubuntu-11.10-alternate-i386.iso /media/cdrom</span></pre>
</blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Followed by</span><br />
<blockquote>
<pre><span style="font-family: "Trebuchet MS",sans-serif;">gksudo "sh /media/cdrom/cdromupgrade"</span></pre>
</blockquote>
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">This will start the upgrade process. </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">You
will be prompted for downloading updates from the insternet during
installation, if you select "yes", only those packages which are newer
than those on the disc are downloaded, thus saving installation time.If
you select "No", the installer says it will not download any packages,
but does so anyways for the other packages you may have installed. If
you already have kubuntu-desktop or xubuntu-desktop installed along with
Ubuntu 11.04, all those packages will be upgraded too.</span></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Installation on Acer AspireOne ZG5:</span></span></b><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;"> </span></span></b><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Specs:</span></span></b><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Launched: 2008</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Atom N270 CPU</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">1 GB RAM</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">160GB HDD</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Mobile Intel Graphics 945G Express</span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">A Little Background:</span></span></b><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">The
Acer AspireOne ZG5 ran Ubuntu 11.04 with Unity (3d), Unity 2d,Gnome
Classic, Kubuntu and Xubuntu, without any problems. It also ran the
Gnome 2.x shell which preceded the final Gnome 3 release</span></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Gnome 3 fails to run on the Acer AspireOne ZG5. The problem is due to the inadequate graphic support. </span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">In
Ubuntu 11.10, Ubuntu has done away with Gnome classic(2.x) completely.
You can still get Gnome 2.x '"like" behavior using the
gnome-session-fallback which depends on gnome-shell, which is a part of
Gnome 3. </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;"> </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Installation:</span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Upgrade was done with the alternate .iso file using the method elicited above.</span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Post Installation:</span></span></b><br />
<br />
<br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">The
login screen has been replaced by "lightdm", (The installation prompts
you to select the default login manager lightdm, gdm, kdm etc if you
have them installed)</span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Unity 3d : Fail. Desktop panel flash and then disapper. No desktop. </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Unity 2d: Works. Cannot right click on desktop, no icons. Can set backgrounds.</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Gnome:Fail.Cannot start gnome-terminal. </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Gnome Classic: Fail. Panels flash and disappear. Can start gnome-terminal using shortcut Ctrl+Alt+T.</span></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><span style="font-size: xx-small;"><span style="font-size: small;">Gnome Classic (No effects):Fail. </span></span><span style="font-size: xx-small;"><span style="font-size: small;"> Panels flash and disappear. Can start gnome-terminal using shortcut Ctrl+Alt+T.</span></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Xubuntu: Works.</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">XFCE:Works </span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Lubuntu:Works</span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">LXDE:Works </span></span><br />
<span style="font-size: xx-small;"><span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span></span><br />
<span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">(Xubuntu
& XFCE are XFCE based desktop sessions available when you
install the xubuntu-desktop package. Lubuntu and LXDE are LXDE based
desktop sessions when you install the lubuntu-desktop package)</span></span><br />
<br />
<span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;"><b>Hardware & Devices:</b></span></span></span></span><span style="font-size: xx-small;"><span style="font-size: small;"><span style="font-family: "Trebuchet MS",sans-serif;">
Acer Aspire ZG5 Wifi, video, sound, MMC reader and webcam were all detected without issues.</span></span></span><br />
<b><span style="font-size: xx-small;"><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Impression:</span></span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">Gnome
3 does not work on the Acer Aspireone ZG5 because of graphics issues.
Ubuntu 11.10's Unity is based on Gnome 3 and perhaps hence does not run
on the Acer Aspire One ZG5's Intel 945 Mobile Express Graphics. Unity 2d
on the other hand is based on Metacity and still works.</span><br />
<span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">How to get gnome-shell working on Ubuntu 11.10 on Acer Aspire One ZG5?</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">When
Gnome 3 was in the works, gnome-shell based on Gnome 2.x was available
from ppa repositories for Ubuntu 10.10 and 11.04. As mentioned above,
that gnome-shell worked fine on the Acer Aspire One. The command used to
replace the existing window manager with gnome-shell was</span><br />
<span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">gnome-shell --replace</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">We tried the same on Ubuntu 11.10. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif; font-size: small;">As
mentioned above, Gnome Classic fails to load on Ubuntu 11.10 on the
Acer Aspire One, but only partially. One can still use the shortcut
Ctrl+Alt+T to launch a gnome-terminal (Terminal emulator). Enter the
following in the gnome terminal</span><br />
<span style="font-size: small;"><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">gnome-shell --replace</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-ZxLeB7T0FMjvB5zK4Mebv9uJJegtM6nvcD1khUMuhZh5pppAGXHTE6BD-m1uXuV2PruiO3_orkKMfAH33eN_RD1WkfL8XBF31TD5t5WLwxoNJEzVAQyfUqlPRRuxvJKyFehg3g-Auw/s1600/gnomeshell.png" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-ZxLeB7T0FMjvB5zK4Mebv9uJJegtM6nvcD1khUMuhZh5pppAGXHTE6BD-m1uXuV2PruiO3_orkKMfAH33eN_RD1WkfL8XBF31TD5t5WLwxoNJEzVAQyfUqlPRRuxvJKyFehg3g-Auw/s640/gnomeshell.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">Running "gnome-shell --replace" from terminal. Gnome shell UI is visible and somewhat usable, but will exit if you close the terminal. You can use nohup </span></td></tr>
</tbody></table>
<span style="font-family: "Trebuchet MS",sans-serif;">The
Gnome 3 UI is now visible and somewhat usable. Since we launched
gnome-shell from the terminal without a nohop, the shell will close if
you close the terminal. So, we hit Alt+F2, which brings out the Run
Application, and type in the same command. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghYRmUDlo4ghPhglIfiizOwqqsOr0lKIeIS4FJQcOL0N1oM3zMk4nacgpdxCgj3OKmSnSXpuUCjOXbj_k4I2gG3il49g40yKZiBM1zk7vTg04nLDK4ZUfARlURAFR0KhFMtOK6QfqBegk/s1600/gnomeshell2.png" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghYRmUDlo4ghPhglIfiizOwqqsOr0lKIeIS4FJQcOL0N1oM3zMk4nacgpdxCgj3OKmSnSXpuUCjOXbj_k4I2gG3il49g40yKZiBM1zk7vTg04nLDK4ZUfARlURAFR0KhFMtOK6QfqBegk/s640/gnomeshell2.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">Run gnome shell again from Alt+F2. Also note, the absence of a desktop background</span></td></tr>
</tbody></table>
<span style="font-family: "Trebuchet MS",sans-serif;">Alternatively you could have used nohup in the terminal to begin with.</span><br />
<blockquote>
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">nohup gnome-shell --replace </span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;"> After Gnome Shell has reloaded, you can
close the terminal safely.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">In the above screenshot, you can see there is
no desktop background. To setup a background, Press Activities(Or Win
Key)>Type "Image viewer"> Open a image you would like to
set as wallpaper>Right click on the image & choose "Set
as desktop background".</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyED3uUFkIt7EFvAMmPglsxeX46D-rC1z6stHHd6wUvrKjFriKpAS_FtkRq80X5hBFi9fT3JneidlqPZi8yu3U-spjDDawvpZpSN8Zh4YxWMY0f3hvpgum2AhyphenhyphenVtdOO5MvOF9f89AfPBk/s1600/not1.png" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyED3uUFkIt7EFvAMmPglsxeX46D-rC1z6stHHd6wUvrKjFriKpAS_FtkRq80X5hBFi9fT3JneidlqPZi8yu3U-spjDDawvpZpSN8Zh4YxWMY0f3hvpgum2AhyphenhyphenVtdOO5MvOF9f89AfPBk/s640/not1.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">Wallpaper set. Also note that the menu is missing the Switch User Option. Note also that the Unity Panel is visible. This is because gnome-shellwas launched after logging into a Unity 2D(Ubuntu 2D) session(More below)</span></td></tr>
</tbody></table>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2m03ranx0_jZ_gkayGCjCPb4V_S8x1F5aTFwE-SAPVKPmszMYyC-HuxrdGPsi5JvTarZ5t0fBMxWQuxgVyvVJEbdcSELrEDoEyASzS9r0v1UEUCfV9iap8J5U5J2p5rsDWs1RkoS6qqk/s1600/startbutt2.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "Trebuchet MS",sans-serif;"></span></a></div>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99sp-Wfg54fkZ9eICKAAyKE_tX6BuMD9kb3Z_h-Cfni-Wp6HUhgRdd4vGY6yDQaquXwZLxsg6w4GGmQTAIdjqGoA2NUSde2uDTwbOSJs2QV4Tx2tP3Eg7im9Qy6NFBSCaw6z5Puq0u3Q/s1600/startbutt3.png" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh99sp-Wfg54fkZ9eICKAAyKE_tX6BuMD9kb3Z_h-Cfni-Wp6HUhgRdd4vGY6yDQaquXwZLxsg6w4GGmQTAIdjqGoA2NUSde2uDTwbOSJs2QV4Tx2tP3Eg7im9Qy6NFBSCaw6z5Puq0u3Q/s640/startbutt3.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">The Gnome Dash. Press Win-Key or Move your mouse to the top right edge.</span></td></tr>
</tbody></table>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Shortcomings:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1) No Switch User(fixed aftter installing gnome) or Hibernate Option in the Notification Menu</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2) Gnome based software like Gedit, Nautilus fail to run</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">$ gedit </span></blockquote>
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">Gtk-Message: Failed to load module "canberra-gtk-module"<br />Gtk-Message: Failed to load module "canberra-gtk-module"<br />gedit: symbol lookup error: gedit: undefined symbol: gtk_overlay_get_type</span></blockquote>
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">$ nautilus </span></blockquote>
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">Gtk-Message: Failed to load module "canberra-gtk-module"<br />Gtk-Message: Failed to load module "canberra-gtk-module"<br />Initializing nautilus-gdu extension<br />Initializing nautilus-open-terminal extension<br />nautilus: symbol lookup error: nautilus: undefined symbol: gtk_overlay_new</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;">3) Cannot access or change System Settings.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">4) Cannot right click on desktop. No desktop icons. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">We followed this up by installing the "gnome" package.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<blockquote style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">sudo apt-get install gnome</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;">After
installation of gnome, a switch user option appeared and the Logout
option started working. However gedit, nautilus and many other gnome
based apps(including system settings) still do not work. One can use
Kate instead of Gedit, and dolphin/konqueror instead of nautilus in this
case, but system settings is still unfixed. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Creating a Custom User Defined Session to login to Gnome Shell in Ubuntu 11.10 on Acer Aspire One</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"> On
the login screen, a gear icon gives us the options to choose from
multiple desktop environements viz Unity , Unity 2D, Gnome Classic,
Gnome, Kubuntu, Lubuntu, Xubuntu etc, provided you have the related
packages installed.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">In the example above, we ran
gnome-shell on Ubuntu 11.10 with some success. But to do so we had to
type commands into the terminal after waiting for gnome classic to load
(and fail). We can automate this process by creating a new User Defined
Session and linking it to a script file.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Open a text editor.Since Gedit was not working on the system, we had to use Kate to do the editing. Run Kate as root</span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">gksudo kate</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;">Create a new file. Type in the following content</span><br />
<blockquote>
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">[Desktop Entry]<br />Name=Gnome Shell Custom<br />Comment=Custom Gnome Shell script<br />Exec=/home/username/.xsession</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;">Save the file as custom.desktop in /usr/share/xsessions </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Create a second new file.Type in the following content</span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Trebuchet MS",sans-serif; font-size: x-small;">#! /bin/bash<br /><br />gnome-session --session=gnome-classic &<br />sleep 10<br />nohup gnome-shell --replace</span></blockquote>
<span style="font-family: "Trebuchet MS",sans-serif;">Save the file as .xsession in /home/username/</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Where
"username" is your username. In the above example, we first create a
custom.destop file to create a new User defined session. We link the
file to a script which we place in the user's home directory. This
script could have been placed elsewhere and the custom.desktop file
could have been named anyname.desktop. We have named the new User
Defined Session as Gnome Shell Custom.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Now Logout
from Gnome shell. At the login screen, click on the gears icon and
choose "Gnome Shell Custom", type your password and press enter. The
script first loads Gnome classic(Gnome 3 with gnome-session-fallback
which emulates the Gnome 2 look), this fails to load in Acer Aspire One
ZG5/AOA 150.(This is exactly what happens when we selected Gnome Classic
at the login screen). After this the script waits for 10 seconds(you
can change this to a lesser or greater value. 5 seconds also seems to
work.)After the waiting period, gnome-shell --replace is executed, which
replaces the failed gnome-session-fallback with the Gnome shell UI.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">The
script was tried with only gnome-shell --replace, in which case the
Gnome Shell UI appeared, but incompletely, there was no wallpaper, no
notification icons and no favorite icons. The script was also tried
without the waiting period, in which case too the Gnome shell UI was
incomplete.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Limitations of this setup:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Gnome 3 based applications like Gedit,nautilus and multiple system settings applications are not accessible.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Alternatives for Gedit: Kate, Vim</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Alternatives for Nautilus: Dolphin/Konqueror</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Advantages of this setup:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">You can use a
semblance of the latest UI on your 3+ year old Acer Aspire One ZG5 AOA
150 netbook with tolerable performance. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Alternative Way: Use a new or Guest Account</span></b><br />
<br />
<span style="font-family: "Trebuchet MS",sans-serif;">If you are using a new user account or a guest account you can login to the default GNOME session from the login screen and get the gnome-shell as UI.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Alternatives to Gnome on Ubuntu 11.10:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">As already mentioned above Kubuntu, Xubuntu and Lubuntu
desktop environements work without a problem on the Acer Aspire One AOA
150 and can be used instead of Unity 3D/Gnome. Unity 2D also works on
the machine.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Unity 2d + Gnome Shell:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">If you login to a Ubuntu 2D session and then execute gnome-shell --replace, you end up with Gnome shell over a partly usable Unity 2D.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2m03ranx0_jZ_gkayGCjCPb4V_S8x1F5aTFwE-SAPVKPmszMYyC-HuxrdGPsi5JvTarZ5t0fBMxWQuxgVyvVJEbdcSELrEDoEyASzS9r0v1UEUCfV9iap8J5U5J2p5rsDWs1RkoS6qqk/s1600/startbutt2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2m03ranx0_jZ_gkayGCjCPb4V_S8x1F5aTFwE-SAPVKPmszMYyC-HuxrdGPsi5JvTarZ5t0fBMxWQuxgVyvVJEbdcSELrEDoEyASzS9r0v1UEUCfV9iap8J5U5J2p5rsDWs1RkoS6qqk/s640/startbutt2.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">Unity 2D launcher panel with Gnome shell. GIMP 2.7 is running, while Gnome "alert" about Mozilla Firefox being ready is visible at the bottom.</span></td></tr>
</tbody></table>
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><span style="font-family: "Trebuchet MS",sans-serif;">
</span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRiSOku5OW_J6Vr3QKieO_MBP6A5lAHIJVfslFJMLE0dU1t2oHUXcdLw8W21B4lt-gKj6PMV2y3xLtWFk4F0oMZiMlcnpMp5BRGrfc-Jfx5E1pLJmTalooPiSjfV96Y0UEYAS6xoUmwPs/s1600/unityplusgnomeshell.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><span style="font-family: "Trebuchet MS",sans-serif;"><img border="0" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRiSOku5OW_J6Vr3QKieO_MBP6A5lAHIJVfslFJMLE0dU1t2oHUXcdLw8W21B4lt-gKj6PMV2y3xLtWFk4F0oMZiMlcnpMp5BRGrfc-Jfx5E1pLJmTalooPiSjfV96Y0UEYAS6xoUmwPs/s640/unityplusgnomeshell.png" width="640" /></span></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-family: "Trebuchet MS",sans-serif;">Unity 2D Dash over Gnome Dash </span></td></tr>
</tbody></table>
<b><span style="font-family: "Trebuchet MS",sans-serif;"> Unity 2D on Acer Aspire One in Ubuntu 11.10</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">As previously mentioned Unity 2D works on the AspireOne but with exceptions.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Shortcomings: </span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1. Cannot right click on the Unity 2D desktop. No desktop icons.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2. Double Click and hold to activate menus in Unity 2D.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"> But Unity 2D might be the goto option for many AspireOne users because basic features like the Internet Browser, Media Player and LibreOffice work.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">LXDE + Gnome Shell</span></b><br />
<br />
<span style="font-family: "Trebuchet MS",sans-serif;">Instead of logging into Unity 2D and then launching gnome-shell, one can also log in to Lubuntu/LXDE session and launch gnome-shell. In this case you get to use desktop icons and desktop right click.</span><br />
<br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Ubuntu 11.10 on Acer Aspire One for other users</span></b><br />
<br />
<span style="font-family: "Trebuchet MS",sans-serif;">For other users, a Lubuntu/Xubuntu/Openbox session maybe in order, due to performance issues. Of these Openbox loads the fastest, but offers not much of a UI. Lubuntu based on LXDE offers a decent UI but good load times. XFCE based Xubuntu has slightly longer load times, but offers a better UI.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<b><br /><span style="font-family: "Trebuchet MS",sans-serif;"></span></b><br />
<b><span style="font-family: "Trebuchet MS",sans-serif;">Conclusions:</span></b><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Linux distributions are known to run better on older hardware than their Windows counterparts. Such a comparison though unfair, is not unwarranted. In our Windows 8 Developer preview on the same machine, we saw that Microsoft's latest offering working(or gracefully fall-backing) pretty well. However, we do see that in this case Gnome 3 does not appear to do so. Unity 2D is the fall-back which Canonical offers for Unity 3D. The Gnome Shell workaround mentioned in this post is perhaps the closest one can get to a Gnome 3 experience on the Acer Aspire One AOA 150. </span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br /></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">Sources & References:</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;">1.</span><a href="http://askubuntu.com/questions/39191/how-can-i-add-gnome-shell-to-the-regular-ubuntu-natty-login-screen-along-with-u"><span style="font-family: "Trebuchet MS",sans-serif;">11.04 - How can I add gnome-shell to the regular Ubuntu Natty login screen along with "Ubuntu" "Ubuntu Classic", maybe as "User defined"? - Ask Ubuntu - Stack Exchange</span></a><br />
<span style="font-family: "Trebuchet MS",sans-serif;">2.</span><a href="http://www.quicktweaks.com/2008/10/14/run-your-virtual-os-directly-from-gdm-in-ubuntu/"><span style="font-family: "Trebuchet MS",sans-serif;">Run VirtualBox session directly from GDM session in Ubuntu | Quick Tweaks</span></a><br />
<span style="font-family: "Trebuchet MS",sans-serif;">3.</span><a href="https://help.ubuntu.com/community/NattyUpgrades"><span style="font-family: "Trebuchet MS",sans-serif;">NattyUpgrades - Community Ubuntu Documentation</span></a><br />
<span style="font-family: "Trebuchet MS",sans-serif;">4.</span><a href="http://www.ubuntu.com/project/about-ubuntu/derivatives"><span style="font-family: "Trebuchet MS",sans-serif;">Derivatives | Ubuntu</span></a><br />
<span style="font-family: "Trebuchet MS",sans-serif;">5.</span><a href="http://www.ubuntu.com/download/ubuntu/alternative-download"><span style="font-family: "Trebuchet MS",sans-serif;">Alternative downloads | Ubuntu</span></a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6382480819769005776.post-73549289311179281592011-10-14T00:19:00.000-07:002011-10-14T00:19:46.284-07:00Blackhole Exploit Kit threat surfaces at the Wampserver English Website<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj75fLWVqndWotLHco8RycMO7Zn7NZIfHHS3RZBCZDlRpMPDmcF2faN57iT_qd0otQKo5wrYvj82MUJFozJmJ7DlT5afdY4M6VEOKQUj9p7KAvkx24DgYKxTxwUNfHfqsqOkKIBrh4YGqc/s1600/wamp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj75fLWVqndWotLHco8RycMO7Zn7NZIfHHS3RZBCZDlRpMPDmcF2faN57iT_qd0otQKo5wrYvj82MUJFozJmJ7DlT5afdY4M6VEOKQUj9p7KAvkx24DgYKxTxwUNfHfqsqOkKIBrh4YGqc/s640/wamp.png" width="640" /></a></div>
<div style="font-family: "Trebuchet MS",sans-serif;">
AVG is reporting and blocking access to the website of Wampserver at wampserver.com/en citing a Blackhole Exploit Kit threat.The Blackhole Exploit Kit surfaced late in 2010 on file sharing websites under the guise of security software. </div>
<span style="font-family: "Trebuchet MS",sans-serif;">More about the </span><a href="http://community.websense.com/blogs/securitylabs/pages/black-hole-exploit-kit.aspx" style="font-family: "Trebuchet MS",sans-serif;">Blackhole Exploit Kit at Websense</a><span style="font-family: "Trebuchet MS",sans-serif;">. </span><br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-21315805785892797942011-10-04T04:34:00.000-07:002011-10-06T01:21:24.116-07:00New Look Blogger: Promising Dynamic Views lacks options for customization, third-party scripts and more<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Blogger released a Dynamic Views template recently. Dynamic Views is a set of seven(7) different ways to display the posts of a blog.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia97AdJ52xcYnR0lexEXxCu2x4MIVOFriuLwraP9hP9K7YT8iYt9aPYGEARamqdRhDHXjZo2zmZZjGY5T4TguWHbwyDctDswK0kxDxgVPCLG1vnNRNRsMQixrUe5-8oNH172rOeT9yFhc/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia97AdJ52xcYnR0lexEXxCu2x4MIVOFriuLwraP9hP9K7YT8iYt9aPYGEARamqdRhDHXjZo2zmZZjGY5T4TguWHbwyDctDswK0kxDxgVPCLG1vnNRNRsMQixrUe5-8oNH172rOeT9yFhc/s1600/1.png" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">The <a href="http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html">official post about the launch </a>of the new look mentions the following benefits</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;"><b><br /></b></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;"><b>The Benefits:</b></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">1. Infinite scrolling:</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="line-height: 19px;">Views: Classic</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">2. Images that load as you browse</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;">3. Integrated search </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;">4. Sorting by date, label and author</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">Views: Flipcard</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">5. Lightbox-style posts </span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">Views: Snapshot, Flipcard and Timeslide</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">6. </span><span class="Apple-style-span" style="background-color: white; color: #333333; line-height: 19px;">Keyboard shortcuts </span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;">7. One-click sharing to Google+ and other social sites on every post</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="background-color: white; font-family: 'Trebuchet MS',sans-serif;">Out of these features, the lightbox post view and keyboard shortcuts are new and interesting. </span><span class="Apple-style-span" style="background-color: white; font-family: 'Trebuchet MS',sans-serif;">Gmail shortcuts work, like <i>j</i> and <i>k</i> for previous and next post respectively. The Lightbox view is available in some views. Sort by date, label and author is available in the Flipcard view only.</span><span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;"><span class="Apple-style-span" style="color: black; line-height: normal;"></span></span></div>
<div class="separator" style="clear: both; font-family: 'Times New Roman'; text-align: left;">
<span class="Apple-style-span" style="background-color: white; color: #333333; font-family: 'Trebuchet MS',sans-serif; line-height: 19px;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></span></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcGMOG6q28E9MTUocGRj87IkIC4PYzUWTB6g_i_gBjiDmhY08lmwg7kMEO4XWTS7IAzxNf7ZXQ7Bngrdi21E9I3Pszt-4LpgGQ_l3rq5eieBH-SIRIsDrnyOCR-ouJZIjHGkEJbhQDpE/s1600/2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcGMOG6q28E9MTUocGRj87IkIC4PYzUWTB6g_i_gBjiDmhY08lmwg7kMEO4XWTS7IAzxNf7ZXQ7Bngrdi21E9I3Pszt-4LpgGQ_l3rq5eieBH-SIRIsDrnyOCR-ouJZIjHGkEJbhQDpE/s640/2.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Integrated Search(3), Infinite scrolling(1) and One Click sharing(7)</span></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUQfK7z3kA1ZEYB3ZQz4E1tMptRq6slSPiiHz6A0ISxBYOvbC1k4Fi0Bq5P_UNPL4LIh46FiMaXwFuVGUaaIByxCjwWryX1J7gvGyOyValH3hgrUzzKRc0EP2wcMv0NaauaBZewPIbAoU/s1600/3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="419" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUQfK7z3kA1ZEYB3ZQz4E1tMptRq6slSPiiHz6A0ISxBYOvbC1k4Fi0Bq5P_UNPL4LIh46FiMaXwFuVGUaaIByxCjwWryX1J7gvGyOyValH3hgrUzzKRc0EP2wcMv0NaauaBZewPIbAoU/s640/3.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Lightbox style posts in some views</span></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisl_vTIbK2aX2qUT2A1SNHAJ5u3fW6bn-6yO2eZFPNw786BNgqkmz1msXTJh3nYLWrzRiWFlosxlpK9DBcs6n3tI-PMFxRZ59Y1iNLhL5eOZYKYn8DfbFZRHstH1EF0ZfZouF1isLjgnI/s1600/4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisl_vTIbK2aX2qUT2A1SNHAJ5u3fW6bn-6yO2eZFPNw786BNgqkmz1msXTJh3nYLWrzRiWFlosxlpK9DBcs6n3tI-PMFxRZ59Y1iNLhL5eOZYKYn8DfbFZRHstH1EF0ZfZouF1isLjgnI/s640/4.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Sort by Date, Label and Author in Flipcard view</span></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAZjjMvvmiQJna8HHzoQcT87YceoROJ9WW-nhv2QxKqA6-ZNfzv2CJe4XrGhI_lTJOHz6A690gBF6xT9PvyVMgb5YzhVxyVvFDlfcuM5Wo_6wnTaa64lCiBVk6A-bWHQs9ZZ6264I6jE/s1600/6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="574" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAZjjMvvmiQJna8HHzoQcT87YceoROJ9WW-nhv2QxKqA6-ZNfzv2CJe4XrGhI_lTJOHz6A690gBF6xT9PvyVMgb5YzhVxyVvFDlfcuM5Wo_6wnTaa64lCiBVk6A-bWHQs9ZZ6264I6jE/s640/6.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Note the grayed out Edit HTML and the missing Layout option in the sidebar</span></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>The Limitations:</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">The Edit HTML optioon for editing templates is not avaliable. Atleast as of now, the button is grayed out</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">The Layout option present for other templates is missing too.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>Customization is available but with limitations:</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Only the following are available</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">1. Background: Background image </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW9RU7rjoBj7SpvOH-Xi5k53txOr3zYULnJ9YFNl7oXTCXKIkTQ_ODuHrROKW7V0fj-hAhGQj2jRdJCOoEXmLjq_75014MTFSYKFmgCz7m6yBep3y9QXGBrrOjIP_IztlRe-np1w_UAVw/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW9RU7rjoBj7SpvOH-Xi5k53txOr3zYULnJ9YFNl7oXTCXKIkTQ_ODuHrROKW7V0fj-hAhGQj2jRdJCOoEXmLjq_75014MTFSYKFmgCz7m6yBep3y9QXGBrrOjIP_IztlRe-np1w_UAVw/s640/8.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">2. Advanced: Add CSS</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_NPE7YS5CVG5gsryQt5LSC6bqpNKHX1eHFW9fwVoB_OPLLogduvxwjRKsU6gpo4s0IDnUOdKxfZZjBt4AizWbyXHax68rto3ZcbmfYVofFcth07wHwMYt_Zzgkp6juuFcczjp0BJmY5w/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_NPE7YS5CVG5gsryQt5LSC6bqpNKHX1eHFW9fwVoB_OPLLogduvxwjRKsU6gpo4s0IDnUOdKxfZZjBt4AizWbyXHax68rto3ZcbmfYVofFcth07wHwMYt_Zzgkp6juuFcczjp0BJmY5w/s640/9.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>What you cannot do?</b></span></div>
<ul>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No third party scripts</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No sidebar gadgets</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No widgets</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No Blogger plugins</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No Subscrbe/ Follow gadget</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No Google Analytics</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No Disqus </span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Google Webmasters site verification breaks when using Dynamic Views</span></li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">(The above points are redundant and basically stem from lack of any additional script support at present) </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">You cannot add third party scripts and other blogger layout scripts to your blog at present</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Since layout is disabled and you cannot edit the template HTML , there is presently no easy way to add scripts to your blog if you want to use Dynamic Views. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">A poor workaround can be adding the required script to the html of the post. If the script is for a tracking code like Statcounter/Goggle Analytics, you will have to place it in every post. Ditto for advertisement codes.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Blogger provides tracking using Blogger Stats. Adsense works too.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">What works:</span></b></div>
<ul>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Google Adsense</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"></span><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Blogger Stats</span></li>
<li><b><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><i>A cool new template!</i></span></b></li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>Good News for Adsense Users</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP7B9NXea3EfeIHvqsnU_IjbMfpejpCvv-NBkyDGbSSz4FbT4IviHM6ztJPAesH1ZI4a1dC6z4XsJSAqTiqq1eq8ko960opkMnAkdz2QlGKG0bEnoVlFkSucoRbujNkGZlut1fwBzuY6A/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP7B9NXea3EfeIHvqsnU_IjbMfpejpCvv-NBkyDGbSSz4FbT4IviHM6ztJPAesH1ZI4a1dC6z4XsJSAqTiqq1eq8ko960opkMnAkdz2QlGKG0bEnoVlFkSucoRbujNkGZlut1fwBzuY6A/s640/10.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">If you are using Adsense, you can use the Earnings section to setup your ads.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>Bad news for users of Google Webmasters:</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">If you were using META tag based or Google Analytics code based verification on Google Webmasters, the verification will now fail. You can still verify using the TXT record opton. Most registrars support TXT records. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<blockquote>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>My registrar does not support TXT records</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">If your registrar does not support TXT records, think about moving your DNS to a third party DNS service provider like commercial providers like <a href="http://dyn.com/dns/">DynDNS</a>, <a href="http://www.geoscaling.com/">Geoscaling</a>(free to start with, Hipatic.com is using geoscaling now) or free ones like <a href="http://www.namecheap.com/products/freedns.aspx">Namecheap FreeDNS</a>. </span></div>
</blockquote>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><b>Conclusion</b>:</span></div>
<blockquote>
<ul>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">New HTML5 and AJAX based Dynamic template.</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">Offers Some customization like background & css</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">No way to add third party scripts(Blogger is working on plugin support)</span></li>
<li><span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"> Definitely Beta</span></li>
</ul>
</blockquote>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;">The <i>Design Views </i>template goes to show that the Blogger team is working hard to bring out new features. Although<i>, </i>there are some limitations now, expect them to be remedied in the near future.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-family: 'Trebuchet MS',sans-serif;"><a href="http://www.google.co.in/support/forum/p/blogger/thread?tid=19e461250d0a91c1&hl=en">Drop Blogger a line regarding Dynamic Views</a></span></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6382480819769005776.post-26838631579759640122011-09-25T14:27:00.000-07:002012-10-31T17:22:46.610-07:00Windows 8 Developer Preview on Acer Aspire One AOA150<div dir="ltr" style="text-align: left;" trbidi="on">
<b><i><span style="font-family: 'Trebuchet MS', sans-serif;">Update November 1st 2012: <a href="http://www.hipatic.com/2012/10/windows-8-on-4-year-old-acer-aspire-aoa.html">Windows 8 on Acer Aspire AOA 150</a></span></i></b><br />
<b><i><span style="font-family: 'Trebuchet MS', sans-serif;"><br /></span></i></b>
<b><i><span style="font-family: 'Trebuchet MS', sans-serif;">Update: October 31st 2012</span></i></b><br />
<i><span style="font-family: 'Trebuchet MS', sans-serif;">Since posting this article about over a year ago, the said AOA 150 is still alive, although with some changes. I have added a 500gb 7200 rpm HDD(ST9500420ASG) to the netbook. The netbook now runs a Windows 8 Release Preview with Ubuntu 12.10 as the main OS. </span></i><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><i>Windows 8 Release Preview apparently runs faster than Developer Preview. I might buy an upgrade license to Windows 8 pro, but with a resolution of 1024x600 and metro(windows 8) apps not working, I don't see much point. But I do need something to run my Nokia Music on...</i></span><br />
<br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Other updates on Windows 8</span><br />
<br />
<span style="font-family: 'Trebuchet MS', sans-serif;">1. License types available for Windows 8:</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> a. Upgrade License - $39.99 till January 31 2013</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> b. OEM License (The license which vendors will use when they bundle Windows 8 with your new PC)</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> c. System Builder License (Similar to the OEM license, but you can purchase this to build your own PC. Single PC/Virtual Environment use only) - $139.99</span><br />
<br />
<span style="font-family: 'Trebuchet MS', sans-serif;">2. Trial Version</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> A <a href="http://msdn.microsoft.com/en-us/evalcenter/jj554510.aspx">90 day trial version of Windows 8 RTM Enterprise</a> is available on the MSDN website for anyone. However, there are some caveats.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> a. This is the Enterprise edition, so no Media Center addon is available. So, for DVD playback a 3rd party codec will be needed.</span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"> b. Cannot upgrade or convert this to a full Pro or Enterprise version with a serial or key. After 90 days, you will have to format and forget about the RTM version.</span><br />
<br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><i>and... Back to the article.</i></span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;"><i> </i></span><br />
<br />
<span style="font-family: 'Trebuchet MS', sans-serif;">Microsoft recently launched a Developer Preview for Windows 8. The MSDN website gives you 3 different iso files </span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">1) 32bit Windows 8 Developer Preview. </span><br />
<span style="font-family: 'Trebuchet MS', sans-serif;">2) 64bit Windows 8 Developer Preview.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">3) 64bit Windows 8 Developer Preview with developer tools</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Windows 8 is being seen as Microsoft's attempt at unifying their operating system offering. One OS to rule them all - PCs, tablets and phones. Windows 8 features the <a href="http://en.wikipedia.org/wiki/Metro_(design_language)">Metro interface</a> and support for ARM processors(no developer preview is available for ARM processor based devices at present)</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">The Windows Developer Preview is a pre-beta release for developers. </span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Test Device: Acer AspireOne ZG5 AOA 150</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">RAM: 1GB</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Processor: Atom N270 1.6Ghz</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">VGA: Onboard. Mobile Intel 945 Express Chipset</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">This 3 year old netbook meets the minimum system requirements for the 32bit install of the Windows Developer Preview.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Installation:</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">If you have Windows XP or 7 installed, boot into it and download the 32bit iso file from the <a href="http://msdn.microsoft.com/en-us/windows/apps/br229516">MSDN website</a>. After the download is complete, mount the iso using a virtual device manager like <a href="http://www.daemon-tools.cc/eng/products/dtLite">Daemon Tools</a>(a free lite version is available). </span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Open the mounted volume and browse to the "sources" folder. In it run the setup.exe. Install Windows 8 Developer preview to a partition of your choice and select the Custom installation option. This will do a clean install of Windows 8 Developer Preview to the partition and after the install is complete will let you boot into Windows 8 Developer Preview.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">The installation went smoothly on the AOA 150 and took about an hour to complete.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">You can also create a bootable dvd or usb drive using the iso and boot from that to install Windows 8 Developer Preview. </span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<b><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Post installation issues:</span></b><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">1. Windows 8 did not detect and install the driver for Mobile Intel 945 Express Chipset, defaulting to the default VGA driver with a 800x600 resolution.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Solution: Downloaded the Windows 7 driver for <a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=2301&DwnldID=18223&ProductFamily=Internet+Devices&ProductLine=Netbooks&ProductProduct=Mobile+Intel%c2%ae+945GM+Express+Chipset+Family&lang=eng">Mobile Intel 945 Express Chipset from Intel's website</a></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">2. Tap to click and touchpad scroll did not work</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Solution: Downloaded the touchpad driver for Acer Aspire One AOA 150 from <a href="http://us.acer.com/ac/en/US/content/drivers">Acer's website</a></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">3. Metro apps do not run on resolutions lower than 1024x768. The AOA150 monitor has a maximum resolution of 1024x600. </span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Solution: Windows allows you to use non-native resolutions by downscaling, using a registry hack. Open regedit and search for Display1_DownScalingSupported. The default value is 0, set it to 1. Restart netbook. Now right click on the desktop and select "Screen Resolution". You should be able to see two new resolutions 1152x864, 1024x768. Metro apps will run on a resolution of 1024x768 and above</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi21jmLHGUmBBAMn5yx5-p7Kqd67e_1KUFKOszunIhKfnrcr7FFpsKUoDTr6mb3mzRwUeupfVj8uMTulULx-QFKTdilJeM2XmFVS3MSLKN2-DrhyphenhyphenGe2cHaE2RvynQ5Fyt49qTc8r1_scy8/s1600/downscaledresolution1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><img border="0" height="466" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi21jmLHGUmBBAMn5yx5-p7Kqd67e_1KUFKOszunIhKfnrcr7FFpsKUoDTr6mb3mzRwUeupfVj8uMTulULx-QFKTdilJeM2XmFVS3MSLKN2-DrhyphenhyphenGe2cHaE2RvynQ5Fyt49qTc8r1_scy8/s640/downscaledresolution1.png" width="640" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Warning: Editing the registry incorrectly may cause your computer to become unusable.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">With non-native resolutions the display is not very clear, but Metro applications can now be launched.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<b><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Performance:</span></b><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Windows 8 Developer Preview runs surprisingly well on the Acer Aspire One AOA 150. Having tested Windows 7 Beta on this netbook before(a long while back), it can be safely said that Windows 8 felt either on par or slightly better than Windows 7. That said, it still runs pretty sluggishly when compared to Windows XP or Ubuntu 11.04, but that is expected.</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">CPU and Memory Load averages:</span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">CPU usage at rest was 5% but would spike to 90% when applications were being launched. Memory usage remained around the 700MB mark out of the available 1GB.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizYZNQaowD-11Ij5iMxgs2hklOQ2atvmvVrDi_VQVy1R2bbAntYq2CNPzKbdlj2ki7RW6kpf3U6fx963mfobDJT5hbbvvO06NSiaJelIKNpTWKEh7s4BSTIVEskZn8FqiJ45XYi8gpT3k/s1600/tm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><img border="0" height="528" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizYZNQaowD-11Ij5iMxgs2hklOQ2atvmvVrDi_VQVy1R2bbAntYq2CNPzKbdlj2ki7RW6kpf3U6fx963mfobDJT5hbbvvO06NSiaJelIKNpTWKEh7s4BSTIVEskZn8FqiJ45XYi8gpT3k/s640/tm.png" width="640" /></span></a></div>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil6NjqGi1OsCR8DqlN_nyLJr2FJ1HhopKn5MOPWvoNhyphenhyphenEnhA1VurtJ24iWr0YJkoHMrBHHQHvE8XXx5Viypvbr6UbjdiDk4E6fWNuo8QsF0MLpwIaaXA9tVbDOTJjjCtn03PsHqoFlhI8/s1600/tm2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><img border="0" height="532" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil6NjqGi1OsCR8DqlN_nyLJr2FJ1HhopKn5MOPWvoNhyphenhyphenEnhA1VurtJ24iWr0YJkoHMrBHHQHvE8XXx5Viypvbr6UbjdiDk4E6fWNuo8QsF0MLpwIaaXA9tVbDOTJjjCtn03PsHqoFlhI8/s640/tm2.png" width="640" /></span></a></div>
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"><br /></span>
<b><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Conclusion:</span></b><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;">Windows 8 Developer Preview works on the Acer Aspire One with fixable driver issues. Metro applications however need a registry hack to run. For a 3+ year old netbook, the performance of Microsoft's latest offering is top notch</span><br />
<br /></div>
Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-6382480819769005776.post-48585581919549521812011-06-22T10:52:00.000-07:002011-06-22T10:52:18.383-07:00Nokia Keep MeeGo - Sign the Petition<div dir="ltr" style="text-align: left;" trbidi="on">Nokia is <a href="http://moconews.net/article/419-nokia-finally-drops-its-news-its-microsoft/">planning to use the Windows Phone 7 OS</a> for its future mobile offerings. That means no more <a href="http://en.wikipedia.org/wiki/Symbian">Symbian</a> and <a href="http://en.wikipedia.org/wiki/Maemo">Maemo</a>(and now <a href="http://en.wikipedia.org/wiki/MeeGo">MeeGo</a>). While Symbian had its shortfalls and had a very successful run, Maemo had just started and was(or is) a <a href="http://www.fonehome.co.uk/2010/07/28/nokia-n9-meego-vs-symbian4/">lot</a> <a href="http://inspect-aa-gadget.blogspot.com/2010/04/maemo-5-vs-symbian.html">more</a> <a href="http://gadgetized.net/symbian-vs-maemomeego-part-one/">promising</a> than Symbian and even<a href="http://www.techradar.com/news/phone-and-communications/mobile-phones/ios-vs-android-vs-webos-vs-meego-925580"> comparable to other mobile OSes</a> on offer. Nokia going the Windows way may even turn out to be the right decision for Nokia and Symbian might have just run its course, but nipping MeeGo in the bud seems hasty and cruel.(Nokia released <a href="http://en.wikipedia.org/wiki/Nokia_N9">N9</a> which runs a MeeGo <i>instance</i>)<br />
<br />
Wish to support the "<a href="http://twitition.com/3c3ah">We want Nokia to keep MeeGo</a>" petition over at twitition. <a href="http://twitition.com/3c3ah">Follow the link</a> and sign in to support. Spread the message on twitter and facebook too.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-52604868950719091622011-01-15T07:36:00.000-08:002011-06-22T11:20:00.246-07:00How mflow can change the music scene?<div dir="ltr" style="text-align: left;" trbidi="on">People have had enough of 30 second (90 seconds in some places) previews before deciding whether or not to buy a song. Unless the song is on radio, which most album-only songs aren't, chances are that the only place where you could legally hear the song before buying it is if you are lucky enough to have a friend who has already bought that song. Letting somebody else listen to songs you bought on your player, is that legal?(Well that is a completely different debate!) <br />
<br />
Otherwise, let me list the sources where you could hear the song(Most common on top):<br />
1. <b>Youtube</b> - Popular albums find their way to Youtube, with users uploading videos with lyrics. This is perhaps the most common place where people can listen to songs before they buy them. However, posting copyrighted songs on Youtube by third parties (users) is either a grey area in terms of piracy (at best) or blatant piracy. All most all get marked by Youtube as containing content from the particular artist, and some get removed(the video stays on with <i>muted</i> audio, if original).<br />
2. <b>Music websites</b> - I will not name them, but you know what I am talking about here. There are multiple music search websites, offering mp3 search and most searched for songs along with links to material sourced from third party websites. Though the websites offering the content only act as a search engine, downloading songs that somebody else has wrongfully hosted may not be completely right.<br />
3. <b>Torrents</b> - By Torrents I mean the illegal one's. Using BitTorrent Technology as a distribution medium is something that holds a lot of promise(I think it has delivered on that promise many times over already, however it still awaits adoption by the mainstream( <a href="http://www.humblebundle.com/">The Humble Bundle</a> uses it as an additional distribution medium.). Downloading the album from a torrent the day it hits the shelves without paying a penny(unless the artists don't want a penny(see <a href="http://www.nin.com/">9 inch nails</a>!)), is not fair to the artist. <br />
<br />
I completely agree that the music industry has to change their revenue model. For starters, better rates and a better distribution system will help. For eg. giving off an album for an extremely cheap price, after it has hit certain sales targets is a good option, that way people would still be attracted to buy a certain album after the initial craze is over and the album has slid off the charts. Or try the reverse, give the first 100,000(can be 10,000 or a million too) copies of the album for an extremely low price, like 0.99$. Or make that price available for a limited time. <br />
<br />
<b>What does mflow offer that retails stores don't?</b><br />
Retail stores like itunes,amazon have that give-us-your-money appearance, where the prices are in bold, buy buttons attractive (and <a href="http://en.wikipedia.org/wiki/1-Click">patented</a>) and songs available as 30s(or 90s) previews. While shoppers might still depend on the feel of these websites to satisfy their shopping urges, I have to admit that the casual look of mflow may be much more appealing to users who visit to listen to their favorites and then buy a song they just happened upon. <br />
<br />
<b>How does mflow differ from Last.fm</b><br />
Last.fm is your new age radio. While you can select what type of songs(or group of songs) you would like to listen to, you cannot select a particular song. It appears that the kind of contracts that Last.fm has with the media bosses do not allow Last.fm to offer their users this freedom. Recntly Last.fm phased out the ability to listen to playlists and personal tags too. A lot of restrictions, yes, but age (and a lot of work by the developers) has given Last.fm the throne in the social music scene. Last.fm has a lot of active users who <i>scrobble</i> tracks from their players, an attractive feature. Last.fm clients are avilable for a range of mobile devices, multiplying its reach and appeal. I can't decide whether it's a positive thing or not, but Last.fm calls itself a music recommendation service(which it is) and does not attach a price tag to its songs, which actually means that other music services can add scrobbling tracks to Last.fm as a feature to their service and not feel that they are helping competition.<br />
<br />
<b>What is mflow?<br />
</b>Currently mflow is in beta, so what it will finally turn out to be is debatable, but as of now mflow looks like a good promise. It offers a library of 5 million songs, which can be played on demand and bought at competitive prices. As a promotional offer, they are giving away 10 tracks to users who recommend(flow, that is what they call it) tracks to their friends using the social trio(facebook, twitter and buzz(they are more of a duo IMHO)). So basically mflow is buying the best possible advertisements and making the users happy at the same time. The preview quality is probably at 64kbps or 128kbps, but not bad. The downloaded tracks are offered at 320kbps for a price of 0.99£ or 0.79£ a piece. mflow is available on HTML5 web browsers, so its future on mobile devices is pretty good. <br />
mflow does not offer an API which developers can use at this moment to make apps to extend mflow, so that is an area where mflow can do better. mflow is promising more features as time goes, and we would surely like the option to make playlists(update June 2011: Playlists: Check!), add favorites and get song suggestions. A native player for our mobile devices will also be welcome. <br />
<br />
<b>Good:</b><br />
Full Length songs<br />
Competitive pricing<br />
HTML5 compatibility<br />
Actively developing<br />
<br />
<b>Bad:<br />
</b>No API<br />
No native applications for devices <br />
UK only currently<br />
<br />
<br />
I've rambled a lot. How Spotify, Grooveshark, Rdio and others will influence the music scene is for another post.<br />
<br />
Links:<br />
1.<a href="http://www.mflow.com/">mflow.com</a><br />
2.<a href="http://www.last.fm/">Last.fm</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6382480819769005776.post-74403046576310588842010-12-28T00:39:00.000-08:002011-01-27T06:24:38.199-08:00Co.cc affiliate page labeled as Malware<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgtcaXYsGqzvNbsiiCYM0S02wzv1eBYVeEGW57TSMUPiE4mxp6-eHDrRUPZgjA6utjsujKoCSdkCOGTLOLE6DnSJDf4VnnAhKDCvw17BzaFeVfbazaQzIy3Q3AzRkn6z8UotEIiDOrKg/s1600/coccmal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgtcaXYsGqzvNbsiiCYM0S02wzv1eBYVeEGW57TSMUPiE4mxp6-eHDrRUPZgjA6utjsujKoCSdkCOGTLOLE6DnSJDf4VnnAhKDCvw17BzaFeVfbazaQzIy3Q3AzRkn6z8UotEIiDOrKg/s400/coccmal.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: -webkit-auto;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><br />
</div>Recently affiliates of co.cc might have received a "Malware Detected" page on browsing to the Referrals section of the co.cc website.The screenshot attached is from Google Chrome.<br />
<br />
<div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOQ2w69WJfF_vUcIDVtUjKk7oeeQPAv3ZwX3AF9qzjMUptLBsqkEOYZWRXgdPCGTsise638sODkRrVHe9YTDIcygOwzUYhEX6jrD76WuS2CQ73EldKq49gfV6cq_7LSgTx6yVhE8dZ9jw/s1600/lookcoccgif.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOQ2w69WJfF_vUcIDVtUjKk7oeeQPAv3ZwX3AF9qzjMUptLBsqkEOYZWRXgdPCGTsise638sODkRrVHe9YTDIcygOwzUYhEX6jrD76WuS2CQ73EldKq49gfV6cq_7LSgTx6yVhE8dZ9jw/s400/lookcoccgif.png" width="400" /></a></div><br />
On browsing to http://www.co.cc/affiliates/affiliates.php, the user is warned that the website contains content<br />
from <span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;">http://lookfeel-201002[dot]co(dot)cc </span><br />
<span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;"></span>The link in question is used in a reference to an animated gif used as a display banner to promote co.cc on publisher websites. One of the embeddable links that co.cc presents on the affiliate page also includes the link in question. Apparently the website lookfeel-201002[dot]co(dot)cc that co.cc uses to serve the banner has been labelled as a site serving malware.<br />
<br />
<div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbRDNrR9lIOOqwcpMQsZbrpdYoAVUzgTSebRO4DbQmmoE7NG360OW-5Nk14W1LGcUba3jtv3iFOKOMl4ReeJljDIIknDjRBF8OsFuwKKb2Osm_zeI46XvDyb1ikb04Z5v_a0i-R5ZbhEM/s1600/googleadvisory.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbRDNrR9lIOOqwcpMQsZbrpdYoAVUzgTSebRO4DbQmmoE7NG360OW-5Nk14W1LGcUba3jtv3iFOKOMl4ReeJljDIIknDjRBF8OsFuwKKb2Osm_zeI46XvDyb1ikb04Z5v_a0i-R5ZbhEM/s400/googleadvisory.png" width="400" /></a></div><br />
The Google Safe Browsing advisory report gives further details.It says that the site was found to host malware and infect a website 1 time in the past 90 days. It rates the website as suspicious.<br />
If publishers have been using this embed link to promote co.cc, users to their websites too might get the same warning page. The other embeddable link which is a iframe, however seems unaffected.<br />
<br />
<span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;"><b>Update:</b></span><br />
<span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;"><b>Co.cc seems to have corrected the problem, by skipping the page in question altogether. You are now taken to the login page directly and once logged in, you can see the sign up list upfront.</b></span><span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;"><b> This leaves the question,where do people get their banners from?</b></span><br />
<span class="Apple-style-span" style="color: #881280; font-family: monospace; white-space: pre-wrap;"> </span></div>Unknownnoreply@blogger.com0