<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUQMRHw_eSp7ImA9WxNUFUU.&quot;"><id>tag:blogger.com,1999:blog-28371165</id><updated>2009-11-07T16:43:05.241+08:00</updated><title type="text">Shadow Logs</title><subtitle type="html">A blog by a Information Communication Technology student from PETRONAS Technology University about what he discovered and learned. Mainly focuses on guides, howtos, and news related to Fedora, Linux, OpenSource and computing in general + some misc stuff.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.kagesenshi.org/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default?start-index=6&amp;max-results=5&amp;redirect=false&amp;v=2" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>298</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>5</openSearch:itemsPerPage><logo>http://bp0.blogger.com/_0DENAyCRujw/R4bhJxwdC_I/AAAAAAAAAIA/_qzdlgAknCM/s1600-h/hackergotchi.png</logo><link rel="self" href="http://feeds.feedburner.com/KageSenshi" type="application/atom+xml" /><feedburner:emailServiceId>KageSenshi</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;C08HSH8-fip7ImA9WxNUEUU.&quot;"><id>tag:blogger.com,1999:blog-28371165.post-6430852920122593535</id><published>2009-11-03T00:20:00.005+08:00</published><updated>2009-11-03T01:10:39.156+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T01:10:39.156+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Plone" /><category scheme="http://www.blogger.com/atom/ns#" term="Inigo" /><title>Replacing Plone Event Location field with a Google Map</title><content type="html">Want Plone Event contenttype to have use a Google Map?&lt;br /&gt;&lt;br /&gt;Use this : &lt;a href="https://dev.inigo-tech.com/svn/base/inigo.eventlocationmap/trunk/"&gt;https://dev.inigo-tech.com/svn/base/inigo.eventlocationmap/trunk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A Five product for replacing Location field in ATEvent to a Google Map field &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installing:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You will first need to deploy Products.Maps into your site first. &lt;br /&gt;&lt;br /&gt;checkout the product into your buildout src directory::&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;cd $buildoutroot/src/&lt;br /&gt;svn co \&lt;br /&gt;   https://dev.inigo-tech.com/svn/base/inigo.eventlocationmap/trunk/ \&lt;br /&gt;   inigo.eventlocationmap&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In buildout.cfg::&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  [buildout]&lt;br /&gt;  ....&lt;br /&gt;  eggs =&lt;br /&gt;       inigo.eventlocationmap&lt;br /&gt;&lt;br /&gt;  develop =&lt;br /&gt;       src/inigo.eventlocationmap&lt;br /&gt;&lt;br /&gt;  ....&lt;br /&gt;&lt;br /&gt;  [instance]&lt;br /&gt;  ....&lt;br /&gt;  zcml = inigo.eventlocationmap&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The catch? &lt;br /&gt;&lt;br /&gt;&lt;b&gt;WARNING:&lt;/b&gt; this will break your existing event content, you need to migrate their location field to use longitude/latitude tuple&lt;br /&gt;&lt;br /&gt;How to migrate? I'm still figuring it out myself.&lt;br /&gt;&lt;div style="text-align:center"&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_0DENAyCRujw/Su8PWtLsGHI/AAAAAAAAAlY/vWQlzaazgks/20091113-01.png"&gt;&lt;img src="http://lh6.ggpht.com/_0DENAyCRujw/Su8PWtLsGHI/AAAAAAAAAlY/vWQlzaazgks/s400/20091113-01.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Credits to Jarn AS for the excellent &lt;a href="http://pypi.python.org/pypi/Products.Maps"&gt;Products.Maps&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
- Izhar Firdaus -&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28371165-6430852920122593535?l=blog.kagesenshi.org'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i02IC9N4B6aYsLJLPBJOMhBAFbk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i02IC9N4B6aYsLJLPBJOMhBAFbk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i02IC9N4B6aYsLJLPBJOMhBAFbk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i02IC9N4B6aYsLJLPBJOMhBAFbk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=-Yd5_XLDUcs:KByB4uLqloc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=-Yd5_XLDUcs:KByB4uLqloc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=-Yd5_XLDUcs:KByB4uLqloc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=-Yd5_XLDUcs:KByB4uLqloc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=-Yd5_XLDUcs:KByB4uLqloc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=-Yd5_XLDUcs:KByB4uLqloc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=-Yd5_XLDUcs:KByB4uLqloc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=-Yd5_XLDUcs:KByB4uLqloc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/6430852920122593535/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=28371165&amp;postID=6430852920122593535" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/6430852920122593535?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/6430852920122593535?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KageSenshi/~3/-Yd5_XLDUcs/replacing-plone-event-location-field.html" title="Replacing Plone Event Location field with a Google Map" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00088522125475112927" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_0DENAyCRujw/Su8PWtLsGHI/AAAAAAAAAlY/vWQlzaazgks/s72-c/20091113-01.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kagesenshi.org/2009/11/replacing-plone-event-location-field.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QESHg-eip7ImA9WxNWFUo.&quot;"><id>tag:blogger.com,1999:blog-28371165.post-401820430770081084</id><published>2009-10-15T10:45:00.002+08:00</published><updated>2009-10-15T10:55:09.652+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-15T10:55:09.652+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="foss.my" /><category scheme="http://www.blogger.com/atom/ns#" term="Fedora" /><title>FOSS.My 2009 Early Bird Registration Ends TODAY!!!</title><content type="html">Heads up to everyone&lt;br /&gt;&lt;br /&gt;&lt;a href="http://foss.my/2009"&gt;FOSS.My 2009&lt;/a&gt; Early Bird Registration prices are ending TODAY!!&lt;br /&gt;&lt;br /&gt;If you havent registered, &lt;a href="http://foss.my/2009/registration-overview/"&gt;register now&lt;/a&gt; or you will lose the chance to register on these packages&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th style="width:100px"&gt;Bare Bones Price&lt;/th&gt;&lt;td&gt;RM 20.00&lt;/td&gt;&lt;/tr&gt;&lt;th&gt;Hobbyist Price&lt;/th&gt;&lt;td&gt;RM 60.00&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So what are you waiting for? &lt;a href="http://foss.my/2009/registration-overview/"&gt;REGISTER NOW&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
- Izhar Firdaus -&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28371165-401820430770081084?l=blog.kagesenshi.org'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BpAAfE4LHGFvamp6tz5dKV7v8tg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BpAAfE4LHGFvamp6tz5dKV7v8tg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BpAAfE4LHGFvamp6tz5dKV7v8tg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BpAAfE4LHGFvamp6tz5dKV7v8tg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=ayD4d3FMRK4:d08vvmz5PMA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=ayD4d3FMRK4:d08vvmz5PMA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=ayD4d3FMRK4:d08vvmz5PMA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=ayD4d3FMRK4:d08vvmz5PMA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=ayD4d3FMRK4:d08vvmz5PMA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=ayD4d3FMRK4:d08vvmz5PMA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=ayD4d3FMRK4:d08vvmz5PMA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=ayD4d3FMRK4:d08vvmz5PMA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/401820430770081084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=28371165&amp;postID=401820430770081084" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/401820430770081084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/401820430770081084?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KageSenshi/~3/ayD4d3FMRK4/fossmy-2009-early-bird-registration.html" title="FOSS.My 2009 Early Bird Registration Ends TODAY!!!" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00088522125475112927" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kagesenshi.org/2009/10/fossmy-2009-early-bird-registration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUASH05cSp7ImA9WxNQGEs.&quot;"><id>tag:blogger.com,1999:blog-28371165.post-3771848966329174666</id><published>2009-09-25T14:11:00.009+08:00</published><updated>2009-09-25T15:20:49.329+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-25T15:20:49.329+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Devices" /><category scheme="http://www.blogger.com/atom/ns#" term="Fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="Misc" /><category scheme="http://www.blogger.com/atom/ns#" term="Geek Log" /><title>Genius G-Pen 4500 and Fedora</title><content type="html">Just bought a Genius G-Pen 4500 digitizer tablet for myself. Mainly for drawing simple sketches and diagrams. Got it for MYR160 (~=USD50), which is relatively cheap compared to other tablets (Wacom and Genius) I found at LowYat plaza which averages at MYR400-800 (~=USD115-230). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0DENAyCRujw/Srxg7bXNHTI/AAAAAAAAAlI/nQyVjWisLOc/s1600-h/G-Pen+4500_2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://1.bp.blogspot.com/_0DENAyCRujw/Srxg7bXNHTI/AAAAAAAAAlI/nQyVjWisLOc/s320/G-Pen+4500_2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5385285828501904690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The driver for the tablet is not available in the Fedora and RPMFusion repos, so I had to grab the sources from &lt;a href="http://code.google.com/p/linuxgenius/"&gt;LinuxGenius GoogleCode&lt;/a&gt; page and compile it. (I've put together a RPM here : &lt;a href="http://izhar.fedorapeople.org/wizardpen/"&gt;http://izhar.fedorapeople.org/wizardpen/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;After installation of the driver, a HAL FDI configuration is required for it to work. Here's the default one I'm using for this tablet. (Save it as /etc/hal/fdi/policy/99-wizardpen.fdi)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="ISO-8859-1" ?&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;&amp;lt;device&amp;gt;&lt;br /&gt;&amp;lt;!-- This MUST match with the name of your tablet --&amp;gt;&lt;br /&gt;&amp;lt;match key="info.product" contains="UC-LOGIC Tablet WP5540U"&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_driver" type="string"&amp;gt;wizardpen&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.SendCoreEvents" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.TopX" type="string"&amp;gt;0&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.TopY" type="string"&amp;gt;0&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_identifier" type="string"&amp;gt;stylus&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.BottomX" type="string"&amp;gt;32739&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.BottomY" type="string"&amp;gt;32745&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.MaxX" type="string"&amp;gt;32739&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;merge key="input.x11_options.MaxY" type="string"&amp;gt;32745&amp;lt;/merge&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(copy paste that or download it here : &lt;a href="http://izhar.fedorapeople.org/wizardpen/99-wizardpen.fdi"&gt;99-wizardpen.fdi&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Afterward restart Xorg, and connect the tablet, and it worked quite easily.&lt;br /&gt;&lt;br /&gt;Reference: &lt;a href="http://digitalbluewave.blogspot.com/2008/10/genius-wizardpen-with-intrepid-ibex.html"&gt;http://digitalbluewave.blogspot.com/2008/10/genius-wizardpen-with-intrepid-ibex.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Aspect Ratio&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;By default, the driver utilizes the whole tablet for input, stretching X and Y axis to match the screen shape, thus breaking the aspect ratio. Might still be ok on small screens, but on dualscreen, the ratio stretched too far causing difficulty to draw/write. &lt;br /&gt;&lt;br /&gt;Unlike the Wacom driver which have this feature by default, LinuxGenius doesnt have it, but the options in the FDI is enough to allow us to configure it manually. I've written a simple script for this (get it here: &lt;a href="http://izhar.fedorapeople.org/wizardpen/wizardpen-ratiocalc.py"&gt;wizardpen-ratiocalc.py&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;Edit the script and change the resolution value, and run it. The script will output a fdi config that uses the aspect ratio of your screen.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The result?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0DENAyCRujw/Srxl7FagQ7I/AAAAAAAAAlQ/I5VHnhoqRLs/s1600-h/sketch.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 222px;" src="http://3.bp.blogspot.com/_0DENAyCRujw/Srxl7FagQ7I/AAAAAAAAAlQ/I5VHnhoqRLs/s320/sketch.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5385291320168301490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sketched on &lt;a href="http://www.inkscape.org"&gt;Inkscape&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;My initial overall view of this tablet?. Cheap, relatively easy enough to get it working based on my requirement, so I guess this should be good enough for my purposes.&lt;br /&gt;&lt;br /&gt;^-^&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
- Izhar Firdaus -&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28371165-3771848966329174666?l=blog.kagesenshi.org'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ggDsEGnylflw8VxmWbXzc1fncwM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggDsEGnylflw8VxmWbXzc1fncwM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ggDsEGnylflw8VxmWbXzc1fncwM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggDsEGnylflw8VxmWbXzc1fncwM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=bfLnbyxk8A0:Eq8OvQGk_2Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=bfLnbyxk8A0:Eq8OvQGk_2Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=bfLnbyxk8A0:Eq8OvQGk_2Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=bfLnbyxk8A0:Eq8OvQGk_2Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=bfLnbyxk8A0:Eq8OvQGk_2Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=bfLnbyxk8A0:Eq8OvQGk_2Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=bfLnbyxk8A0:Eq8OvQGk_2Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=bfLnbyxk8A0:Eq8OvQGk_2Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/3771848966329174666/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=28371165&amp;postID=3771848966329174666" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/3771848966329174666?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/3771848966329174666?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KageSenshi/~3/bfLnbyxk8A0/genius-g-pen-4500-and-fedora.html" title="Genius G-Pen 4500 and Fedora" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00088522125475112927" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_0DENAyCRujw/Srxg7bXNHTI/AAAAAAAAAlI/nQyVjWisLOc/s72-c/G-Pen+4500_2.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.kagesenshi.org/2009/09/genius-g-pen-4500-and-fedora.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYCRXo-eSp7ImA9WxNQGEs.&quot;"><id>tag:blogger.com,1999:blog-28371165.post-7169068034253086205</id><published>2009-09-15T23:00:00.014+08:00</published><updated>2009-09-25T15:19:24.451+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-25T15:19:24.451+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Devices" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Geek Log" /><title>"CSL G2" Android Phone ??? - New Toy in Town?</title><content type="html">&lt;b&gt;UPDATE&lt;/b&gt;: I have checked out this phone at a shop just recently, apparently, its only a UI imitation (which is not even close to the real thing, didnt see any tango icons). Guess I'll have to wait for LG or some company to release a low cost model, or until HTC reduce their pricing. (and note to anybody from CSL who might read this, Google Android is not just the UI .. its the WHOLE OS , and its Free/OpenSource, just grab it from &lt;a href="http://source.android.com/"&gt;http://source.android.com/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cslcare.com"&gt;CSL&lt;/a&gt;, a Malaysian phone brand looks like just had a new toy in town.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0DENAyCRujw/Sq-s4DXGKCI/AAAAAAAAAk4/qHXZRmWasg4/s1600-h/cslg2-01.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_0DENAyCRujw/Sq-s4DXGKCI/AAAAAAAAAk4/qHXZRmWasg4/s320/cslg2-01.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5381710158705862690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;GEOGLE?? is that a typo or is that an immitation brand?&lt;br /&gt;&lt;br /&gt;&lt;s&gt;MYR 699 ~= USD 200. &lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: An anonymous commenter pointed to a page in &lt;a href="http://www.cslcare.com/components/com_exposeprive/showpic.html?img=expose/img/alb_6/img_1252904001_904_lg.jpg&amp;caption=49PG28&amp;date=&amp;location="&gt;CSL's own website regarding the phone&lt;/a&gt;. Price stated there is apparently cheaper, MYR499 ~= USD145&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0DENAyCRujw/Sq-s4uJMD6I/AAAAAAAAAlA/LmUhI9WXR8A/s1600-h/cslg2-02.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_0DENAyCRujw/Sq-s4uJMD6I/AAAAAAAAAlA/LmUhI9WXR8A/s320/cslg2-02.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5381710170190253986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While the name is a straight copying of HTC Magic's original name, the product looks interesting. &lt;s&gt;No info could be found at their website, probably they didn't realize where the people who looks for Android phones hang around at. &lt;/s&gt; &lt;a href="http://www.cslcare.com/components/com_exposeprive/showpic.html?img=expose/img/alb_6/img_1252904001_904_lg.jpg&amp;caption=49PG28&amp;date=&amp;location="&gt;Check it out here (page in Malay)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perhaps this is the first arrival of affordable lines of Android phones.&lt;br /&gt;&lt;br /&gt;Anybody know more info about it?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;Specification&lt;br /&gt;&lt;br /&gt;* Dual SIM support&lt;br /&gt;* 240x400 resolution screen&lt;br /&gt;* GSM 900/1800&lt;br /&gt;* Size: 113x56x23mm &lt;br /&gt;* Weight: 120g&lt;br /&gt;* Standby time: 120hrs+&lt;br /&gt;* On-Call time: 2.5hrs&lt;br /&gt;* Camera, FM Radio, Bluetooth&lt;br /&gt;* (optional) Islamic features : Al-Quran, Athan, Digital Compass&lt;br /&gt;&lt;br /&gt;And the usual Android software features I guess&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
- Izhar Firdaus -&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28371165-7169068034253086205?l=blog.kagesenshi.org'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W-ISHbWem4e-PuOmuyfydhmcZE0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-ISHbWem4e-PuOmuyfydhmcZE0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W-ISHbWem4e-PuOmuyfydhmcZE0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-ISHbWem4e-PuOmuyfydhmcZE0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=4JR2EXgBkT8:IYH_P13LyO4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=4JR2EXgBkT8:IYH_P13LyO4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=4JR2EXgBkT8:IYH_P13LyO4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=4JR2EXgBkT8:IYH_P13LyO4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=4JR2EXgBkT8:IYH_P13LyO4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=4JR2EXgBkT8:IYH_P13LyO4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=4JR2EXgBkT8:IYH_P13LyO4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=4JR2EXgBkT8:IYH_P13LyO4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/7169068034253086205/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=28371165&amp;postID=7169068034253086205" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/7169068034253086205?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/7169068034253086205?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KageSenshi/~3/4JR2EXgBkT8/csl-g2-android-phone-new-toy-in-town.html" title="&quot;CSL G2&quot; Android Phone ??? - New Toy in Town?" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00088522125475112927" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_0DENAyCRujw/Sq-s4DXGKCI/AAAAAAAAAk4/qHXZRmWasg4/s72-c/cslg2-01.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><feedburner:origLink>http://blog.kagesenshi.org/2009/09/csl-g2-android-phone-new-toy-in-town.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcCR304fip7ImA9WxNRGUw.&quot;"><id>tag:blogger.com,1999:blog-28371165.post-9164315093597362569</id><published>2009-09-14T16:21:00.004+08:00</published><updated>2009-09-14T16:47:46.336+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-14T16:47:46.336+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Plone" /><category scheme="http://www.blogger.com/atom/ns#" term="Grok" /><category scheme="http://www.blogger.com/atom/ns#" term="Zope" /><category scheme="http://www.blogger.com/atom/ns#" term="Python" /><title>Grokking Grok - II</title><content type="html">Grok, like Plone uses the Zope way of storing data - &lt;code&gt;Persistence&lt;/code&gt;, somewhat like 'pickling' in Python. &lt;br /&gt;&lt;br /&gt;All instance of objects are treated not as tables like in frameworks such as &lt;a href="http://www.turbogears.org/"&gt;TurboGears&lt;/a&gt;, but as normal runtime class instance objects. There are no need to think of SQL, neither designing a database. Just dump the objects into the ZODB. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Base Model Stereotype&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The are 3 main model stereotype in Grok,  &lt;code&gt;grok.Model&lt;/code&gt; , &lt;code&gt;grok.Container&lt;/code&gt; , &lt;code&gt;grok.Application&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;grok.Model&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is the stereotype for a persistence class. Classes that inherits this stereotype are addable and can store persistent data. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;grok.Container&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This stereotype give a class a folder-like ability to store children. Inherit from this class if you want to create objects which can store another object.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;grok.Application&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is the stereotype of a persistence class which can be added at the root of the Zope3 site. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Layout&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Siteroot may contain Applications, Applications may contain both Containers and Models, Containers may contain both Containers and Models.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Defining a simple Grok Model&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Assumes you've created a project called MyProject. Edit &lt;code&gt;$buildout/src/myproject/app.py&lt;/code&gt;. You should see something like this&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;import grok&lt;br /&gt;&lt;br /&gt;class MyProject(grok.Application, grok.Container):&lt;br /&gt;   pass&lt;br /&gt;&lt;br /&gt;class Index(grok.View):&lt;br /&gt;   pass&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Lets create a simple &lt;code&gt;grok.Container&lt;/code&gt; model which called &lt;code&gt;MyFolder&lt;/code&gt; and a normal model called &lt;code&gt;MyDocument&lt;/code&gt;. Add these into &lt;code&gt;app.py&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class MyFolder(grok.Container,grok.Model):&lt;br /&gt;   pass&lt;br /&gt;&lt;br /&gt;class MyDocument(grok.Model):&lt;br /&gt;   pass&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Done.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Writing a simple AddForm for adding objects&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Grok provides some handy classes for automatically generating forms which based on &lt;code&gt;zope.forms&lt;/code&gt;. So you can quickly generate a form using it. Lets create a form to add MyFolder into MyProject.&lt;br /&gt;&lt;br /&gt;First, as we are going to have multiple Zope Views (forms are considered as views) in this app.py, Index class need to be modified a bit.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class Index(grok.View):&lt;br /&gt;   grok.context(MyProject)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;By default, The context will be acquired from the only Model available in the .py file. But as this example have multiple models in the .py file, that need to be defined.&lt;br /&gt;&lt;br /&gt;Next, define the fields which we want MyFolder to have (note: put this code above MyFolder class definition).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;from zope.interface import Interface&lt;br /&gt;from zope import schema&lt;br /&gt;&lt;br /&gt;class IMyFolder(Interface):&lt;br /&gt;   name = schema.TextLine(title=u'Object Name')&lt;br /&gt;   title = schema.TextLine(title=u'Title')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, instead of adding the attributes into the MyFolder class, we created an Interface. Next, make MyFolder implement the Interface&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class MyFolder(grok.Container,grok.Model):&lt;br /&gt;   grok.implements(IMyFolder)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Afterward, lets create a form&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class MyFolderAddForm(grok.AddForm):&lt;br /&gt;   grok.context(MyProject)&lt;br /&gt;&lt;br /&gt;   form_fields = grok.AutoFields(IMyFolder)&lt;br /&gt;&lt;br /&gt;   @grok.action(u'Add MyFolder')&lt;br /&gt;   def add(self,**data):&lt;br /&gt;       mf = MyFolder()&lt;br /&gt;       self.applyData(mf,**data)&lt;br /&gt;       name = data['name']&lt;br /&gt;       self.context[name] = mf&lt;br /&gt;       self.redirect(self.url(mf))&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Done. Up to this point, you now have an application called MyProject, and an addable model called MyFolder. Now to adjust the templates.&lt;br /&gt;&lt;br /&gt;Edit &lt;code&gt;$buildout/src/myproject/app_templates/index.pt&lt;/code&gt; and replace the template with this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Welcome to My Application&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;a href="myfolderaddform"&amp;gt;Add MyFolder&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Creating a View for a Model&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;MyFolder at the moment does not have a default view template. So lets create one. Create a View by adding this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class MyFolderView(grok.View): &lt;br /&gt;   grok.context(MyFolder)&lt;br /&gt;   grok.name('index')&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then edit &lt;code&gt;$buildout/src/myproject/app_templates/myfolderview.pt&lt;/code&gt;, and put this as the template:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;  This is a new MyFolder object called &amp;lt;tal:name replace="context/name"/&amp;gt;&lt;br /&gt;    with title '&amp;lt;tal:name replace="context/title"/&amp;gt;'&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Done. You should now be able to add an application called MyProject, and add a MyFolder in it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Running you application&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Start Zope3&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$buildout/bin/zopectl fg&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Open http://localhost:8080/. &lt;br /&gt;&lt;br /&gt;&lt;a style="text-align:center" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0DENAyCRujw/Sq36bDqB76I/AAAAAAAAAkw/baxHLGmWhY4/s1600-h/2009091401.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 217px;" src="http://1.bp.blogspot.com/_0DENAyCRujw/Sq36bDqB76I/AAAAAAAAAkw/baxHLGmWhY4/s320/2009091401.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5381232472522616738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add a MyProject, name it as testapp and open it. &lt;br /&gt;&lt;br /&gt;&lt;a style="text-align:center" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36alUymvI/AAAAAAAAAko/FjOhnU1bNhA/s1600-h/2009091402.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 70px;" src="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36alUymvI/AAAAAAAAAko/FjOhnU1bNhA/s320/2009091402.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5381232464380467954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click the "Add MyFolder" link. &lt;br /&gt;&lt;br /&gt;&lt;a style="text-align:center" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36Z0MBpWI/AAAAAAAAAkg/h4Vvx4TkBmY/s1600-h/2009091403.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 116px;" src="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36Z0MBpWI/AAAAAAAAAkg/h4Vvx4TkBmY/s320/2009091403.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5381232451190367586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add a new MyFolder object, name it as testfolder, afterward you should see this&lt;br /&gt;&lt;br /&gt;&lt;a style="text-align:center" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36ZWGvkQI/AAAAAAAAAkY/1TCiOvF_aJU/s1600-h/2009091404.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 30px;" src="http://4.bp.blogspot.com/_0DENAyCRujw/Sq36ZWGvkQI/AAAAAAAAAkY/1TCiOvF_aJU/s320/2009091404.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5381232443115147522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thats it for now. Try to add an AddForm for MyDocument by yourself.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More details?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Read the official tutorial here : &lt;a href="http://grok.zope.org/doc/current/tutorial.html"&gt;http://grok.zope.org/doc/current/tutorial.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zope TAL Spec : &lt;a href="http://wiki.zope.org/ZPT/TALSpecification14"&gt;http://wiki.zope.org/ZPT/TALSpecification14&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zope Component Architecture : &lt;a href="http://www.muthukadan.net/docs/zca.html"&gt;http://www.muthukadan.net/docs/zca.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Grok/Zope Forms : &lt;a href="http://grok.zope.org/documentation/phc_topic_area?topic=Forms"&gt;http://grok.zope.org/documentation/phc_topic_area?topic=Forms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have fun&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
- Izhar Firdaus -&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28371165-9164315093597362569?l=blog.kagesenshi.org'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PcIQhQqd-sbUGyo2k3XkZ8Y6BKo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PcIQhQqd-sbUGyo2k3XkZ8Y6BKo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PcIQhQqd-sbUGyo2k3XkZ8Y6BKo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PcIQhQqd-sbUGyo2k3XkZ8Y6BKo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=WC_B8JXMM8o:noyZE8-TOuw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=WC_B8JXMM8o:noyZE8-TOuw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=WC_B8JXMM8o:noyZE8-TOuw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=WC_B8JXMM8o:noyZE8-TOuw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=WC_B8JXMM8o:noyZE8-TOuw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=WC_B8JXMM8o:noyZE8-TOuw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KageSenshi?a=WC_B8JXMM8o:noyZE8-TOuw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KageSenshi?i=WC_B8JXMM8o:noyZE8-TOuw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kagesenshi.org/feeds/9164315093597362569/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=28371165&amp;postID=9164315093597362569" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/9164315093597362569?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/28371165/posts/default/9164315093597362569?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KageSenshi/~3/WC_B8JXMM8o/grokking-grok-ii.html" title="Grokking Grok - II" /><author><name>KageSenshi</name><uri>http://www.blogger.com/profile/00019993555432609309</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00088522125475112927" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_0DENAyCRujw/Sq36bDqB76I/AAAAAAAAAkw/baxHLGmWhY4/s72-c/2009091401.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kagesenshi.org/2009/09/grokking-grok-ii.html</feedburner:origLink></entry></feed>
