<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5034408335821472383</id><updated>2011-11-27T16:59:12.166-08:00</updated><category term='Security'/><category term='django'/><title type='text'>The Journey Note</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-2725848182491389343</id><published>2011-04-04T19:05:00.000-07:00</published><updated>2011-04-04T19:15:07.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>Langkah2 install Apache2 SSL / https di ubuntu</title><content type='html'>1. sudo apt-get install ssl-cert&lt;br /&gt;2. sudo mkdir /etc/apache2/ssl&lt;br /&gt;3. sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem&lt;br /&gt;4. sudo a2enmod ssl&lt;br /&gt;5. sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl&lt;br /&gt;6. sudo vim /etc/apache2/sites-available/ssl&lt;br /&gt;   Tambahkan script berikut pada awal file:&lt;br /&gt;   ----------------------&lt;br /&gt;   NameVirtualHost *:443&lt;br /&gt;   &lt;VirtualHost *:443&gt;&lt;br /&gt;        ServerAdmin webmaster@localhost&lt;br /&gt;&lt;br /&gt;        SSLEngine On&lt;br /&gt;        SSLCertificateFile /etc/apache2/ssl/apache.pem&lt;br /&gt;        ...&lt;br /&gt;   ----------------------&lt;br /&gt;7. sudo a2ensite ssl&lt;br /&gt;8. sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;catatan: pada langkah 3 (tiga) sertifikat bisa kita buat sendiri atau ambil dari pihak ketiga&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-2725848182491389343?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/2725848182491389343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=2725848182491389343&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/2725848182491389343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/2725848182491389343'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2011/04/langkah2-install-apache2-ssl-https-di.html' title='Langkah2 install Apache2 SSL / https di ubuntu'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-4627791649923405030</id><published>2010-06-23T01:16:00.000-07:00</published><updated>2011-04-04T19:18:30.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Mengenal Django Web Framework</title><content type='html'>Generator gw baru sebagiannya jika dibandingkan dengan framework ini. It's cool, pas pertama nyoba...menurut gw sih asik, yah masing2 orang lah.&lt;br /&gt;begini nih oprekan gw:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Instalasi&lt;/span&gt;&lt;br /&gt;kalo di ubuntu begini: sudo apt-get install python-django&lt;br /&gt;kalo di window ke websitenya dulu http://www.djangoproject.com/ trus download latest releasenya&lt;br /&gt;di dos ketik python setup.py install. Selengkapnya di websitenya juga ada cara2nya&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Memulai Koding&lt;/span&gt;&lt;br /&gt;$django-admin startproject perpustakaan&lt;br /&gt;$cd perpustakaan&lt;br /&gt;$python manage.py runserver&lt;br /&gt;(webserver jalan)&lt;br /&gt;di web browser ketik: 127.0.0.1:8000&lt;br /&gt;Kalo ada tulisan &lt;span style="font-weight:bold;"&gt;It Worked&lt;/span&gt;, maka kita berhasil membuat project&lt;br /&gt;matikan dulu webservernya dengan Ctrl-C&lt;br /&gt;pertama2 mari kita edit settings.py:&lt;br /&gt;...&lt;br /&gt;DATABASE_ENGINE = 'sqlite3'&lt;br /&gt;DATABASE_NAME = 'perpus.db'&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MTV&lt;/span&gt;&lt;br /&gt;MTV for Models Templates Views&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-4627791649923405030?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/4627791649923405030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=4627791649923405030&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/4627791649923405030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/4627791649923405030'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2010/06/mengenal-django-web-framework.html' title='Mengenal Django Web Framework'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-9196130515615468079</id><published>2009-10-07T11:51:00.000-07:00</published><updated>2009-10-07T12:10:14.469-07:00</updated><title type='text'>Login di GRAILS menggunakan AcegiSecurity</title><content type='html'>Membuat keamanan di grails sepanjang pengetahuan gw ada 3 yaitu, &lt;br /&gt;1. custom security, keamanan aplikasi yang kita buat sendiri - RIBET&lt;br /&gt;2. menggunakan plugin JSecurity - SEDANG&lt;br /&gt;3. menggunakan plugin AcegiSecurity dari Spring - FUN&lt;br /&gt;Kali ini gw akan ceritakan pengalaman menggunakan Acegi.&lt;br /&gt;Dimulai dari membuat aplikasi bookstore, begini ceritanya.&lt;br /&gt;&lt;br /&gt;1.  &gt; grails create-app bookstore&lt;br /&gt; &gt; cd bookstore&lt;br /&gt;2. &gt; grails install-plugin acegi&lt;br /&gt;3. &gt; grails create-auth-domains User Role Requestmap&lt;br /&gt;4.  &gt; grails generate-manager&lt;br /&gt;5. &gt; grails generate-registration&lt;br /&gt;Buat contoh halaman yang akan diakses&lt;br /&gt;6. &gt; grails create-controller Secure&lt;br /&gt; Buka file SecureController.groovy (di folder grails-app/controller)&lt;br /&gt; edit file nya seperti berikut:&lt;br /&gt; &lt;br /&gt; class SecureController {&lt;br /&gt;&lt;br /&gt;  def index = {&lt;br /&gt;   render 'Secure access only'&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;7. &gt; grails run-app&lt;br /&gt;&lt;br /&gt;Untuk test, ketik alamat berikut: http://localhost:8080/bookstore/secure&lt;br /&gt;maka akan terlihat bahwa halaman tersebut belum diamankan.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s9g60tmbe54/SsznSusN63I/AAAAAAAAADI/LrIBES2kZe4/s1600-h/secure.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 203px; height: 92px;" src="http://2.bp.blogspot.com/_s9g60tmbe54/SsznSusN63I/AAAAAAAAADI/LrIBES2kZe4/s320/secure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389937163012795250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Untuk mengamankan halaman tersebut, coba bikin role dulu di: http://localhost:8080/bookstore/role/create&lt;br /&gt;dan buat role untuk admin.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s9g60tmbe54/SszkxJiM54I/AAAAAAAAACo/iKOyW0eqpUA/s1600-h/CreateRole.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 308px;" src="http://3.bp.blogspot.com/_s9g60tmbe54/SszkxJiM54I/AAAAAAAAACo/iKOyW0eqpUA/s320/CreateRole.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389934387079735170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;lalu informasikan halaman yang akan di akses oleh role tersebut di: http://localhost:8080/bookstore/requestmap/create&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s9g60tmbe54/SszlNTb_RtI/AAAAAAAAACw/hnxgOluoJCI/s1600-h/CreateRequestmap.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://3.bp.blogspot.com/_s9g60tmbe54/SszlNTb_RtI/AAAAAAAAACw/hnxgOluoJCI/s320/CreateRequestmap.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389934870774367954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;terakhir kita buat user dengan role admin yang akan mengakses halaman tersebut:&lt;br /&gt;http://localhost:8080/bookstore/user/create&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s9g60tmbe54/SszlfvIwkoI/AAAAAAAAAC4/aP4pV1xChyI/s1600-h/CreateUser.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 190px; height: 320px;" src="http://1.bp.blogspot.com/_s9g60tmbe54/SszlfvIwkoI/AAAAAAAAAC4/aP4pV1xChyI/s320/CreateUser.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389935187447550594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;coba akses kembali halaman secure tadi http://localhost:8080/bookstore/secure &lt;br /&gt;maka kita harus login dulu sebelum bisa mengakses halaman tersebut.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s9g60tmbe54/Sszl2kcSW0I/AAAAAAAAADA/au0m615tshU/s1600-h/login.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 234px;" src="http://3.bp.blogspot.com/_s9g60tmbe54/Sszl2kcSW0I/AAAAAAAAADA/au0m615tshU/s320/login.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389935579713657666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-9196130515615468079?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/9196130515615468079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=9196130515615468079&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/9196130515615468079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/9196130515615468079'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2009/10/login-di-grails-menggunakan.html' title='Login di GRAILS menggunakan AcegiSecurity'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s9g60tmbe54/SsznSusN63I/AAAAAAAAADI/LrIBES2kZe4/s72-c/secure.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-3311777411268415044</id><published>2009-04-21T22:00:00.001-07:00</published><updated>2009-04-22T00:08:54.433-07:00</updated><title type='text'>Web Framework Sederhana - CherryPy</title><content type='html'>Pernah lihat web framework sesederhana ini ngga (plus webserver dan builtin tools sekalian ada didalam cherrypy)?&lt;br /&gt;----------------------------------------&lt;br /&gt;import cherrypy&lt;br /&gt;&lt;br /&gt;class HelloWorld:&lt;br /&gt;     @cherrypy.expose&lt;br /&gt;      def index(self):&lt;br /&gt;             return "Hello World!"&lt;br /&gt;&lt;br /&gt;cherrypy.quickstart(HelloWorld())&lt;br /&gt;----------------------------------------&lt;br /&gt;- Jalankan program dengan perintah: python HelloWorld.py (jika disimpan dengan nama tsb.)&lt;br /&gt;- Buka browser dan ketik alamat: http://localhost:8080&lt;br /&gt;- Selengkapnya, silakan kunjungi websitenya: cherrypy.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-3311777411268415044?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/3311777411268415044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=3311777411268415044&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/3311777411268415044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/3311777411268415044'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2009/04/web-framework-sederhana-cherrypy.html' title='Web Framework Sederhana - CherryPy'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-2680962860084122199</id><published>2008-01-15T02:03:00.000-08:00</published><updated>2008-01-15T04:11:31.289-08:00</updated><title type='text'>Freedom Experience</title><content type='html'>Before I know Linux, I used to code in &lt;span style="font-weight:bold;"&gt;M$W%*%!?&lt;/span&gt; with &lt;span style="font-weight:bold;"&gt;&amp;*76V&amp;@B&lt;/span&gt; or &lt;span style="font-weight:bold;"&gt;D#4)el*7p%%h(i).&lt;/span&gt; At that time I didn't knew that they were not free and it's illegal to use without buying it.&lt;br /&gt;&lt;br /&gt;IMHO, programmers are half artist and half magician. Coding with those IDE with components that I couldn't see why it behave like that made me frustrated. I'm not free...my mind is stuck, I don't know what to do anymore. The SQL statement seems weird in the IDE. I run through sleepless nights, But still I failed to figure it out.&lt;br /&gt;&lt;br /&gt;Well that is past, I forgive them all. I think it's 2001, when I was introduced to Linux by a friend named Indrio. It was hard to install Linux at that time. But now it is easy and have lots of variation. &lt;br /&gt;&lt;br /&gt;Lucky for us, we got a job using PHP, based on Linux OS. Creating almost an ERP application with our own mind.&lt;br /&gt;&lt;br /&gt;It was awesome. I'm free. I expressed everything I had in mind. I'm not a pirate anymore, and I don't busy to erase viruses and update the eraser which is pirated either.&lt;br /&gt;&lt;br /&gt;Thanks to GNU/Linux. Thanks to the FSF. And thanks to GOD, the Lord of Science.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-2680962860084122199?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/2680962860084122199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=2680962860084122199&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/2680962860084122199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/2680962860084122199'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2008/01/freedom-experience.html' title='Freedom Experience'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-6873040420976300847</id><published>2008-01-13T21:31:00.000-08:00</published><updated>2008-01-15T04:13:30.742-08:00</updated><title type='text'>Generator Continued...</title><content type='html'>My boss at the office told me, why should I bothered creating my own generator.&lt;br /&gt;Well I think the answer is:&lt;br /&gt;1. There's no learning curve (with all the unknown failure because of our own mistake or system bugs)&lt;br /&gt;2. I can customize it at will&lt;br /&gt;3. It is made in Indonesia (rare thing in this country)&lt;br /&gt;4. It helps me to satisfy my customer&lt;br /&gt;5. And make my children happy&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s9g60tmbe54/R4sZJoPmoeI/AAAAAAAAAAY/SQFj92Lc4bk/s1600-h/DSC02699.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_s9g60tmbe54/R4sZJoPmoeI/AAAAAAAAAAY/SQFj92Lc4bk/s320/DSC02699.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5155241851668046306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The generator is now completed but I wont share it because it's just the same as previous codes. I only add a little spices here and there.&lt;br /&gt;&lt;br /&gt;6. I can implemented the generator to any language or frameworks which I would use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-6873040420976300847?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/6873040420976300847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=6873040420976300847&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/6873040420976300847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/6873040420976300847'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2008/01/generator-continued.html' title='Generator Continued...'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s9g60tmbe54/R4sZJoPmoeI/AAAAAAAAAAY/SQFj92Lc4bk/s72-c/DSC02699.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-3280844285252947208</id><published>2007-12-30T18:44:00.000-08:00</published><updated>2008-06-19T00:31:02.742-07:00</updated><title type='text'>Code Generator Apps</title><content type='html'>I've developed systems all these years (since 1999) using various programming languages (VB, Delphi, PHP,  Java Swing, J2EE, python, ruby). It is exciting to discover new system or new programming techniques or even new frameworks. But when it comes to the real job, you have to decide which technology is suite for you. Since human (mostly) is not a patient being, so I need a fast programing technique to quickly produce the requested system application.&lt;br /&gt;&lt;br /&gt;Back in 2005 I created generator for Java Swing using J2SE. The result is fast. I can develop a desktop based application in 5 minutes or less. But writing the generator is painful, it was a long codes.&lt;br /&gt;&lt;br /&gt;Today I created a generator using ruby language for php web based application. Even though it's not complete yet...but I'm satisfied because writing the generator codes is shorter, faster and the result is much faster. I'm newbie in Ruby, but I think I'm loving it.&lt;br /&gt;&lt;br /&gt;Here is the code snippet:&lt;br /&gt;********************************************&lt;br /&gt;require 'mysql'&lt;br /&gt;&lt;br /&gt;#puts "Enter host: " &lt;br /&gt;#host = gets.chomp!&lt;br /&gt;#puts "Enter username: " &lt;br /&gt;#user = gets.chomp!&lt;br /&gt;#puts "Enter password: " &lt;br /&gt;#pass = gets.chomp!&lt;br /&gt;#puts "Enter database: " &lt;br /&gt;#db = gets.chomp!&lt;br /&gt;puts "Generating files..."&lt;br /&gt;&lt;br /&gt;conn = Mysql::new("localhost", "ruby", "", "clinic")&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt; res = conn.query("SHOW TABLES");&lt;br /&gt; res.each do |row| &lt;br /&gt;  &lt;br /&gt;  view = File.new("generated/"+row[0]+"_view.php", "w")&lt;br /&gt;  form = File.new("generated/"+row[0]+"_form.php", "w")&lt;br /&gt;  action = File.new("generated/"+row[0]+"_action.php", "w")&lt;br /&gt;  &lt;br /&gt;  #Creating View++++++++++++++++++++++++++++++++++++&lt;br /&gt;  view.write("&amp;lt;? include('header.php'); ?&amp;gt;\n\n") &lt;br /&gt;  view.write("&lt;br /&gt; &amp;lt;table width=\"100%\" class=\"frm\"&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&amp;lt;td class=\"pagetitle\"&amp;gt;"+row[0]+"&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;  &amp;lt;p align=\"left\"&amp;gt;&amp;lt;a href=\""+row[0]+"_form.php?comm=create\"&amp;gt;Data Baru&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;table class=\"frm\" align=\"left\"&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;No.&amp;lt;/th&amp;gt;")&lt;br /&gt;  res2 = conn.query("DESC "+row[0])&lt;br /&gt;  res2.each do |row2|&lt;br /&gt;      if row2[0]!="id":&lt;br /&gt;   view.write("&amp;lt;th&amp;gt;"+row2[0]+"&amp;lt;/th&amp;gt;")&lt;br /&gt;      end&lt;br /&gt;  end&lt;br /&gt;  view.write("&amp;lt;th&amp;gt;&amp;nbsp;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;?&lt;br /&gt;  include(\"connection.php\");&lt;br /&gt;  $sql = \"SELECT * FROM "+row[0]+"\";&lt;br /&gt;  $query = mysql_query($sql);&lt;br /&gt;  $row = mysql_fetch_row($query);&lt;br /&gt;  $count = 1;&lt;br /&gt;  do{&lt;br /&gt;      list(")&lt;br /&gt;   res2 = conn.query("DESC "+row[0])&lt;br /&gt;   res2.each do |row2|&lt;br /&gt;    view.write("$"+row2[0]+",")&lt;br /&gt;   end&lt;br /&gt;   view.write(")=$row;&lt;br /&gt;   echo \"&lt;br /&gt;   &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;$count&amp;lt;/td&amp;gt;")&lt;br /&gt;   res2 = conn.query("DESC "+row[0])&lt;br /&gt;   res2.each do |row2|&lt;br /&gt;   if row2[0]!="id":&lt;br /&gt;       view.write("&lt;br /&gt;       &amp;lt;td&amp;gt;$"+row2[0]+"&amp;lt;/td&amp;gt;")&lt;br /&gt;       end&lt;br /&gt;   end&lt;br /&gt;   view.write("&lt;br /&gt;   &amp;lt;td&amp;gt;&amp;lt;a href='"+row[0]+"_form.php?comm=update&amp;id=$id'&amp;gt;Edit&amp;lt;/a&amp;gt; | &lt;br /&gt;   &amp;lt;a href='"+row[0]+"_action.php?id=$id' title='Anda yakin ?'&amp;gt;Hapus&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;   &amp;lt;/tr&amp;gt;\";&lt;br /&gt;   $count++;&lt;br /&gt;  }while($row = mysql_fetch_row($query));&lt;br /&gt;     ?&amp;gt;&lt;br /&gt; &amp;lt;/table&amp;gt;&lt;br /&gt;     \n")&lt;br /&gt;  &lt;br /&gt;  view.write("\n&amp;lt;? include('footer.php'); ?&amp;gt;\n")&lt;br /&gt;  &lt;br /&gt;  #Creating Form+++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;  form.write("&amp;lt;?\n include('header.php');\n include(\"connection.php\");\n?&amp;gt;\n")&lt;br /&gt;  form.write(" &lt;br /&gt;  &amp;lt;p&amp;gt;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;      &amp;lt;?&lt;br /&gt;      if(isset($_GET['comm'])){&lt;br /&gt;          $comm = $_GET['comm'];&lt;br /&gt;   echo \"&amp;lt;form method='post' action='"+row[0]+"_action.php'&amp;gt;&amp;lt;table class='frm'&amp;gt;&lt;br /&gt;   &amp;lt;tr&amp;gt;&amp;lt;th colspan='2'&amp;gt;"+row[0]+"&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;\";&lt;br /&gt;   if($comm==\"create\"){&lt;br /&gt;    echo \"")&lt;br /&gt;    res3 = conn.query("DESC "+row[0])&lt;br /&gt;    res3.each do |row3|&lt;br /&gt;    if row3[0]!='id':&lt;br /&gt;    form.write("&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;     &amp;lt;td&amp;gt;"+row3[0]+"&amp;lt;/td&amp;gt;&lt;br /&gt;     &amp;lt;td&amp;gt;&amp;lt;input type='text' name='txt"+row3[0]+"'&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;\n")&lt;br /&gt;    end&lt;br /&gt;    end&lt;br /&gt;    form.write("&lt;br /&gt;    &amp;lt;tr&amp;gt;&amp;lt;td colspan='2' align='right'&amp;gt;&lt;br /&gt;     &amp;lt;input type='submit' name='submit' value='Simpan'&amp;gt;&lt;br /&gt;     &amp;lt;input type='submit' name='submit' value='Batal'&amp;gt;&lt;br /&gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\";&lt;br /&gt;   }elseif($comm==\"update\"){&lt;br /&gt;    $id = $_GET['id'];&lt;br /&gt;    $sql = \"SELECT * FROM "+row[0]+" WHERE id='$id'\";&lt;br /&gt;    $q = mysql_query($sql);&lt;br /&gt;    $r = mysql_fetch_row($q);&lt;br /&gt;    list(")&lt;br /&gt;    res2 = conn.query("DESC "+row[0])&lt;br /&gt;    res2.each do |row2|&lt;br /&gt;     form.write("$"+row2[0]+",")&lt;br /&gt;    end&lt;br /&gt;    form.write(")=$r;&lt;br /&gt;    echo \"")&lt;br /&gt;    res2 = conn.query("DESC "+row[0])&lt;br /&gt;    res2.each do |row2|&lt;br /&gt;    if row2[0]!='id':&lt;br /&gt;    form.write("&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;     &amp;lt;td&amp;gt;"+row2[0]+"&amp;lt;/td&amp;gt;&lt;br /&gt;     &amp;lt;td&amp;gt;&amp;lt;input type='text' name='txt"+row2[0]+"' value='$"+row2[0]+"'&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;\n")&lt;br /&gt;    end&lt;br /&gt;    end&lt;br /&gt;    form.write("&lt;br /&gt;    &amp;lt;tr&amp;gt;&amp;lt;td colspan='2' align='right'&amp;gt;&lt;br /&gt;    &amp;lt;input type='submit' name='submit' value='Edit'&amp;gt;&lt;br /&gt;    &amp;lt;input type='submit' name='submit' value='Batal'&amp;gt;&lt;br /&gt;    &amp;lt;input type='hidden' name='id' value='$id'&amp;gt;&lt;br /&gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\";&lt;br /&gt;   }&lt;br /&gt;   echo \"&amp;lt;/table&amp;gt;&amp;lt;/form&amp;gt;\";&lt;br /&gt;      }&lt;br /&gt;  ?&amp;gt;\n")&lt;br /&gt;  form.write("&amp;lt;? include('footer.php'); ?&amp;gt;\n")&lt;br /&gt;  &lt;br /&gt;  #Creating Action+++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;  action.write("&amp;lt;?&lt;br /&gt;  include(\"connection.php\");&lt;br /&gt;  if(isset($_POST['submit'])){&lt;br /&gt;   $command = $_POST['submit'];\n")&lt;br /&gt;   &lt;br /&gt;   res2 = conn.query("DESC "+row[0])&lt;br /&gt;   res2.each do |row2|&lt;br /&gt;   action.write("   $"+row2[0]+" = $_POST['txt"+row2[0]+"'];")&lt;br /&gt;   action.write("\n")&lt;br /&gt;   end&lt;br /&gt;   &lt;br /&gt;   action.write("&lt;br /&gt;   if($command==\"Simpan\"){&lt;br /&gt;    $sql = \"INSERT INTO "+row[0]+" VALUES('', ")&lt;br /&gt;    &lt;br /&gt;    res2 = conn.query("DESC "+row[0])&lt;br /&gt;    rescount = conn.affected_rows()&lt;br /&gt;    count = 1&lt;br /&gt;    puts row[0].to_s+": "+rescount.to_s&lt;br /&gt;    res2.each do |row2|&lt;br /&gt;        if row2[0]!="id":&lt;br /&gt;     if count == rescount:&lt;br /&gt;         action.write("'$"+row2[0]+"'")&lt;br /&gt;     else&lt;br /&gt;         action.write("'$"+row2[0]+"', ")&lt;br /&gt;     end&lt;br /&gt;        end&lt;br /&gt;        count = count + 1&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    action.write(")\";&lt;br /&gt;    if(mysql_query($sql)){&lt;br /&gt;     header(\"Location:"+row[0]+"_view.php\");&lt;br /&gt;    }else{&lt;br /&gt;     echo $sql;&lt;br /&gt;    }&lt;br /&gt;   }elseif($command==\"Edit\"){&lt;br /&gt;    $id = $_POST['id'];&lt;br /&gt;    $sql = \"UPDATE "+row[0]+" SET ")&lt;br /&gt;    &lt;br /&gt;    res2 = conn.query("DESC "+row[0])&lt;br /&gt;    rescount = conn.affected_rows()&lt;br /&gt;    count = 1&lt;br /&gt;    res2.each do |row2|&lt;br /&gt;     if row2[0]!="id":&lt;br /&gt;         if count == rescount:&lt;br /&gt;      action.write(row2[0]+"='$"+row2[0]+"'")&lt;br /&gt;         else&lt;br /&gt;      action.write(row2[0]+"='$"+row2[0]+"', ")&lt;br /&gt;         end&lt;br /&gt;     end&lt;br /&gt;     count = count + 1&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    action.write(" WHERE id='$id'\";&lt;br /&gt;    if(mysql_query($sql)){&lt;br /&gt;     header(\"Location:"+row[0]+"_view.php\");&lt;br /&gt;    }else{&lt;br /&gt;     echo $sql;&lt;br /&gt;    }&lt;br /&gt;   }elseif($command==\"Batal\"){&lt;br /&gt;    header(\"Location:"+row[0]+"_view.php\");&lt;br /&gt;   }&lt;br /&gt;  }else{&lt;br /&gt;   $id = $_GET['id'];&lt;br /&gt;   if(mysql_query(\"DELETE FROM "+row[0]+" WHERE id=$id\")){&lt;br /&gt;    header(\"Location:"+row[0]+"_view.php\");&lt;br /&gt;   }else{&lt;br /&gt;    echo \"&amp;lt;p&amp;gt;Warning: cannot delete data! Please contact your administrator&amp;lt;/p&amp;gt;\";&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;?&amp;gt;")&lt;br /&gt; end&lt;br /&gt;rescue SystemCallError&lt;br /&gt; puts "File Exist"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;puts "done."&lt;br /&gt;&lt;br /&gt;********************************************&lt;br /&gt;Maybe there is someone out there wants to correct it, make it more flexible, pluggable, or whatever, please notice me by e-mail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-3280844285252947208?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/3280844285252947208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=3280844285252947208&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/3280844285252947208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/3280844285252947208'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2007/12/code-generator-apps.html' title='Code Generator Apps'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5034408335821472383.post-5986277736844095820</id><published>2007-12-18T18:58:00.000-08:00</published><updated>2008-02-10T19:50:58.494-08:00</updated><title type='text'>My First Programming Work</title><content type='html'>I'm a jumping bug alias 'Kutu Loncat' (hehehe). Aku memulai karirku sebagai programmer tahun 1999, waktu itu sekitar tengah malam aku di telpon temenku Indra. "Zam, kamu udah kerja belum?" tanya Indra. Waktu itu dia udah tau aku lagi cari kerja dengan modal ngerti VB pas-pasan (tapi pede abis!). &lt;br /&gt;&lt;br /&gt;Esok paginya aku datang ke komplek gedung Bimantara (sekarang menara kebon sirih). Di sana ada dua gedung dan satu masjid gede yang bikin aku relax berada di sana. Aku masuk ke gedung yang paling tinggi lalu aku tanya ke resepsionisnya, "Mba'...kalau GN-OTA lantai berapa ya?". "Oo, kalau GN-OTA di gedung sebelah pak". Wakwaww....ternyata di gedung yang lebih kecil (hihihi).&lt;br /&gt;&lt;br /&gt;GN-OTA kepanjangan dari Gerakan Nasional Orang Tua Asuh. I thougt Indra was calling me in the middle of the night from his home...but I was mistaken. He was calling me from this office! yup, kerjanya 24 Jam jagain 5 server. Programmernya juga sama aja, 24 jam! tidurnya pas abis subuh paling lama 4 jam-an.&lt;br /&gt;&lt;br /&gt;Waktu itu yang lagi di pake bahasa pemrograman Delphi5 padahal aku bisanya cuma VB. Tapi perusahaan gasih aku waktu untuk belajar. So be it. Aku belajar delphi sambil ngerjain proyek bikin laporan penyumbangan orang tua asuh dari seluruh Indonesia. Dalam waktu dua bulan aku udah kelar belajar dan menyelesaikan proyek. Selesai? ternyata belum...orang keuangannya marah2in aku (@*&amp;amp;^gimana sih!**$). Ternyata aku salah ngambil data di server 3, padahal server 3 cuma buat development doang. Live server-nya ada di server 5 (Ya Allah....cape deeh!). Waktu itu aku belum lulus kuliah jadi harus cuti kuliah dulu. Tapi dari situ alhamdulillah aku sekarang bisa belajar bahasa pemrograman baru dengan cepat.&lt;br /&gt;&lt;br /&gt;Sekarang aku baru bisa bahasa program VB, Delphi, PHP, Python, Java, Ruby, C++. Paling lama aku belajar Java karena teknologinya banyak, frameworknya juga banyak, tapi aku suka. Banyak programmer yang bilang Java itu susah...sebenarnya nggak kalau dia bahasa Inggrisnya lumayan. Java itu English banget deh. Andaikan Java itu bahasa jawa banget...pasti aku yang nggak mudhenk(hehehe)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5034408335821472383-5986277736844095820?l=thejourneynote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejourneynote.blogspot.com/feeds/5986277736844095820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5034408335821472383&amp;postID=5986277736844095820&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/5986277736844095820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5034408335821472383/posts/default/5986277736844095820'/><link rel='alternate' type='text/html' href='http://thejourneynote.blogspot.com/2007/12/my-first-programming-work.html' title='My First Programming Work'/><author><name>Nizham</name><uri>http://www.blogger.com/profile/16289770455250180237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://1.bp.blogspot.com/-sEsSOddmY2I/TZrTj9FRb4I/AAAAAAAAADw/z8vesBWfg74/s220/City%2Bof%2BAngels%2B%25281998%2529.jpg'/></author><thr:total>0</thr:total></entry></feed>
