<?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:blogger='http://schemas.google.com/blogger/2008' 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-7890476220667452667</id><updated>2025-11-06T02:22:52.341-08:00</updated><category term="linux"/><category term="programming"/><category term="wxwidgets"/><category term="c++"/><category term="ubuntu"/><category term="wine"/><category term="javascript"/><category term="jquery"/><category term="php"/><category term="google chrome"/><category term="html"/><category term="pdf"/><category term="Fuji Xerox DocPrint P205b linux driver"/><category term="SketchUp wine64"/><category term="acpid"/><category term="apache"/><category term="broken partition"/><category term="checkinstall"/><category term="codeigniter debug"/><category term="configure php parameters"/><category term="creating deb file"/><category term="css"/><category term="cups"/><category term="debug javascript"/><category term="debugging"/><category term="delphi"/><category term="dispatcher.d"/><category term="e-spt"/><category term="e2fsck"/><category term="enter key to move to next field"/><category term="ext4"/><category term="firebird"/><category term="firefox"/><category term="fsck"/><category term="ghostscript"/><category term="google chrome xdebug helper"/><category term="grub rescue prompt"/><category term="hamachi"/><category term="ibpp"/><category term="input"/><category term="install-wine-deps.sh"/><category term="installing mysql 5.1.37"/><category term="internet telephone"/><category term="libcupsys2-dev"/><category term="local web mirror"/><category term="maxlength"/><category term="merge pdfs"/><category term="middle click close"/><category term="middle click paste"/><category term="network manager"/><category term="nokia e51"/><category term="parport_pc"/><category term="pci parallel card"/><category term="pidgin"/><category term="postgresql  pgadmin3  postgresql-9.6"/><category term="rc.local"/><category term="recompile php"/><category term="repair partition"/><category term="shutdown problem"/><category term="testdisk"/><category term="textarea"/><category term="timbangan elektronik"/><category term="ubuntu 18.04"/><category term="ubuntu 9.04"/><category term="ubuntu 9.10"/><category term="voip"/><category term="voiprakyat"/><category term="voiprakyat.or.id"/><category term="webhttrack"/><category term="windows"/><category term="xdebug"/><category term="yahoo messenger"/><category term="youtube"/><title type='text'>Bambang P notes...</title><subtitle type='html'>Personal notes of Bambang Pranoto of various computing topics especially programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-7854280110953891986</id><published>2018-12-27T17:32:00.000-08:00</published><updated>2018-12-27T17:32:26.225-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="middle click close"/><category scheme="http://www.blogger.com/atom/ns#" term="middle click paste"/><category scheme="http://www.blogger.com/atom/ns#" term="rc.local"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 18.04"/><title type='text'>Disabling middle click paste and close in ubuntu 18.04 by enabling /etc/rc.local</title><content type='html'>How to disable middle click button in ubuntu 18.04 by enabling /etc/rc.local&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;Create or edit/etc/rc.local file&lt;br /&gt;&lt;br&gt;
&lt;code&gt;
#!/bin/bash
xinput set-button-map 11 1 0 3&lt;br /&gt;
exit 0
&lt;/code&gt;
&lt;br /&gt;
Make sure it is executable&lt;br /&gt;
&lt;code&gt;$sudo chmod 755 /etc/rc.local&lt;/code&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Edit rc-local.service file&lt;br /&gt;
&lt;code&gt;sudo vim /etc/systemd/system/rc-local.service&lt;/code&gt;&amp;nbsp;
&lt;/li&gt;
&lt;li&gt;
Add this section&lt;br /&gt;
&lt;code&gt;
[Install]&lt;br /&gt;
&amp;nbsp;WantedBy=multi-user.target
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enable the service &lt;br /&gt;
&lt;code&gt;
sudo systemctl enable rc-local
&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;fullpost&quot;&gt;


&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/7854280110953891986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2018/12/disabling-middle-click-paste-and-close.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7854280110953891986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7854280110953891986'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2018/12/disabling-middle-click-paste-and-close.html' title='Disabling middle click paste and close in ubuntu 18.04 by enabling /etc/rc.local'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-542125018378313278</id><published>2017-04-09T22:46:00.000-07:00</published><updated>2017-04-09T22:46:04.221-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postgresql  pgadmin3  postgresql-9.6"/><title type='text'>Postgresql 9.6 and Pgadmin3 trouble</title><content type='html'>Yesterday, I updated my PostgreSQL to the latest version 9.6 from version 9.5.&lt;span class=&quot;fullpost&quot;&gt;


&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The upgrade process went successfully, unfortunately pgadmin choked a little bit dealing with PostgreSQL 9.6, everytime we want to define primary key an error is thrown:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre style=&quot;background-color: white; border-color: lightgray; border-style: solid; border-width: 2px 0px; font-size: 1.2em; padding: 1em 0px 1em 2em; white-space: pre-wrap; word-wrap: break-word;&quot;&gt;ERROR: column &quot;amgettuple&quot; does not exist
LINE 1: ...am WHERE EXISTS (SELECT 1 FROM pg_proc WHERE oid=amgettuple...&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
we can ignore this error and the primary key creation will succeed, however it is annoying.&lt;br /&gt;
&lt;br /&gt;
My pgadmin was the latest version: pgadmin3 v 1.22.2&lt;br /&gt;
&lt;br /&gt;
Visiting&amp;nbsp;&lt;a href=&quot;https://pgadmin.org/download/source.php&quot;&gt;https://pgadmin.org/download/source.php&lt;/a&gt;&amp;nbsp;reveals that this version is the final version and won&#39;t be supported anymore. We are encouraged to use pgadmin4 instead.&lt;br /&gt;
&lt;br /&gt;
I then downloaded and installed pgadmin4, installation was a pain in ass but I succeeded got it installed. However, pgadmin4 was terribly very slow. It also got a problem with the function debugger. After function parameters entry, the debugger is showed, unfortunately it only shows a blank page. However, invoking the debugger via Setting Breakpoint menu runs well (...but slow). I would say pgadmin4 is not ready yet.&lt;br /&gt;
&lt;br /&gt;
Fortunately, google search told that there is someone who forked the pgadmin3 project and continue to maintain it. &amp;nbsp;In his &amp;nbsp;website &lt;a href=&quot;https://www.bigsql.org/pgadmin3/&quot;&gt;https://www.bigsql.org/pgadmin3/&lt;/a&gt;&amp;nbsp;only the Windows version are available. If you use linux like me, you have to compile your self.&lt;br /&gt;
&lt;br /&gt;
Here is the steps I took to compile pgadmin3. I use ubuntu 12.04, if you use other distro please adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Install the required packages:&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;$sudo apt-get install build-essential git libwxgtk2.8-dev libwxgtk2.8 libxml2 libxslt-dev python-sphinx&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Create directory and git clone the source code&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$git clone https://github.com/dimv36/pgadmin3.git&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Make&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$cd pgadmin3&lt;br /&gt;$make&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;After make you can proceed installing with &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo make install&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;, but as I had already have pgadmin3 package installed, I just copied the resulted binary overwriting the old one:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$sudo cp pgadmin/pgadmin3 `which pgadmin3`&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Finished. Big thanks to Dmitri Voronin ( &lt;a href=&quot;https://github.com/dimv36&quot;&gt;https://github.com/dimv36&lt;/a&gt;&amp;nbsp;) for maintaining pgadmin3.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/542125018378313278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2017/04/postgresql-96-and-pgadmin3-trouble.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/542125018378313278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/542125018378313278'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2017/04/postgresql-96-and-pgadmin3-trouble.html' title='Postgresql 9.6 and Pgadmin3 trouble'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-3930254916598553562</id><published>2017-03-10T23:58:00.000-08:00</published><updated>2017-03-14T04:53:24.980-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SketchUp wine64"/><title type='text'>Install Sketchup 2017 64 bits on Linux Ubuntu 16.04 64 bits</title><content type='html'>Install Sketchup 2017 64 bits on Linux Ubuntu 16.04 64 bits:&lt;br /&gt;
&lt;br /&gt;
1.Enable 32 bit architecture:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$sudo dpkg --add-architecture i386&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
2. Set wine PPA&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$sudo add-apt-repository ppa:wine/wine-builds&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Update repository&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$sudo apt-get update&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
3. Install wine newest staging branch version&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$sudo apt-get install --install-recommends winehq-staging&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
4. Ensure we get a 64bits wine, edit file ~/.profile and locate for text:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;export WINEARCH=&lt;/span&gt;&lt;/blockquote&gt;
If the value is win64 you are good, if the value is win32 change it to win64. Save the file.&lt;br /&gt;
&lt;br /&gt;
Ensure the environment variable also set to win64 by typing command:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$export WINEARCH=win64&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
5. Download winetricks:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks&lt;/span&gt;&lt;/blockquote&gt;
&amp;nbsp; &amp;nbsp;Don&#39;t forget to set the attribute so it is executable&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$chmod +x winetricks&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
6. Run winetricks&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$./winetricks&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Inside winetricks:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose Select the default wineprefix, click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose Install a Windows DLL or component, click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose vcrun2015, click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
...after vcrun2015 installation complete&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose winecfg, click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose tab Applications, set Windows version to Windows 8.1&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Choose tab Libraries, Add New override for library: mfc140u.dll&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Click OK&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;Click Cancel to quit winetricks&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
7. Download Sketchup 2017 Make 64 bit from &lt;a href=&quot;https://www.sketchup.com/download/all&quot;&gt;https://www.sketchup.com/download/all&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
8. From nautilus, locate file SketchUpMake-en-x64.exe, highlight the file, right click, Open with Archive Manager and then extract file SketchUp2017-x64.msi&lt;br /&gt;
&lt;br /&gt;
If Archive Manager says &quot;An error occured while loading the archive&quot;, you need to install 7z first.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$sudo apt-get install p7zip-full&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
9. From terminal run:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$wine explorer&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
10. Locate file SketchUp2017-x64.msi and double click to install.&lt;br /&gt;
&lt;br /&gt;
11. In Destination folder change the installation folder to&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;C:\Program Files\SketchUp\SketchUp 2017\&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Click Next and then Install.&lt;br /&gt;
&lt;br /&gt;
12. If you want to use the Professional you need to install Microsoft .Net Framework 4.5.2 (Offline installer), download from here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.microsoft.com/en-us/download/details.aspx?id=42642&quot;&gt;https://www.microsoft.com/en-us/download/details.aspx?id=42642&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After download install the file NDP452-KB2901907-x86-x64-AllOS-ENU.exe&lt;br /&gt;
&lt;br /&gt;
13. Enjoy Sketchup in linux.</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/3930254916598553562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2017/03/install-sketchup-2017-64-bits-on-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3930254916598553562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3930254916598553562'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2017/03/install-sketchup-2017-64-bits-on-linux.html' title='Install Sketchup 2017 64 bits on Linux Ubuntu 16.04 64 bits'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-4296747442579530833</id><published>2016-10-22T23:45:00.000-07:00</published><updated>2016-10-22T23:45:30.506-07:00</updated><title type='text'>POSTGRESQL: Dealing with  &#39;current transaction is aborted, commands ignored until end of transaction block&#39; in Lazarus/Delphi</title><content type='html'>&lt;div&gt;
Scenario:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Programming Environment: Lazarus/Delphi&lt;/div&gt;
&lt;div&gt;
Database: PostgreSQL&lt;/div&gt;
&lt;div&gt;
DB Component: Zeos&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Problem:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
You have a form displaying a table content in a grid. It is a typical data form where user can insert, update or delete record.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When user inserting record which fails going through Table integriry constraints (foreign key, unique constraint, check constraints etc), postgresql will throw exception:&amp;nbsp;&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;current transaction is aborted, commands ignored until end of transaction block. After this, all operation is not possible except closing the form and losing all modification you might have done.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;Solution:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #242729; font-family: Arial, Helvetica Neue, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: #fcf9ee; font-size: 15px; line-height: 19.5px;&quot;&gt;Define events of the query component, FDBConnection is db the connection component.&lt;br /&gt;&lt;br /&gt;BeforePost and BeforeDelete events:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;Self.FDBConnection.ExecuteDirect( &#39;SAVEPOINT mysavepoint&#39;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;AfterPost and AfterDelete events:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;Self.FDBConnection.ExecuteDirect( &#39;RELEASE SAVEPOINT mysavepoint&#39;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;OnPostError and OnDeleteError events:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;Self.FDBConnection.ExecuteDirect( &#39;ROLLBACK TO SAVEPOINT mysavepoint&#39;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fcf9ee; color: #242729; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;Note: you can change mysavepoint with any valid identifier name.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/4296747442579530833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2016/10/postgresql-dealing-with-current.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4296747442579530833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4296747442579530833'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2016/10/postgresql-dealing-with-current.html' title='POSTGRESQL: Dealing with  &#39;current transaction is aborted, commands ignored until end of transaction block&#39; in Lazarus/Delphi'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-6700755822086925371</id><published>2015-02-22T18:26:00.002-08:00</published><updated>2015-02-22T18:26:37.896-08:00</updated><title type='text'>NOTEPAD++ SOURCECOOKIFIER SETTING FOR CLIPPER LANGUAGE</title><content type='html'>&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Notepad++ is a very excellent
programmer editor for Windows. It has plugin system which enhances
it&#39;s functionality. Sourcecookifier is a plugin I like very much, it
is a simple plugin which shows the outline of your source code.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
The screenshot below shows a pascal
(delphi) source code. We can easily see the structure of the source
code, and we can go to a particular method/function just by one
click.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjItudNXygP_yLX8g_7WKWJ6sjOYCPOO-k1cpVAjPa-aK21XAv-m7u00-bsLIank4wa1WbaMfH1-siqqQVGQnvD38Nfl5WxzGWK8DtyMb5rOAR22iRxuUKMzpb8HjbHYEM-MPkNJlpIkNKq/s1600/pascal_source_code.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjItudNXygP_yLX8g_7WKWJ6sjOYCPOO-k1cpVAjPa-aK21XAv-m7u00-bsLIank4wa1WbaMfH1-siqqQVGQnvD38Nfl5WxzGWK8DtyMb5rOAR22iRxuUKMzpb8HjbHYEM-MPkNJlpIkNKq/s1600/pascal_source_code.png&quot; height=&quot;173&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Sourcecookifier recognizes several
programming languages, but it does not support Clipper language.
Fortunately, it is very easy to add Clipper configure. Follow this
step:&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Click setting icon (the yellow
 gear icon) on the sourcecookiefier window.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbd2GBhnEAubMutobkA7Nsbrnsn1T-xDYde8a_szh-vRgpwKtn5TyA23lMfJ3q9g0tbItrvhDNAz4QwtO59jLis_4vXMZklVxHJIj3MrB-Nu79gZpGtKR5Q1xwcaREGm6adK5bQM1nlMMz/s1600/setting_button.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbd2GBhnEAubMutobkA7Nsbrnsn1T-xDYde8a_szh-vRgpwKtn5TyA23lMfJ3q9g0tbItrvhDNAz4QwtO59jLis_4vXMZklVxHJIj3MrB-Nu79gZpGtKR5Q1xwcaREGm6adK5bQM1nlMMz/s1600/setting_button.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Click Language Settings&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
On the setting form, type Clipper
 on the language box and click add.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjam6N1rZCwGU6yk5v-l9Z9QRT8yBlvMRVtrCjgl9vkqnciySlDvfnhY6KHqvvKIRrC4CjadQWOS_WNV2HKNJrVKc9DHkfaU08tFkCvMsv0k6IBeVdin7VTkfnwdowqx_vLzSAgVENXk7AT/s1600/add_language.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjam6N1rZCwGU6yk5v-l9Z9QRT8yBlvMRVtrCjgl9vkqnciySlDvfnhY6KHqvvKIRrC4CjadQWOS_WNV2HKNJrVKc9DHkfaU08tFkCvMsv0k6IBeVdin7VTkfnwdowqx_vLzSAgVENXk7AT/s1600/add_language.png&quot; height=&quot;320&quot; width=&quot;144&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Set the file extension setting,
 add .prg to the extenson box&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiddNbiii3A4y-iLU1NiaioBZiHnt39rye9OeA6N9a0at6JyJG-_7byZfWtuesI6SFvttQqsXTglmcE3cvkXh03bPkmI6A_CHF6cEC1zk7CpbhaLks9OmAbMmorCPH50SA9UKnuMpLHQDc-/s1600/file_extension.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiddNbiii3A4y-iLU1NiaioBZiHnt39rye9OeA6N9a0at6JyJG-_7byZfWtuesI6SFvttQqsXTglmcE3cvkXh03bPkmI6A_CHF6cEC1zk7CpbhaLks9OmAbMmorCPH50SA9UKnuMpLHQDc-/s1600/file_extension.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
On Tag Type choose any letter you
 like. Here I add “f” for “function” (any letter will be
 fine)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZOMlZY9L69YScQKlSVWFhitqaEqBwnUq8Gexi5MwBVGx7QkgPCAv3o9IaupmBJLBN7bjhWwtLXY3JsebLuCXcp3iXOuO2ouKdWd5k93Y1Gd25E1OXua6OZzuhtrXHsnQJ3dX4-cwgYMex/s1600/choose_tag_type.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZOMlZY9L69YScQKlSVWFhitqaEqBwnUq8Gexi5MwBVGx7QkgPCAv3o9IaupmBJLBN7bjhWwtLXY3JsebLuCXcp3iXOuO2ouKdWd5k93Y1Gd25E1OXua6OZzuhtrXHsnQJ3dX4-cwgYMex/s1600/choose_tag_type.png&quot; height=&quot;320&quot; width=&quot;112&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
On Appearance box, you can write
 the description, choose Icon etc. It is not too important, I just
 put [function] in description and leave the other fields as it is.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Set the regular expression, fill
 the input and output as follow &lt;br /&gt;
Input: (^(FUNC.*)[
 \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output: \1&lt;br /&gt;
Clear the case sensitive box
 and click Add&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRGgR4M5B18RdGrrg7MNpltT1RZssCDIUQ5lSawtTtUIx3_ES1xPnSi0R3hv6EQLuWA_20mUsJK2puEtY7Gn06gcv3eeCpOj9IYruL8mIa3zZ_dBOfjJxyJTMMO02NVjj6RxvKdHKTi4y5/s1600/function_regex.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRGgR4M5B18RdGrrg7MNpltT1RZssCDIUQ5lSawtTtUIx3_ES1xPnSi0R3hv6EQLuWA_20mUsJK2puEtY7Gn06gcv3eeCpOj9IYruL8mIa3zZ_dBOfjJxyJTMMO02NVjj6RxvKdHKTi4y5/s1600/function_regex.png&quot; height=&quot;103&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
Repeat step 5 to step 7 to define
 additional keyword regexes for static function, procedure, static
 procedure, create class and method. Here are the regexes:&lt;br /&gt;
&lt;br /&gt;
static
 function:  Input = (^(STAT.*)(FUNC.*)[
 \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output = \1&lt;br /&gt;
procedure:  Input =
 (^(PROC.*)[ \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output = \1&lt;br /&gt;
static
 procedure: Input = (^(STAT.*)(PROC.*)[
 \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output = \1&lt;br /&gt;
create class:  Input =
 (^(CREA.*)(CLAS.*)[ \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output =
 \1&lt;br /&gt;
method:   Input = (^(METH.*)[
 \t]*)(([a-zA-Z0-9_]+))&lt;br /&gt;
Output = \1&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
The result is like this. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It
 is not perfect yet, in the example above “METHOD Init(...”
 scanned as “METHOD Ini”, I still don&#39;t know how to resolve. 
 &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxTmiCWDwHYrFZUCGDlNK2iVYLLzGZiYJAf3pICVqfMnTfUufzS6X5WCqJ2Jm1iE583C9_YB_pnOBrPFvECSbMFk1STHMRaGLQwDjD6qPrCfbyGNSgAii2mrjZnq1shqz057dWQM8xN1gA/s1600/example_result.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxTmiCWDwHYrFZUCGDlNK2iVYLLzGZiYJAf3pICVqfMnTfUufzS6X5WCqJ2Jm1iE583C9_YB_pnOBrPFvECSbMFk1STHMRaGLQwDjD6qPrCfbyGNSgAii2mrjZnq1shqz057dWQM8xN1gA/s1600/example_result.png&quot; height=&quot;173&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class=&quot;fullpost&quot;&gt;


&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/6700755822086925371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2015/02/notepad-sourcecookifier-setting-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/6700755822086925371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/6700755822086925371'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2015/02/notepad-sourcecookifier-setting-for.html' title='NOTEPAD++ SOURCECOOKIFIER SETTING FOR CLIPPER LANGUAGE'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjItudNXygP_yLX8g_7WKWJ6sjOYCPOO-k1cpVAjPa-aK21XAv-m7u00-bsLIank4wa1WbaMfH1-siqqQVGQnvD38Nfl5WxzGWK8DtyMb5rOAR22iRxuUKMzpb8HjbHYEM-MPkNJlpIkNKq/s72-c/pascal_source_code.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-4300911882182705801</id><published>2013-09-21T05:40:00.000-07:00</published><updated>2013-09-21T05:40:03.643-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="parport_pc"/><category scheme="http://www.blogger.com/atom/ns#" term="pci parallel card"/><title type='text'>Install PCI Parallel card murah meriah di Linux.</title><content type='html'>
 
 
 


&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Baru-baru ini, parallel port onboard di
salah satu komputer klienku rusak. Lalu dibelikan Parallel card PCI
made in China yang murah meriah. Card ini tidak ada merknya cuma ada
tulisannya PCI60806A dan cuma terdiri dari 1 IC :)&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Tapi setelah dipasang ternyata parallel
card ini tidak dikenali di ubuntu, sehingga kemarin terpaksa
komputernya di bawa ke rumahku untuk opname. Anehnya, output dari
perintah lspci -v mengatakan bahwa card ini adalah serial port:&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt;03:00.0
Serial controller: Device 4651:7073 (rev 10) (prog-if 02 [16550])
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; Subsystem:
Device 4651:7073
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; Flags:
medium devsel, IRQ 20
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; I/O
ports at df00 [size=8]
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; I/O
ports at de00 [size=8]
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; Kernel
driver in use: serial
&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Dari hasil googling ternyata ini memang
kasus umum pada pci parallel card murah meriah, card-card ini
sebenarnya mempunyai 2 fungsi interface, serial interface dan
parallel interface. I/O port pertama (df00) adalah port untuk Serial
Port sedangkan port kedua (de00) adalah untuk Parallel port.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Sekarang kita coba gunakan driver
parallel port linux (partport_pc) untuk mengakses port 0xde00 di atas.&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Unload terlebih dahulu driver lp
 dan parport_pc&lt;br /&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; # rmmod
 lp&lt;br /&gt; # rmmod parport_pc&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Reload parport_pc dengan io
 address de00&lt;br /&gt;&lt;span style=&quot;font-family: Liberation Serif, serif;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; #
 &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Liberation Serif, serif;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt;cd
 /lib/modules/`uname -r`/kernel/drivers/parport&lt;br /&gt; # insmod
 parport_pc.ko io=0xde00&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Liberation Serif, serif;&quot;&gt;Reload
 driver lp&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Liberation Serif, serif;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt; #
 cd /lib/modules/`uname -r`/kernel/drivers/char&lt;br /&gt; # insmod lp.ko&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Check dengan dmesg&lt;br /&gt;  &lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt;#
 dmesg | grep parport&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;dan ini outputnya:&lt;br /&gt; &lt;span style=&quot;font-size: 8pt;&quot;&gt;[
   10.650355] parport0: PC-style at 0xde00, irq -227213512
 [PCSPP,TRISTATE]
&lt;br /&gt; [   10.650362] parport0: irq -227213512 in
 use, resorting to polled operation
&lt;br /&gt; [   10.736222] lp0: using
 parport0 (polling).&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;margin-bottom: 0in; margin-left: 0.49in; text-indent: -0.25in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Masalahnya, setting ini tidak permanen,
artinya jika direboot akan kembali ke kondisi semula. Untuk itu kita
bisa membuat initialization script yang bisa diletakkan di
/etc/init.d/&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Tetapi solusi yang lebih baik adalah
dengan membuat konfigurasi di directory /etc/modprobe.d, buat sebuah
file dengan sembarang nama tapi extensionnya  .conf di directory
tersebut. Isi file tsb. adalah:&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt; &lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;i&gt;options
parport_pc io=0xde00&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;Maka setiap kali komputer booting,
driver parallel port akan diload dengan option di atas.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in; margin-left: 0.49in; text-indent: -0.25in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in; text-indent: 0.01in;&quot;&gt;
&lt;span style=&quot;font-size: 8pt;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;span class=&quot;fullpost&quot;&gt;


&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/4300911882182705801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2013/09/install-pci-parallel-card-murah-meriah.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4300911882182705801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4300911882182705801'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2013/09/install-pci-parallel-card-murah-meriah.html' title='Install PCI Parallel card murah meriah di Linux.'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-5508795047197299951</id><published>2013-09-02T21:26:00.000-07:00</published><updated>2015-02-22T19:14:57.792-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cups"/><category scheme="http://www.blogger.com/atom/ns#" term="Fuji Xerox DocPrint P205b linux driver"/><title type='text'>Install Windows Printer Fuji Xerox DocuPrint P205 b di Ubuntu</title><content type='html'>&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Kemarin ada yang baik hati memberikan
aku printer laser Fuji Xerox type DocPrint P205b. Masalahnya,
printing system di Ubuntu (CUPS) tidak ada driver untuk printer ini.
Situs Fuji Xerox pun
(&lt;a href=&quot;http://www.fujixeroxprinters.com.au/en/Downloads.aspx?product=9933&quot;&gt;http://www.fujixeroxprinters.com.au/en/Downloads.aspx?product=9933&lt;/a&gt;)
tidak menyediakan printer driver untuk linux, karena ternyata printer
ini adalah GDI printer.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
GDI printer biasanya merupakan printer
murah meriah, karena dia tidak mempunyai &#39;otak&#39; untuk memproses image
(rasterize). Pemrosesan image diserahkan ke operating system. Oleh
karena itu printer-printer semacam ini biasanya hanya bisa dipakai di
Windows saja.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Namun, dunia linux benar-benar
menakjubkan – hampir tidak ada yang mustahil di linux. Setelah
searching di internet, akhirnya aku menemukan sebuah situs yang
menyediakan driver untuk printer ini, namun untuk menginstallnya
tidak sekedar mengcopy file drivernya (.ppd) saja. Silahkan cek
&lt;a href=&quot;http://foo2hbpl.rkkda.com/&quot;&gt;http://foo2hbpl.rkkda.com/&lt;/a&gt; .
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Di bawah ini adalah langkah-langkah
untuk menginstallnya di Ubuntu. Untuk distro-distro lain silahkan
ikuti petunjuk di situs tsb:&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Download source dari package
 foo2zjs dari http://foo2zjs.rkkda.com/foo2zjs.tar.gz. Di ubuntu,
 sebenarnya package ini sudah terinstall, namun kita tidak dapat
 memakainya.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Extract:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;$tar
 zxf foo2zjs.tar.gz&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Uninstall package foo2zjs bawaan
 ubuntu:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;$cd foo2zjs&lt;br /&gt; $make uninstall&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Uninstall package system-config-printer-udev:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;$sudo
 apt-get remove system-config-printer-udev&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Install dependencies yang
 dibutuhkan dan compile:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;$sudo apt-get install
 build-essential tix foomatic-filters groff dc&lt;br /&gt; $make&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Install package foo2zjs-nya:&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;i&gt;$sudo make install install-hotplug cups&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Setelah
 langkah ini kita bisa menginstall driver printernya. Di komputer
 penulis, install tidak bisa dijalankan lewat menu Install printer
 seperti biasa, namun harus lewat web interface.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Hubungkan
 kabel USB printer ke komputer dan nyalakan printer.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Buka
 browser anda dan buka web interface dari CUPS: &lt;a href=&quot;https://127.0.0.1:631/&quot;&gt;https://127.0.0.1:631&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Klik
 Menu Administration, lalu klik Add Printer. Pilih printernya lalu
 ikuti sampai langkah di mana kita diminta memilih drivernya. Pada
 langkah ini, klik “Provide a PPD file” dan arahkan filenya ke
 /usr/share/cups/model/Fuji_Xerox-DocuPrint_P205.ppd.gz&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Selesai,
 printer bisa digunakan.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
UPDATE: ubuntu 14.04 bisa mengenali printer ini out of box dengan baik tanpa harus menjalankan langkah-langkah di atas&lt;/div&gt;
&lt;span class=&quot;fullpost&quot;&gt;


&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/5508795047197299951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2013/09/install-windows-printer-fuji-xerox.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5508795047197299951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5508795047197299951'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2013/09/install-windows-printer-fuji-xerox.html' title='Install Windows Printer Fuji Xerox DocuPrint P205 b di Ubuntu'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-6981498375277425944</id><published>2012-01-28T12:12:00.000-08:00</published><updated>2012-01-28T12:19:29.373-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="checkinstall"/><category scheme="http://www.blogger.com/atom/ns#" term="creating deb file"/><category scheme="http://www.blogger.com/atom/ns#" term="wine"/><title type='text'>Creating custom build wine deb package</title><content type='html'>In one of my projects, I need to install custom build of wine to several computers running ubuntu.&lt;br /&gt;
Hence, I had to get the sources, apply the patch files and then compile the source. &amp;nbsp;Doing this for 1 computer is okay, however repeating this to several computers is a huge waste of time.&lt;br /&gt;
&lt;br /&gt;
The solution is compiling once and then build a debian package (*.deb), so for the other computers we just install the debian package file. Fortunately, making a debian package is very-very easy. Here is what I did:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;ol&gt;
&lt;li&gt;Install wine recommended packages:&lt;br /&gt;&lt;code&gt;$ wget&lt;span style=&quot;background-color: white; font-family: &#39;bitstream vera sans&#39;, verdana, arial, helvetica, sans-serif; font-size: 12px;&quot;&gt;&amp;nbsp;&lt;/span&gt;http://winezeug.googlecode.com/svn/trunk/install-wine-deps.sh&lt;br /&gt;$ chmod 755 install-wine-deps.sh&lt;br /&gt;$ sudo ./install-wine-deps.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
Install checkinstall:&lt;br /&gt;
&lt;code&gt;
$ sudo apt-get install checkinstall
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Get the wine source:&lt;br /&gt;&lt;code&gt;$ wget&amp;nbsp;http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.38.tar.bz2&lt;br /&gt;$ tar -xf&amp;nbsp;wine-1.3.38.tar.bz2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Patch the wine sources&lt;/li&gt;
&lt;li&gt;Configure and compile:&lt;br /&gt;$ cd&amp;nbsp;wine-1.4-rc1&lt;br /&gt;$ ./configure&lt;/li&gt;
&lt;li&gt;Create the deb file with checkinstall:&lt;br /&gt; 
In this step, instead of run &lt;code&gt;sudo make install&lt;/code&gt;, we run checkinstall to make the .deb file:&lt;br /&gt;
&lt;code&gt;
$ sudo checkinstall
&lt;/code&gt;
&lt;br /&gt;

checkinstall will present some parameter. Modify the parameters as you like and then press ENTER to continue. At the end of the process, wine will be installed in your system and as a bonus you will have a .deb file which can be installed on other computers without the tedious process of compiling.

&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/6981498375277425944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2012/01/creating-custom-build-wine-deb-package.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/6981498375277425944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/6981498375277425944'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2012/01/creating-custom-build-wine-deb-package.html' title='Creating custom build wine deb package'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-7014161229960470523</id><published>2012-01-14T10:23:00.000-08:00</published><updated>2012-01-14T10:23:32.785-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ghostscript"/><category scheme="http://www.blogger.com/atom/ns#" term="merge pdfs"/><category scheme="http://www.blogger.com/atom/ns#" term="pdf"/><title type='text'>Merge several pdfs in ubuntu</title><content type='html'>Some times we need to merge several pdf files into 1 pdf file. Fortunately, it is very easy to do it in ubuntu.&lt;i&gt;&amp;nbsp;&lt;/i&gt;For instance, I have 2 pdf files: proposal_rpi.pdf and program_qc.pdf.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is how I merge these 2 files into 1 pdf file: proposal_jan_15_2012.pdf:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;code&gt;
bambang@bambang-notebook:~$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=proposal_jan_15_2012.pdf -dBATCH proposal_rpi.pdf program_qc.pdf
&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/7014161229960470523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2012/01/merge-several-pdfs-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7014161229960470523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7014161229960470523'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2012/01/merge-several-pdfs-in-ubuntu.html' title='Merge several pdfs in ubuntu'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-8844457209253678998</id><published>2012-01-11T19:23:00.000-08:00</published><updated>2012-01-11T19:24:12.073-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="configure php parameters"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="recompile php"/><title type='text'>Tip: Recompiling PHP under linux</title><content type='html'>There is a problem if we install PHP from source, i.e: when we need to recompile due to a new version we should reapply the old  configure parameter. Forgetting to enable some features often means break our web application which depends to the feature, however it is also hard memorizing what parameters we passed to the configure command as we do not often compiling the PHP.

Fortunately, there is an easy way. Here it goes:

&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Download the newest php source, here is the newest version (5.3.9) as I wrote this blog:&lt;br /&gt;
&lt;a href=&quot;http://www.php.net/get/php-5.3.9.tar.bz2/from/a/mirror&quot;&gt;http://www.php.net/get/php-5.3.9.tar.bz2/from/a/mirror&lt;/a&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;
Extract the php source:
&lt;br /&gt;
&lt;code&gt;
bambang@bambang-notebook:~/Downloads/php$ tar -xf php-5.3.9.tar.gz&lt;br /&gt;
bambang@bambang-notebook:~/Downloads/php$ cd php-5.3.9&lt;br /&gt;
bambang@bambang-notebook:~/Downloads/php/php-5.3.9$&lt;br /&gt;
&lt;/code&gt;


&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Write a phpinfo.php to your web server document folder. The content of the script:
&lt;br /&gt;
&lt;code&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;?php echo phpinfo(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Open the phpinfo.php above in your browser:
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKo-fkOtKrISOxfJJ3h6pZ74ueGph48iHfv2YgOrKUIV0JDIjASJUn9M_7F3pZwpe1oYpabwwWCVGAXZWM4FQnF4QjQGKOjy-bySlFFpiTi2264Gyxs3cj1-fbsl0tKtYUJ1FQpESFG-fw/s1600/phpinfo-php-configure-params.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;137&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKo-fkOtKrISOxfJJ3h6pZ74ueGph48iHfv2YgOrKUIV0JDIjASJUn9M_7F3pZwpe1oYpabwwWCVGAXZWM4FQnF4QjQGKOjy-bySlFFpiTi2264Gyxs3cj1-fbsl0tKtYUJ1FQpESFG-fw/s400/phpinfo-php-configure-params.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Notice the configure command on the third row, block and copy the configure command
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Go back to your terminal in the step 2, and paste the command and press enter:
&lt;br /&gt;
&lt;code&gt;
bambang@bambang-notebook:~/Downloads/php/php-5.3.9$ &#39;./configure&#39; &#39;--with-apxs2=/usr/bin/apxs2&#39; &#39;--with-interbase=/opt/firebird&#39; &#39;--enable-sockets&#39; &#39;--with-pear&#39; &#39;--with-gd&#39; &#39;--with-mysql=/usr/bin/mysql_config&#39; &#39;--with-mysqli=mysqlnd&#39; &#39;--with-pdo-mysql=mysqlnd&#39; &#39;--enable-soap&#39; &#39;--enable-libxml&#39; &#39;--enable-calendar&#39; &#39;--with-pdo-firebird=/opt/firebird&#39;&lt;br /&gt;

&lt;/code&gt; 
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;After this step, you simply run make and sudo make install to upgrade your php.
&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/8844457209253678998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2012/01/tip-recompiling-php-under-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/8844457209253678998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/8844457209253678998'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2012/01/tip-recompiling-php-under-linux.html' title='Tip: Recompiling PHP under linux'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKo-fkOtKrISOxfJJ3h6pZ74ueGph48iHfv2YgOrKUIV0JDIjASJUn9M_7F3pZwpe1oYpabwwWCVGAXZWM4FQnF4QjQGKOjy-bySlFFpiTi2264Gyxs3cj1-fbsl0tKtYUJ1FQpESFG-fw/s72-c/phpinfo-php-configure-params.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-2680618707225217964</id><published>2011-12-07T23:33:00.001-08:00</published><updated>2011-12-29T05:22:36.405-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="maxlength"/><category scheme="http://www.blogger.com/atom/ns#" term="textarea"/><title type='text'>HTML &amp;lt;textarea&amp;gt; maxlength problem</title><content type='html'>We can limit the maximum characters in &lt;i&gt;&amp;lt;input&amp;gt;&lt;/i&gt; with &lt;i&gt;&amp;lt;maxlength&amp;gt;&lt;/i&gt; attribute. However
it is not possible to do the same thing with &lt;i&gt;&amp;lt;textarea&amp;gt;&lt;/i&gt;. This will be a problem if value of the &lt;i&gt;&amp;lt;textarea&amp;gt;&lt;/i&gt; will be stored into database table and the length of the user input exceeds the field&#39;s length, either the value will
be truncated or your database will throw an error to you.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Fortunately, a little jquery script can help here:

&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
$(document).ready
(
 function()
 {
  $(&quot;textarea[maxlength]&quot;).keypress
  (
   function()
   {
    var maxlength = $(this).attr(&quot;maxlength&quot;);
    if ( this.value.length &amp;gt; maxlength )
    {
     this.value = this.value.substring(0,maxlength-1);
    }    
   }
  )
 }
)
&amp;lt;/script&amp;gt;

&amp;lt;form&amp;gt;
This text box is limited to 5 chars &amp;lt;textarea maxlength=&quot;5&quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;br&amp;gt;
This text box is not limited &amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;
&amp;lt;/form&amp;gt;

&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;

&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/2680618707225217964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/12/html-maxlength-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2680618707225217964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2680618707225217964'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/12/html-maxlength-problem.html' title='HTML &amp;lt;textarea&amp;gt; maxlength problem'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-4725666949427713529</id><published>2011-12-06T22:45:00.001-08:00</published><updated>2011-12-18T07:07:07.363-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter debug"/><category scheme="http://www.blogger.com/atom/ns#" term="debugging"/><category scheme="http://www.blogger.com/atom/ns#" term="google chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="google chrome xdebug helper"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="xdebug"/><title type='text'>Debugging php application with xdebug, netbeans and Google Chrome</title><content type='html'>Debugging PHP application is a pain. When we get problems, we often to use var_dump() or die() in various location to inspect 
the variables and then clean them again once the problem is solved.

Fortunately, there is a piece of software called xdebug which can tremendously help us debugging php code. This article is about using xdebug in linux environment.

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;
What we need:
&lt;ul&gt;
&lt;li&gt;A working apache2 web server with PHP
&lt;/li&gt;
&lt;li&gt;Netbeans: an excellent IDE for writing PHP application
&lt;/li&gt;
&lt;li&gt;xdebug
&lt;/li&gt;
&lt;/ul&gt;
I assume you already have the first two.
&lt;/li&gt;
&lt;li&gt;Install xdebug, open linux terminal, change to root and install xdebug with command (pecl install debug). See below
&lt;pre&gt;bambang@bambang-notebook:~$ sudo su
[sudo] password for bambang: 
root@bambang-notebook:/home/bambang#pecl install xdebug
downloading xdebug-2.1.2.tar ...
Starting to download xdebug-2.1.2.tar (Unknown size)
.................................done: 1,340,416 bytes
66 source files, building
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
.....
..... &lt;snipped&gt;
......
Build process completed successfully
Installing &#39;/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so&#39;
install ok: channel://pecl.php.net/xdebug-2.1.2
configuration option &quot;php_ini&quot; is not set to php.ini location
You should add &quot;extension=xdebug.so&quot; to php.ini

&lt;/snipped&gt;&lt;/pre&gt;
Note where the xdebug.so is installed in the line &lt;i&gt;Installing &#39;/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so&#39;&lt;/i&gt;
&lt;/li&gt;
&lt;li&gt;Add these lines to your php.ini. In my case /usr/local/lib/php.ini.&amp;nbsp;&lt;/li&gt;
:
&lt;pre&gt;zend_extension=&quot;/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so&quot;
xdebug.remote_enable=on
xdebug.remote_log=&quot;/var/log/xdebug.log&quot;
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
&lt;/pre&gt;
&lt;li&gt;Restart apache
&lt;pre&gt;root@bambang-notebook:/home/bambang# /etc/init.d/apache2 restart
 * Restarting web server apache2                                                 ... waiting                                                             [ OK ]
root@bambang-notebook:/home/bambang# 

&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Write a phpinfo.php page in your web directory like this:
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;?php echo phpinfo(); ?&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Open the phpinfo.php in your browser and check whether the xdebug is successfully installed.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRohyTozg98SXdt-JU8SiGOxOyQkdT1McbkJNAgaepgWg0acTjz5KenVnIHJW-tS8q9b8fMZmEapV_ZyuxqNQcSwQ81ITzoJk3DC2e4o2Xf9oOz00QsUb4E6jqbPcaGbr1fzeejbrm_0_0/s1600/phpinfo_xdebug.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;338&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRohyTozg98SXdt-JU8SiGOxOyQkdT1McbkJNAgaepgWg0acTjz5KenVnIHJW-tS8q9b8fMZmEapV_ZyuxqNQcSwQ81ITzoJk3DC2e4o2Xf9oOz00QsUb4E6jqbPcaGbr1fzeejbrm_0_0/s400/phpinfo_xdebug.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Now go to Netbeans and navigate through menu &lt;i&gt;Tools-&amp;gt;Option-&amp;gt;PHP&lt;/i&gt; and make sure the Debugger port is the same
with what we set in the php.ini above. I clear &lt;i&gt;Stop at First Line&lt;/i&gt; check mark, but it is okay if you let it checked. If it is checked, the debugger will stop at first php statement. But I only want it stops on break point.&lt;/li&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhelyzuyA7AEhzqYKPlMH8246l62NjjjkSdqVOIRpm-GptDb9liMbZEQwrc0ttAE2Qv6Arad5aitaOV2DicRTqeCVE7QsN9KCtnL2q_GS4bSlMlra-GgPqrkhjMpLwWijRzJMeKc5jKEpQY/s1600/netbeans-php-options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhelyzuyA7AEhzqYKPlMH8246l62NjjjkSdqVOIRpm-GptDb9liMbZEQwrc0ttAE2Qv6Arad5aitaOV2DicRTqeCVE7QsN9KCtnL2q_GS4bSlMlra-GgPqrkhjMpLwWijRzJMeKc5jKEpQY/s320/netbeans-php-options.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;li&gt;Open your chrome, &amp;nbsp;goto &lt;a href=&quot;https://chrome.google.com/webstore/detail/eadndfjplgieldjbigjakmdgkmoaaaoc&quot; target=&quot;_blank&quot;&gt;https://chrome.google.com/webstore/detail/eadndfjplgieldjbigjakmdgkmoaaaoc&lt;/a&gt;&amp;nbsp;and install the xdebug helper.&lt;/li&gt;
&lt;li&gt;Now we are ready to debug, in this example I&#39;ll debug my CodeIgniter application. First I open one of my controller: daftar_negara.php and place a breakpoint in line 11 by clicking the line number or press ctrl-f8.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh30efyp9081CQ4a437zU73O4CL0rBStutz_WoWug-ZE_SHsM1NLlB9auNfnOvlFRdutzImNhxMbgBkG2xeMmfWlTqggeaG6LCwY2GCBxOAqGIrK3NgHOjsxpUqnnxp97FoNDPAuyKwJvCn/s1600/netbeans_breakpont.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh30efyp9081CQ4a437zU73O4CL0rBStutz_WoWug-ZE_SHsM1NLlB9auNfnOvlFRdutzImNhxMbgBkG2xeMmfWlTqggeaG6LCwY2GCBxOAqGIrK3NgHOjsxpUqnnxp97FoNDPAuyKwJvCn/s400/netbeans_breakpont.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Still inside Netbeans run the debugger by clicking menu &lt;i&gt;Debug-&amp;gt;Debug Project&lt;/i&gt; or clicking the debug icon in the netbeans taskbar like (see the image below):
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO4WQTkiQoR2pOOJxDXJUzS-HQ2T7ZmeZ9M9r-DFKgch2b3AAzzq2G-rRB12KPQSRLiWWkartr_Qx_xokqCQsdb7T6nZsqwaBy_8LH2L3E0bTiyJ7mWwTQlMFQpIhoz-U8eHutgdES91a-/s1600/netbeans_debugger_icon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;73&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO4WQTkiQoR2pOOJxDXJUzS-HQ2T7ZmeZ9M9r-DFKgch2b3AAzzq2G-rRB12KPQSRLiWWkartr_Qx_xokqCQsdb7T6nZsqwaBy_8LH2L3E0bTiyJ7mWwTQlMFQpIhoz-U8eHutgdES91a-/s400/netbeans_debugger_icon.png&quot; width=&quot;62&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

The debugger will launch our project in chrome. Now we need to activate chrome xdebug helper, click the xhelper debug icon in right end of the address bar until it turns to green.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcocHn0EMDeD9rdLGnsGeIWxXW7UWDzUiksSalzcI_Z7HDk-ESSyLJsf7ZhcWV1P0ztJXGf2uCSf2EPvdiTUL91M2hJsRamLmkKK1XM5qOaAskwDKiOk7YwpnpXsNAvjadweoxRAKGTdcf/s1600/chrome_xhelper_icon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcocHn0EMDeD9rdLGnsGeIWxXW7UWDzUiksSalzcI_Z7HDk-ESSyLJsf7ZhcWV1P0ztJXGf2uCSf2EPvdiTUL91M2hJsRamLmkKK1XM5qOaAskwDKiOk7YwpnpXsNAvjadweoxRAKGTdcf/s400/chrome_xhelper_icon.png&quot; width=&quot;77&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Now press F5 (refresh), xdebug will stop the execution on our breakpoint and switch to our neatbeans:&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikeQRT6gv1N9s_4U9FaU8tx4UkauoNQpBfcwD1CGfDc7FA6Iks40t-qeOZMxosv84MICHD6jNhPCzp_wg59VKQ63X8Kw_K7cQGiRPKDW17t9nPb_1Yl3shFSRhQ8RfcgPYg4mlRq-hMoep/s1600/xdebug_netbeans_inaction.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;262&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikeQRT6gv1N9s_4U9FaU8tx4UkauoNQpBfcwD1CGfDc7FA6Iks40t-qeOZMxosv84MICHD6jNhPCzp_wg59VKQ63X8Kw_K7cQGiRPKDW17t9nPb_1Yl3shFSRhQ8RfcgPYg4mlRq-hMoep/s400/xdebug_netbeans_inaction.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Now, we can step over, step info etc. via netbeans debugger tool bar, of course you can also use the shortcut key (F8,F7 etc):

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUmfY1l4zJ3_AmfEyi1Bh2MEUHdpRY8-e4ZUAOBwVNu9qAN-YxhB0LyoRkyTJgUPrEPnMi1uetl3QidJrEmf9ELVWNqZWC_BSjW-Lu7hHV2YWy9f8Kk5gNUndOv0NIY7-2gBQFwOpoAQbV/s1600/netbeans_debugger_toolbar.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;63&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUmfY1l4zJ3_AmfEyi1Bh2MEUHdpRY8-e4ZUAOBwVNu9qAN-YxhB0LyoRkyTJgUPrEPnMi1uetl3QidJrEmf9ELVWNqZWC_BSjW-Lu7hHV2YWy9f8Kk5gNUndOv0NIY7-2gBQFwOpoAQbV/s400/netbeans_debugger_toolbar.png&quot; width=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
We can also inspect the variable values in the window below the code window:

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4nBREOeWlvTlRRiOIWCtOwtYHkInpwkuKy0oIkbVZKpr2ITCf3jrkPc_2V9Xe2cEOIVIAnHg63E8dDYcjGF0vBou-DhNjoKR9XBBxBm_MyKqfl4ekosVAltBKshEmlPdMELbrX-CgHZ1/s1600/variable_watches.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;136&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo4nBREOeWlvTlRRiOIWCtOwtYHkInpwkuKy0oIkbVZKpr2ITCf3jrkPc_2V9Xe2cEOIVIAnHg63E8dDYcjGF0vBou-DhNjoKR9XBBxBm_MyKqfl4ekosVAltBKshEmlPdMELbrX-CgHZ1/s400/variable_watches.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
From here, I am sure you can figure the rest yourself. Happy bug hunting!</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/4725666949427713529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/12/debugging-php-application-with-xdebug.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4725666949427713529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4725666949427713529'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/12/debugging-php-application-with-xdebug.html' title='Debugging php application with xdebug, netbeans and Google Chrome'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRohyTozg98SXdt-JU8SiGOxOyQkdT1McbkJNAgaepgWg0acTjz5KenVnIHJW-tS8q9b8fMZmEapV_ZyuxqNQcSwQ81ITzoJk3DC2e4o2Xf9oOz00QsUb4E6jqbPcaGbr1fzeejbrm_0_0/s72-c/phpinfo_xdebug.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-1190741443778076034</id><published>2011-12-06T09:08:00.001-08:00</published><updated>2011-12-06T09:48:30.464-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="enter key to move to next field"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>Web app: move to next field with enter ala dos application</title><content type='html'>This is a little experiment on how to use enter as a mean to move to the next input field in web application ala dos application. We need jquery here. 

Here we simply trap the enter key with keypress event. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Inside the event, we check the control tabIndex. Actually, the html elements have tabIndex property, unfortunately (at least in my case with google chrome) the value always 0, so we need a helper funtion myTabPosition which simply scan the parent&#39;s child node until it find itself name. 
&lt;br /&gt;
After we have the tab index, we simply focus to the next sibling.
&lt;br /&gt;
&lt;br /&gt;
Here is my solution:
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
$(document).ready
(
 function()
 {
  $(&quot;.ala_desktop&quot;).keypress
  (
   function(event)
   {
    if (event.which==13)
    {
     i = myTabPosition(this) + 1;
     nxt=this.form.elements[i];
     nxt.focus();
     nxt.select();
     return false;
    }
    return true;   
   }
  )
 }
)

function myTabPosition( o )
{
 var MyName = o.name;
 var MyParent = o.form;
 var i;
 var retval = -1;
 for (i = 0 ; i &amp;lt; MyParent.elements.length - 1 ; i++ )
 {
  if ( MyParent.elements[i].name == MyName )
  {
   retval = i;
   break;
  }
 }
 return retval;
}
&amp;lt;/script&amp;gt;

&amp;lt;form name=&quot;coba&quot;&amp;gt;
Name : &amp;lt;input type=&quot;text&quot; name=&quot;Name&quot; id=&quot;Name&quot; class=&quot;ala_desktop&quot;&amp;gt;&amp;lt;br&amp;gt;
Address : &amp;lt;input type=&quot;text&quot; name=&quot;Address&quot; id=&quot;Address&quot; class=&quot;ala_desktop&quot;&amp;gt;&amp;lt;br&amp;gt;
City : &amp;lt;input type=&quot;text&quot; name=&quot;City&quot; id=&quot;City&quot; class=&quot;ala_desktop&quot;&amp;gt;

&amp;lt;/form&amp;gt;

&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/1190741443778076034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/12/web-app-move-to-next-field-with-enter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/1190741443778076034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/1190741443778076034'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/12/web-app-move-to-next-field-with-enter.html' title='Web app: move to next field with enter ala dos application'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-1636172977153348871</id><published>2011-12-04T00:56:00.001-08:00</published><updated>2011-12-06T03:52:59.337-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="input"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>HTML &amp;lt;input&amp;gt; tips - 01</title><content type='html'>Beberapa tips yang berguna untuk penggunaan &amp;lt;input&amp;gt; pada html.
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Membatasi jumlah character maksimal yang boleh diinput.&lt;br /&gt;
Gunakan attribute &lt;i&gt;&lt;b&gt;maxlength&lt;/b&gt;&lt;/i&gt;.
Contoh:
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
Input ini hanya dibatasi 5 character saja &amp;lt;input type=&quot;text&quot; maxlength=&quot;5&quot;&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Memaksa semua input ke huruf besar atau huruf kecil.
&lt;br /&gt;
Untuk hal ini kita harus menggunakan CSS property &lt;b&gt;&lt;i&gt;text-transform&lt;/i&gt;&lt;/b&gt;. Untuk memaksa semua input ke huruf besar gunakan 
&lt;b&gt;&lt;i&gt;text-transform:uppercase&lt;/i&gt;&lt;/b&gt;, untuk ke huruf kecil gunakan &lt;b&gt;&lt;i&gt;text-transform:lowercase&lt;/i&gt;&lt;/b&gt;.

Namun harus diperhatikan bahwa CSS hanya merubah tampilan saja, tetapi value dari text box itu sendiri tetap. Semisal kita
mengketik kata &#39;semarang&#39; dalam huruf kecil, dengan text-transform:uppercase yang ditampilkan adalah &#39;SEMARANG&#39;, tetapi value dari &amp;lt;input&amp;gt; tetap &#39;semarang&#39; dalam huruf kecil. Untuk memaksa value juga berubah ke huruf besar, kita harus mengkombinasikan css dengan jquery script yang mentrap event blur.

Dalam hal ini kita memerlukan jquery, jika di komputer anda belum terinstall download terlebih dahulu jquery versi terbaru di &lt;a href=&quot;http://docs.jquery.com/Downloading_jQuery&quot;&gt;http://docs.jquery.com/Downloading_jQuery&lt;/a&gt;.
&lt;br /&gt;
Nama file hasil download jQuery mengandung version number dan jenis script yang kita download (minified atau compressed). Copykan file tsb. ke web directory kita dan rename filenya menjadi jquery.js.
&lt;br /&gt;
&lt;br /&gt;

Contoh:

&lt;pre&gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;style type=&quot;text/css&quot;&amp;gt;
input.hurufbesar {
text-transform:uppercase
}
&amp;lt;/style&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
$(document).ready
(
 function()
 {
  $(&#39;input.hurufbesar&#39;).blur
  (
   function()
   {
    this.value = this.value.toUpperCase();
   }
  )
 }
)

function CheckValue()
{
 alert( &quot;Value yang diketik adalah :&quot; + document.getElementById(&#39;inputan&#39;).value );
}
&amp;lt;/script&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
Input ini dalam huruf besar semua &amp;lt;input type=&quot;text&quot; class=&quot;hurufbesar&quot; id=&quot;inputan&quot;&amp;gt;

&amp;lt;input type=&quot;button&quot; value=&quot;Check&quot; onclick=&quot;javascript:CheckValue()&quot;&amp;gt;

&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;/li&gt;
&lt;li&gt;Membatasi hanya angka saja yang boleh diinput.
&lt;br /&gt;
Untuk keperluan ini kita bisa menggunakan jQuery. 
&lt;br /&gt;
Selanjutnya kita buat sebuah function yang akan dijalankan pada waktu terjadi event keypress pada tag &amp;lt;input&amp;gt; yang mempunyai class &lt;i&gt;&lt;b&gt;angkasaja&lt;/b&gt;&lt;/i&gt; sbb:
&lt;br /&gt;&lt;br /&gt;
&lt;pre&gt;$(document).ready
(
 function()
 {
  $(&quot;input.angkasaja&quot;).keypress
  (
   function( event )
   {
    return ( event.which &amp;gt;= 48 &amp;amp;&amp;amp; event.which &amp;lt;= 57 );
   }
  )
 }
)

&lt;/pre&gt;
&lt;br /&gt;
Code snippet di atas, intinya adalah bahwa setiap terjadi event keypress (tombol ditekan) akan dilakukan pengecekan apakah
keycode dari tombol yang ditekan ada di antara 48 (ascii code dari angka 0) dan 57 (ascii code dari angka 9), apabila ya 
event functionnya akan mereturn TRUE artinya keypress diaccept, tapi bila tidak event functionnya akan mereturn FALSE artinya
inputan ditolak.

&lt;br /&gt;&lt;br /&gt;
Selanjutnya, untuk semua &amp;lt;input&amp;gt; di mana kita menghendaki bahwa yang bisa diinput hanya angka saja, cukup kita berikan class &lt;b&gt;&lt;i&gt;angkasaja&lt;/i&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
Contoh:
&lt;br /&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
$(document).ready
(
 function()
 {
  $(&quot;input.angkasaja&quot;).keypress
  (
   function( event )
   {
    return ( event.which &amp;gt;= 48 &amp;amp;&amp;amp; event.which &amp;lt;= 57 );
   }
  )
 }
)
&amp;lt;/script&amp;gt;

&amp;lt;body&amp;gt;
Hanya angka yang bisa diinput &amp;lt;input type=&quot;text&quot; class=&quot;angkasaja&quot;&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
Pada seri berikutnya kita akan bahas bagaimana menginput angka dengan separator ribuan dan desimal dan bagaimana kita bisa
menginput data tanggal dengan mengklik kalender yang akan ditampilkan.
&lt;br /&gt;
Semoga membantu</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/1636172977153348871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/12/html-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/1636172977153348871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/1636172977153348871'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/12/html-tips.html' title='HTML &amp;lt;input&amp;gt; tips - 01'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-5924731905435337791</id><published>2011-12-02T03:01:00.001-08:00</published><updated>2011-12-02T05:22:15.710-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debug javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="google chrome"/><title type='text'>Debug javascript dengan Google Chrome</title><content type='html'>&lt;ol&gt;
&lt;li&gt;Buat halaman html yang akan dibuat. Contoh:
&lt;br /&gt;
hapusaja.html
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

function Sajikan()
{
 Sel = document.getElementById( &quot;PILIHAN&quot; );
 alert( &quot;Mangga dahar &quot; + Sel.options[ Sel.selectedIndex].value );
}

&amp;lt;/script&amp;gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Mau buah apa? 
&amp;lt;select id=&quot;PILIHAN&quot; onclick=&quot;Sajikan()&quot;&amp;gt;
&amp;lt;option value=&quot;Gedhang&quot;&amp;gt;Pisang&amp;lt;/option&amp;gt;
&amp;lt;option value=&quot;Kates&quot;&amp;gt;Pepaya&amp;lt;/option&amp;gt;
&amp;lt;option value=&quot;Pelem&quot;&amp;gt;Mangga&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;


&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Buka di Google Chrome
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHeJgAPD-E0IN2fICubOXO_jZH1efy3h7Qzejz1XdeYfABg4l7cW6XOXPJr-mERLntlrgYiLzjOzux6q9Nqte_YDAAkwrOJ5A1hORuyazmlONIw-MXIWVB3XKLgPShogjSGnttM2kZwna/s1600/debug_javascript_google_chrome_01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHeJgAPD-E0IN2fICubOXO_jZH1efy3h7Qzejz1XdeYfABg4l7cW6XOXPJr-mERLntlrgYiLzjOzux6q9Nqte_YDAAkwrOJ5A1hORuyazmlONIw-MXIWVB3XKLgPShogjSGnttM2kZwna/s320/debug_javascript_google_chrome_01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Aktifkan debugger dengan klik kanan lalu klik &#39;Inspect Element&#39;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFh3lTiII0xvg2EXFp-RuhThNCmYh3LLd1XhTSVdt-yq211eFbcT1V_9sqGnjEmncni6KulgUqMBTc-lB8yW0AtkKGe0wip8Yefum2E16K02e9SVzQw7CsmQKWAvLIImSDwiwfChyphenhyphendpc-X/s1600/debug_javascript_google_chrome_02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;254&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFh3lTiII0xvg2EXFp-RuhThNCmYh3LLd1XhTSVdt-yq211eFbcT1V_9sqGnjEmncni6KulgUqMBTc-lB8yW0AtkKGe0wip8Yefum2E16K02e9SVzQw7CsmQKWAvLIImSDwiwfChyphenhyphendpc-X/s320/debug_javascript_google_chrome_02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Layar google chrome akan terbagi menjadi 2 bagian, bagian bawah ada windows untuk melihat elemen-elemen halaman page. Atur proporsi bagian atas dan bagian bawah dengan mendrag pembatas window ke atas atau ke bawah.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzJAIfHt8ckfaoUA0yRLGztsVbS9Ryn-e2M0gEdgPpY8FxB-7tBkhqtg-Cy1vmgI0PP7GLPCH0QNlq4CDUztqMxOk9BZDIRTupjZV-_ZAE4lYzJ-9BzFCXUoNsBQj_Y415wzbuUXt4-Ax/s1600/debug_javascript_google_chrome_03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzJAIfHt8ckfaoUA0yRLGztsVbS9Ryn-e2M0gEdgPpY8FxB-7tBkhqtg-Cy1vmgI0PP7GLPCH0QNlq4CDUztqMxOk9BZDIRTupjZV-_ZAE4lYzJ-9BzFCXUoNsBQj_Y415wzbuUXt4-Ax/s400/debug_javascript_google_chrome_03.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Klik Script
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisENvU-JcBS5dhMzRkzyCzldHsE5EufkU2EAKRhiqLtvGYXguMR5Lajtl-QdKS14uNuIPKKOePQDJFaG63ig-p4Aj-eEOfQZ_-p3hSLItSfHD5YNVkDu5vlHXI4eFn_HM40XQfsweqcRAI/s1600/debug_javascript_google_chrome_04.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisENvU-JcBS5dhMzRkzyCzldHsE5EufkU2EAKRhiqLtvGYXguMR5Lajtl-QdKS14uNuIPKKOePQDJFaG63ig-p4Aj-eEOfQZ_-p3hSLItSfHD5YNVkDu5vlHXI4eFn_HM40XQfsweqcRAI/s400/debug_javascript_google_chrome_04.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Klik baris 11 untuk meletakkan break point di baris tsb.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMmmIss6y7TKxOR9AgRftgPUW3PhzN1oiy0T-gcvCOuiDEAwNsbo_tF_D1eQPTccsv4cSCckGlLEdAjpJWSiC77MkgH7U21OTsOj4kHJ_palCAjUmHkEas_VUKHZs9rDgh5B2GxgcFzPka/s1600/debug_javascript_google_chrome_05.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMmmIss6y7TKxOR9AgRftgPUW3PhzN1oiy0T-gcvCOuiDEAwNsbo_tF_D1eQPTccsv4cSCckGlLEdAjpJWSiC77MkgH7U21OTsOj4kHJ_palCAjUmHkEas_VUKHZs9rDgh5B2GxgcFzPka/s400/debug_javascript_google_chrome_05.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Sekarang pada pilihan &#39;Mau buah apa?&#39;, pilih salah satu buah:
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN_b7bGskE0SZlWMay1-8GDVlR29lNQuZsTnkcYGSwk71hmdL5fG7IHsKMCEnGX6xvDVcaoX1I-GhZdUcTrVQrHcMZtIbcPWhbNeJh4IL8JO-EUmBScuGnSnTjEYuZ8ENcTtnWPEEALcr2/s1600/debug_javascript_google_chrome_06.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN_b7bGskE0SZlWMay1-8GDVlR29lNQuZsTnkcYGSwk71hmdL5fG7IHsKMCEnGX6xvDVcaoX1I-GhZdUcTrVQrHcMZtIbcPWhbNeJh4IL8JO-EUmBScuGnSnTjEYuZ8ENcTtnWPEEALcr2/s400/debug_javascript_google_chrome_06.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Setelah pilihan buah diklik, maka debugger akan berhenti pada baris 11. Klik F10 untuk &#39;step over next function call&#39;, atau F11 untuk &#39;step into next function call&#39;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGX-s92hqo8hBRJ9wfj3zVXa1VIF8lwt7MNrIWxgiEiKXW6a55KlmzAFhw2aAXi1xHe5bzu16oAfkEc7vULK9SxdGqHUDoy2DxymjVCVqbg5r8wKwJ5uTLjN3rgtK57_83EZ-H2zW_WRtg/s1600/debug_javascript_google_chrome_07.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGX-s92hqo8hBRJ9wfj3zVXa1VIF8lwt7MNrIWxgiEiKXW6a55KlmzAFhw2aAXi1xHe5bzu16oAfkEc7vULK9SxdGqHUDoy2DxymjVCVqbg5r8wKwJ5uTLjN3rgtK57_83EZ-H2zW_WRtg/s400/debug_javascript_google_chrome_07.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;&lt;i&gt;Catatan&lt;/i&gt;&lt;/b&gt;: Tidak seperti firefox anda tidak perlu menginstall addon tambahan apapun pada google chrome untuk fasilitas debugging ini.</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/5924731905435337791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/12/debug-javascript-dengan-google-chrome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5924731905435337791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5924731905435337791'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/12/debug-javascript-dengan-google-chrome.html' title='Debug javascript dengan Google Chrome'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzHeJgAPD-E0IN2fICubOXO_jZH1efy3h7Qzejz1XdeYfABg4l7cW6XOXPJr-mERLntlrgYiLzjOzux6q9Nqte_YDAAkwrOJ5A1hORuyazmlONIw-MXIWVB3XKLgPShogjSGnttM2kZwna/s72-c/debug_javascript_google_chrome_01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-2348512099797824605</id><published>2011-11-08T17:05:00.000-08:00</published><updated>2011-11-13T20:16:00.740-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="internet telephone"/><category scheme="http://www.blogger.com/atom/ns#" term="nokia e51"/><category scheme="http://www.blogger.com/atom/ns#" term="voip"/><category scheme="http://www.blogger.com/atom/ns#" term="voiprakyat"/><category scheme="http://www.blogger.com/atom/ns#" term="voiprakyat.or.id"/><title type='text'>Menginstall VoIP di Nokia E51</title><content type='html'>VoIP (Voice over IP) adalah solusi koneksi telpon lewat Internet. Pada suatu jaringan VoIP ada sebuah komputer yang berfungsi sebagai Sentral Telpon atau Operator, komputer ini di sebut sebagai Server. Sedangkan pesawat-pesawat telpon pelanggannya berupa komputer atau perangkat-perangkat lain (termasuk smartphone) yang terhubung dengan internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Salah satu server VoIP indonesia adalah http://voiprakyat.or.id yang disponsori oleh bapak Onno Purbo. VoIPRakyat ini dibuat dari rakyat Indonesia untuk rakyat Indonesia alias gratis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Baru-baru ini, aku barusan pasang wifi router di rumah. Harga router wifi sekarang sudah murah, aku beli DLink type DIR-600 seharga Rp 235 ribu rupiah dan itupun agak kemahalan karena begitu selesai beli aku check harganya di bhineka.com cuma Rp 218 ribu he..he... Kebetulan aku punya HPku adalah nokia E51 yang mempunyai fasilitas wifi dan ada fitur Internet Telephone, jadi aku pikir tentunya HP ini bisa dimanfaatkan untuk voip dan ternyata memang bisa he..he...Berikut langkah-langkahnya: &lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Registrasi &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Daftar dulu untuk mendapatkan nomor telpon di voiprakyat lewat http://voiprakyat.or.id/?inc=signup&amp;amp;op=user , setelah pendaftaran berhasil anda akan mendapatkan voip id dan nomor telpon. Nomor telpon ini juga akan dikirim ke email anda untuk arsipnya. Di bawah ini adalah email konfirmasi pendaftaranku:&lt;br /&gt;
&lt;br /&gt;
=== 8&amp;lt; =========&lt;br /&gt;
&lt;br /&gt;
Halo Bambang Pranoto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Selamat datang di VoIP Rakyat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Di bawah ini adalah account ID dan password anda yang dapat anda gunakan untuk login ke VoIP Rakyat baik melalui website http://www.voiprakyat.or.id atau dengan VoIP Rakyat Communicator dan SIP/IAX2 softphone lainnya.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VoIP ID : nnnnnn (berupa 6 digit angka)&lt;br /&gt;
&lt;br /&gt;
IM ID : bpranoto&lt;br /&gt;
&lt;br /&gt;
Password : *****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nomor telepon VoIP anda adalah : nnnnnn (sama dengan VoIP ID di atas)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nomor lengkap telepon VoIP anda adalah : +62 848 1001 nnnnnn (tanpa spasi)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SIP proxy atau IAX gateway kami adalah : voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
IM server kami adalah: voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gunakan IM ID sebagai Account ID anda untuk login ke IM server voiprakyat.or.id menggunakan VoIP Rakyat Communicator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Summary:&lt;br /&gt;
&lt;br /&gt;
SIP address anda : nnnnnnn@voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
XMPP ID/JID dan email anda : bpranoto@voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Salam hangat,&lt;br /&gt;
&lt;br /&gt;
VoIP Rakyat Development Team.&lt;br /&gt;
&lt;br /&gt;
=== 8&amp;lt; =========&lt;br /&gt;
&lt;br /&gt;
Informasi penting di sini adalah: VoIP ID, password dan alamat server yaitu voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Konfigurasi SIP  di Nokia E51&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SIP (Session Initiation Protocol) adalah protocol yang dipergunakan untuk VoIP&lt;br /&gt;
&lt;br /&gt;
Akses lewat Menu =&amp;gt; Tools =&amp;gt; Settings =&amp;gt; Connection =&amp;gt; SIP Settings&lt;br /&gt;
&lt;br /&gt;
Option -&amp;gt; Add new -&amp;gt; Use Default Profile&lt;br /&gt;
&lt;br /&gt;
Isikan data-datanya sbb:&lt;br /&gt;
&lt;br /&gt;
Profile name : voiprakyat atau apa saja terserah anda&lt;br /&gt;
&lt;br /&gt;
Service profile: IETF&lt;br /&gt;
&lt;br /&gt;
Default Access Point: pilih salah satu dari access point yang ada&lt;br /&gt;
&lt;br /&gt;
Public Username: sip:nnnnnn@voiprakyat.or.id (nnnnnn adalah VoIP ID anda, lihat step 1 )&lt;br /&gt;
&lt;br /&gt;
User compression: No&lt;br /&gt;
&lt;br /&gt;
Registration: When needed&lt;br /&gt;
&lt;br /&gt;
Use Security: No&lt;br /&gt;
&lt;br /&gt;
Proxy Server: (tidak usah diset, atau set sesuai kebutuhan)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Registrar Server:&lt;br /&gt;
&lt;br /&gt;
Registrar Server address:  sip:voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
Realm: voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
Username: nnnnnn (nnnnnn adalah VoIP ID anda dari point 1)&lt;br /&gt;
&lt;br /&gt;
Password: ****** (sesuai password yang anda dapat dari point 1 )&lt;br /&gt;
&lt;br /&gt;
Transport Type: UDP&lt;br /&gt;
&lt;br /&gt;
Port: 5060&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Konfigurasi SIP selesai.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Konfigurasi Internet Tel di Nokia E51&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Akses lewat Menu =&amp;gt; Tools =&amp;gt; Settings =&amp;gt; Connection =&amp;gt; Internet tel.&lt;br /&gt;
&lt;br /&gt;
Option -&amp;gt; New Profile&lt;br /&gt;
&lt;br /&gt;
Name -&amp;gt; VoIPRakyat atau terserah anda&lt;br /&gt;
&lt;br /&gt;
SIP Profiles -&amp;gt; VoIPRakyat  (sesuai dengan yang anda set di poin 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4.Cara menggunakan panggilan voip&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Untuk dapat melakukan panggilan VoIP pastikan ada koneksi Internet tersedia di HP anda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lewat home screen, tekan nomor yang akan dipanggil (contoh: 901 nomor test voiprakyat), jangan tekan tombol dial (warna hijau) tapi tekan Option -&amp;gt; Call -&amp;gt; Voice Call -&amp;gt; Internet Call&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Untuk menyimpan di Daftar Kontak, simpan nomor telpon di field Internet telephone dengan format nomor seperti ini: 901@voiprakyat.or.id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Untuk membuat panggilan lewat  Daftar Kontak, buka record kontak yang akan dihubungi, sorot Internet telephone kemudian tekan tombol dial (warna hijau).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yang disayangkan, saat ini belum ada konektifiti antara voiprakyat dengan nomor telpon PSTN dan cellular sehingga kita hanya bisa saling berhubungan antara nomor voiprakyat saja.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Besok aku akan coba register dan install di BB istriku. Buat teman-teman (ma&#39;af hanya bagi yang benar-benar kenal sama aku) yang sudah mencoba dan berhasil silahkan kirim message untuk nomor telpon voipku.&lt;br /&gt;
&lt;ol&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/2348512099797824605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/11/menginstall-voip-di-nokia-e51.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2348512099797824605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2348512099797824605'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/11/menginstall-voip-di-nokia-e51.html' title='Menginstall VoIP di Nokia E51'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-5368422084381987033</id><published>2011-10-29T00:23:00.000-07:00</published><updated>2011-10-29T08:18:49.092-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="broken partition"/><category scheme="http://www.blogger.com/atom/ns#" term="e2fsck"/><category scheme="http://www.blogger.com/atom/ns#" term="ext4"/><category scheme="http://www.blogger.com/atom/ns#" term="fsck"/><category scheme="http://www.blogger.com/atom/ns#" term="grub rescue prompt"/><category scheme="http://www.blogger.com/atom/ns#" term="repair partition"/><category scheme="http://www.blogger.com/atom/ns#" term="testdisk"/><title type='text'>Recovering broken ubuntu partition</title><content type='html'>Recently, one of my client&#39;s computer (Ubuntu 10.10) refused to boot. Instead of booting the operating system it fell down to grub rescue prompt. This indicated that grub could not find its configuration file and it meant the partition table was corrupted :(.&lt;br /&gt;
&lt;br /&gt;
Fortunately, I finally succeeded repairing the system. What I learned from this experience is that ext file system is such a wonderful system which enabling partition recovery.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;These are steps I took, unfortunately there were no screenshots (forgot to take):&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;li&gt;Boot with Ubuntu live CD. The booting seemed took time forever because it tried to access the broken partition, but eventually the live session was up.&lt;/li&gt;
&lt;li&gt;Open terminal, became root and checked whether the partition was still there.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#fdisk -l&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Fortunately, fdisk still list the hard disk partition.&lt;/li&gt;
&lt;li&gt;Try to repair with e2fsck.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#e2fsck -C 0 -v /dev/sda1 &lt;/code&gt;&lt;br /&gt;-C 0: means the completion information will be written in file descriptor 0 which is our console.&lt;br /&gt;-v: verbose&lt;br /&gt;&lt;br /&gt;Unfortunately, this step failed. &lt;/li&gt;
&lt;li&gt;After some googling research, I knew that ext file system save its meta data structure in what is called &quot;Superblock&quot; and fortunately ext file system have several Superblocks, so if one superblock is failed we can recover from the other superblock. Now, my problem was find a way to query the superblocks. A way to query the superblock is with dumpe2fs&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# dumpe2fs /dev/sda1 | grep -i superblock&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, this step also failed. dumpe2fs could not read partition /dev/sda1&lt;/li&gt;
&lt;li&gt;Next step, I tried testdisk. You can read how to use testdisk here: http://www.howtogeek.com/howto/15761/recover-data-like-a-forensics-expert-using-an-ubuntu-live-cd/. Unfortunately, when testdisk &quot;Analyze&quot; function also failed to recover the partition. Its automatic search algorithm report that what it found were ntfs partitions which obviously wrong :)&lt;/li&gt;
&lt;li&gt;I then explored testdisk Advanced menu (File system utils). I found there was a facility to locate the superblock backups. I run this menu and fortunately it found all the superblock backups. Testdisk wrote all the findings in testdisk.log file so we didn&#39;t have to take the note manually.&lt;/li&gt;
&lt;li&gt;Quit running e2fsck again but this time with -b (use alternative superblock) option.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#e2fsck -b nnn &lt;nnnnn&gt; -C 0 -v -p -y /dev/sda1&lt;/nnnnn&gt;&lt;/code&gt;&lt;br /&gt;replace nnn with&lt;nnnnn&gt; one of the superblock backup found by testdisk in the above step. Look in testdisk.log&lt;br /&gt;&lt;br /&gt;This time e2fsck succeeded repairing the partition. I rebooted the computer, took out the live cd and the computer came to life again.&lt;/nnnnn&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ol&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/5368422084381987033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2011/10/recovering-broken-ubuntu-partition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5368422084381987033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5368422084381987033'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2011/10/recovering-broken-ubuntu-partition.html' title='Recovering broken ubuntu partition'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-5981994082572164950</id><published>2010-06-28T20:05:00.000-07:00</published><updated>2010-07-07T00:59:30.937-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="pdf"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>View pdf document inline in firefox linux</title><content type='html'>In my bus ticketing web application, tickets are generated in form of pdf file. The problem is firefox (currently version 3.6.6) is not designed to display pdf file in its browser window out of the box, we need to install a plugin.&lt;br /&gt;&lt;br /&gt;The first obvious option is to install adobe acrobat reader for linux which includes firefox plugin (can be freely downloaded from Adobe web site). However, there are some problems:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; It is huge!&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Seems there are some memory leaks (firefox 3,6.3 and acrobat reader 9.3.2), after some time it only displays white blank page. You need to restart firefox to cure it. I don&#39;t know whether the problem is in acrobat or firefox.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Fortunately, for Ubuntu, we still have another option:&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Install mozzplugger and xpdf-reader:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ sudo apt-get install mozplugger xpdf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Edit mozzplugger configuration file:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ sudo vim /etc/mozpluggerrc&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Find this line:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;text/x-pdf:pdf:PDF file&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Replace the blocks below that line to:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;       repeat noisy swallow(Xpdf) fill: xpdf &quot;$file&quot;&lt;br /&gt;       repeat noisy swallow(evince) fill: evice &quot;$file&quot;&lt;br /&gt;       ACROREAD()&lt;br /&gt;       repeat noisy swallow(okular) fill: okular &quot;$file&quot;&lt;br /&gt;       GV()&lt;br /&gt;       repeat noisy fill exits: xpdf &quot;$file&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Save the file&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Restart firefox&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Done. And here is a screen shot:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPBMl79pjwtuZU11uTKYF494ArIwWGYcrDrqyV-px90iwz3eAnVIRZXoLWWNekmyzoi1WW7n4oSTUWHo73JBdv4a8BEEtejbG1kQxOCvuBRE8LAgOUt5q3uorrCAdAAVcp50C7-AizQiKr/s1600/Screenshot-ticket_form.php+%28application-pdf+Object%29+-+Mozilla+Firefox.png&quot;&gt;&lt;img style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 206px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPBMl79pjwtuZU11uTKYF494ArIwWGYcrDrqyV-px90iwz3eAnVIRZXoLWWNekmyzoi1WW7n4oSTUWHo73JBdv4a8BEEtejbG1kQxOCvuBRE8LAgOUt5q3uorrCAdAAVcp50C7-AizQiKr/s320/Screenshot-ticket_form.php+%28application-pdf+Object%29+-+Mozilla+Firefox.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5488033098404220594&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/5981994082572164950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2010/06/view-pdf-document-inline-in-firefox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5981994082572164950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/5981994082572164950'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2010/06/view-pdf-document-inline-in-firefox.html' title='View pdf document inline in firefox linux'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPBMl79pjwtuZU11uTKYF494ArIwWGYcrDrqyV-px90iwz3eAnVIRZXoLWWNekmyzoi1WW7n4oSTUWHo73JBdv4a8BEEtejbG1kQxOCvuBRE8LAgOUt5q3uorrCAdAAVcp50C7-AizQiKr/s72-c/Screenshot-ticket_form.php+%28application-pdf+Object%29+-+Mozilla+Firefox.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-4245104186560886800</id><published>2009-11-16T07:24:00.000-08:00</published><updated>2009-11-16T07:33:46.489-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="install-wine-deps.sh"/><category scheme="http://www.blogger.com/atom/ns#" term="libcupsys2-dev"/><category scheme="http://www.blogger.com/atom/ns#" term="wine"/><title type='text'>Installing wine on Ubuntu 9.10 from source</title><content type='html'>I just upgraded my ubuntu 9.04 to ubuntu 9.10.&lt;br /&gt;&lt;br /&gt;Before recompiling wine, we needed to install all the dependencies. &lt;br /&gt;&lt;br /&gt;I grabbed the newest dependencies installation script from http://winezeug.googlecode.com/svn/trunk/install-wine-deps.sh&lt;br /&gt;&lt;br /&gt;However, when I ran it, it stopped with an error:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree       &lt;br /&gt;Reading state information... Done&lt;br /&gt;Package libcupsys2-dev is a virtual package provided by:&lt;br /&gt;  libcups2-dev 1.4.1-5ubuntu2.1&lt;br /&gt;You should explicitly select one to install.&lt;br /&gt;E: Package libcupsys2-dev has no installation candidate&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;From the error message, the solution is clear, edit the script and replace libcupsys2-dev with libcups2-dev&lt;br /&gt;&lt;br /&gt;... and we can enjoy the wine again now</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/4245104186560886800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/11/installing-wine-on-ubuntu-910-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4245104186560886800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4245104186560886800'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/11/installing-wine-on-ubuntu-910-from.html' title='Installing wine on Ubuntu 9.10 from source'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-3758831822624992818</id><published>2009-11-14T19:20:00.000-08:00</published><updated>2009-11-16T07:06:40.496-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hamachi"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 9.10"/><title type='text'>Ubuntu 9.10 hamachi problem</title><content type='html'>I just installed Ubuntu 9.10 on a fresh new computer for a client. &lt;br /&gt;&lt;br /&gt;For this particular computer I install hamachi. Unfortunately, when run it only displayed &#39;Killed&#39; in console and then a crash report notification appeared on the notification panel.&lt;br /&gt;&lt;br /&gt;After some googling, it turned that this new ubuntu doesn&#39;t like UPX packed application and unfortunately hamachi for linux (version hamachi-lnx-0.9.9.9-20) is one of it. &lt;br /&gt;&lt;br /&gt;The solution is:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Install upx uncompressor:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$sudo apt-get install upx-ucl&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;li&gt;Unpack hamachi (assuming hamachi is installed in /usr/bin):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ sudo upx -d hamachi&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;After that, hamachi ran fine. This solution is also applied for other UPX packed applications. Hopefully, Ubuntu fixes this upx packed application problem which will be the best solution.</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/3758831822624992818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/11/ubuntu-910-hamachi-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3758831822624992818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3758831822624992818'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/11/ubuntu-910-hamachi-problem.html' title='Ubuntu 9.10 hamachi problem'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-3013158093144912729</id><published>2009-09-05T11:59:00.001-07:00</published><updated>2009-09-05T12:46:37.130-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="youtube"/><title type='text'>Cara mendownload video youtube yang tidak dapat didownload....</title><content type='html'>Video-video di youtube.com tidak dapat didownload secara langsung, tetapi ada beberapa situs-situs dan program-program utility termasuk addon Mozila firefox dan Widget dari Opera yang memungkinkan kita mendownload video dari youtube.&lt;br /&gt;&lt;br /&gt;Namun beberapa video tidak dapat didownload dengan program-program khusus di atas. Kelihatannya youtube melakukan proteksi sehingga beberapa video hanya dapat dimainkan tetapi tidak dapat didownload. Sebagai contoh: http://www.youtube.com/watch?v=_fgURJZebqc&lt;br /&gt;&lt;br /&gt;Lalu bagaimana cara kita mendownload video-video yang tidak dapat didownload tersebut?&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Apapun proteksi yang dilakukan youtube, sebenarnya komputer kita telah mendownload file video tersebut. Kalau tidak, bagaimana browser kita bisa memainkan video tsb? Jadi kuncinya adalah bagaimana menemukan file yang telah didownload oleh browser kita tsb. Ikuti langkah-langkah ini.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;File-file video dari youtube adalah dalam format file .flv, maka pertama-tama kita harus mempunyai player dari file flv. Silahkan search di google player-player yang bisa memainkan file flv, ada banyak dan rasanya semua merupakan freeware yang dapat didownload gratis.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Buka youtube di browser kita dan nikmati videonya sampai selesai.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQjjpJKAXtZpWfYEcIjk5SC-QV2RGVkih73ampEDy3jukZPt8MNAAr1TQ5DX2raMuFXWAHkLwYylDpe3bn7laMZnmtE0DQunL0TzYg3Ruu1CedYbeOy32JAy4dTw_PVfLhryL2QLlA0Zwn/s1600-h/open_in_your_browser.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 194px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQjjpJKAXtZpWfYEcIjk5SC-QV2RGVkih73ampEDy3jukZPt8MNAAr1TQ5DX2raMuFXWAHkLwYylDpe3bn7laMZnmtE0DQunL0TzYg3Ruu1CedYbeOy32JAy4dTw_PVfLhryL2QLlA0Zwn/s320/open_in_your_browser.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378070074216769490&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Tunggu video sampai tuntas dimainkan, lalu cari direktori cache dari browser kita. Untuk Opera direktori tempat browser menyimpan file-file yang didonwload dapat dilihat dengan mengetikan di address barnya &lt;b&gt;&lt;i&gt;opera:about&lt;/i&gt;&lt;/b&gt;, untuk Firefox kita dapat melihatnya dengan mengetikkan &lt;b&gt;&lt;i&gt;about:cache&lt;/i&gt;&lt;/b&gt; di address barnya. Sorot textnya dan kemudian copy ke buffer.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzgxP6Qct_5je2AzdwjQS18Een_MidFWq1VRAHF7ZSqdOr_DXAM5vkNuvyhmbQ5xKRUGv2MyTv9VZvVuPNE7WNAEQyBbvDU21msxeomp4LpYd3YwM_DAyjVv2mOlX_y_Cgf8ZB6VkG_149/s1600-h/where_opera_stores_the_files.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 194px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzgxP6Qct_5je2AzdwjQS18Een_MidFWq1VRAHF7ZSqdOr_DXAM5vkNuvyhmbQ5xKRUGv2MyTv9VZvVuPNE7WNAEQyBbvDU21msxeomp4LpYd3YwM_DAyjVv2mOlX_y_Cgf8ZB6VkG_149/s320/where_opera_stores_the_files.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378070856888624018&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Buka Windows Explorer atau My Computer dan Paste di address bar lalu tekan Enter.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiVdO1AHxUBxsbRlcMP2ODRCO95jPAKlVYrEZYuRjDUVi0FtiMP4kJRdv6RBG5CKCzpGiYWvVHlNB1T5OyvdRxrGW1XviccIBPFbsUxDB9l3QeubFjdfGd1DP92PsRzaR5CFPupk519zMi/s1600-h/open_the_cache_directory.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiVdO1AHxUBxsbRlcMP2ODRCO95jPAKlVYrEZYuRjDUVi0FtiMP4kJRdv6RBG5CKCzpGiYWvVHlNB1T5OyvdRxrGW1XviccIBPFbsUxDB9l3QeubFjdfGd1DP92PsRzaR5CFPupk519zMi/s320/open_the_cache_directory.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378071134477540322&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Selanjutnya Klik View -&gt; Details dan kemudian View -&gt; Arrange Icons by -&gt; Size dan kemudian ulangi sekali lagi View -&gt; Arrange Icons by -&gt; Size. Setelah ini, file-file yang ada di direktori tsb. akan ditampilkan dari ukurannya yang paling besar ke paling kecil.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixFSsK1OOVe9VW6UAsZEaGyAbVctfxlEXjXW2umdkcd3a2qFVTl9QrvB113FJgQkuRrR7GExC7NgT8F_9NDKquCptL3bygplo4msokow5ikxG8XbS2icH-_lAHGaxj4y1Kxqaq8pwG-0kT/s1600-h/files_sort_by_size_descending.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixFSsK1OOVe9VW6UAsZEaGyAbVctfxlEXjXW2umdkcd3a2qFVTl9QrvB113FJgQkuRrR7GExC7NgT8F_9NDKquCptL3bygplo4msokow5ikxG8XbS2icH-_lAHGaxj4y1Kxqaq8pwG-0kT/s320/files_sort_by_size_descending.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378071520728482626&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Dari Size dan Date Modifiednya, kita tahu bahwa (kemungkinan besar) file yang paling atas adalah file video yang kita cari. Copykan file tsb. ke folder yang kita kehendaki, rename dan berikan extension .flv Pada contoh ini, file yang aku download aku rename menjadi file origami_cow.flv&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsg0Vf0XgtygVeogpXLA4JOnmQNPZg3klHaZEHenRL4PBdJKsHVVIC1icqDKkRhvwJq9KBjmEdUWc7jOSdja_wDQ4BSdOsYHW8gpMVGu4eymyE2kZ8u4xwpg-ZuUBHeGOccC37WLp1MN4F/s1600-h/copy_the_file_and_rename_to_flv_file.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsg0Vf0XgtygVeogpXLA4JOnmQNPZg3klHaZEHenRL4PBdJKsHVVIC1icqDKkRhvwJq9KBjmEdUWc7jOSdja_wDQ4BSdOsYHW8gpMVGu4eymyE2kZ8u4xwpg-ZuUBHeGOccC37WLp1MN4F/s320/copy_the_file_and_rename_to_flv_file.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378071739394689762&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt;Buka file origami_cow.flv tersebut di flv player kita.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin8fEwJ4qplLS8_mXB4zwYHUc1lmsgmUhlAN6xQ0T1tf8hlEM4k2qKk0qyzUsCrCR3go7M_Sj3Gu70alR4R0r4Dzcinc6bJcqNo4RIDrTk5CdN7uvu4eThXwerfMvC61RlfkgpYuvpnf3A/s1600-h/played_offline_with_flv_player.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 301px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin8fEwJ4qplLS8_mXB4zwYHUc1lmsgmUhlAN6xQ0T1tf8hlEM4k2qKk0qyzUsCrCR3go7M_Sj3Gu70alR4R0r4Dzcinc6bJcqNo4RIDrTk5CdN7uvu4eThXwerfMvC61RlfkgpYuvpnf3A/s320/played_offline_with_flv_player.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5378071991413313986&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/3013158093144912729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/09/cara-mendownload-video-youtube-yang.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3013158093144912729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/3013158093144912729'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/09/cara-mendownload-video-youtube-yang.html' title='Cara mendownload video youtube yang tidak dapat didownload....'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQjjpJKAXtZpWfYEcIjk5SC-QV2RGVkih73ampEDy3jukZPt8MNAAr1TQ5DX2raMuFXWAHkLwYylDpe3bn7laMZnmtE0DQunL0TzYg3Ruu1CedYbeOy32JAy4dTw_PVfLhryL2QLlA0Zwn/s72-c/open_in_your_browser.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-2547724523848072533</id><published>2009-08-20T17:19:00.000-07:00</published><updated>2009-08-21T11:37:39.213-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="installing mysql 5.1.37"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Problem installing MySQL 5.1.37 on Windows</title><content type='html'>Last night, I decided to upgrade my MySQL from version 4.1 to version 5 on my Windows XP box. I went to &lt;a href=http://dev.mysql.com/downloads/mysql/5.1.html#win32&gt;mysql&#39;s download area&lt;/a&gt; and downloaded the latest windows MSI installer version 5.1.37.&lt;br /&gt;&lt;br /&gt;After finished downloading the huge 91MB file, I backed up my MySQL database with mysqldump, uninstalled the old version 4.1 and began installed the new version, unfortunately the installation always failed with this message:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;MySQL Server 5.1 Setup Wizard ended prematurely&lt;br /&gt;&lt;br /&gt;The wizard was interrupted before MySQL Server 5.1. could be completely installed.&lt;br /&gt;&lt;br /&gt;Your system has not been modified. To complete installation at another time, please run&lt;br /&gt;setup again.&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Again, the old uncle google came to help. This is MySQL&#39;s bug, didn&#39;t they test it before releasing the new version? Google pointed me to &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=45418&quot;&gt;a solution&lt;/a&gt;: you need to download and install orca, a tool for editing MSI files, which can be downloaded from &lt;a href=&quot;http://www.technipages.com/wp-content/uploads/2007/11/orca.Msi&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Open the MySQL msi installation file, find and delete the action row SetDateTime and then save the msi file. After that, I had the new MySQL 5.1 installed on my computer. There was also no problem restoring the database.&lt;br /&gt;&lt;br /&gt;The next step was copying the libmysql.dll file to my php installation directory. Unfortunately, another problem came! the apache server always crashed whenever I loaded my php application, and again uncle google came to rescue, he leaded me to download &lt;a href=&quot;http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip&quot;&gt;this zip file&lt;/a&gt;, put down the apache server, copying the libmysql.dll from the zip file to the php directory, restarting the apache and then everything runs well.&lt;br /&gt;&lt;br /&gt;Kudos to uncle google!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/2547724523848072533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/08/problem-installing-mysql-5137-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2547724523848072533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/2547724523848072533'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/08/problem-installing-mysql-5137-on.html' title='Problem installing MySQL 5.1.37 on Windows'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-7048937403301986719</id><published>2009-08-14T13:54:00.000-07:00</published><updated>2009-08-15T00:47:03.295-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dispatcher.d"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="network manager"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 9.04"/><title type='text'>Gnome Network Manager dispatcher.d scripts doesn&#39;t run</title><content type='html'>I just set up a new linux box of Ubuntu 9.04. &lt;br /&gt;&lt;br /&gt;This computer will connect to netware servers, so I installed ipx. However, with this particular version of Ubuntu, the ipx won&#39;t start at boot time eventhough it has starting script in the /etc/init.d which is correctly linked to startup directories (/etc/rc2.d, /etc/rc3.d, etc). I guessed the reason is Gnome Network Manager, somehow it prevented ipx to be started.&lt;br /&gt;&lt;br /&gt;I then wrote a script in /etc/NetworkManager/dispatcher.d, I gave it a name: 02ipx.sh, so it will executed after the built in /etc/NetworkManager/01ifupdown, the content is very simple&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;if [ &quot;$1&quot; == &quot;eth0&quot; ] &amp;&amp; [ $2 == &quot;up&quot; ]&lt;br /&gt;then&lt;br /&gt; /etc/init.d/ipx restart&lt;br /&gt;fi&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I assign root as the owner of script and set the permission to 775. Unfortunately, this script was never called!!&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;After spent 5 hours pulling my hairs, uncle Google came to help with &lt;br /&gt;&lt;a href=&quot;http://markmail.org/message/lqq2rup4ludz4q7z#query:network%20manager%20dispatcher.d%20not%20running+page:1+mid:43klj3a75iyryv5g+state:results&quot;&gt;this page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It turns that Network Manager is very picky with the script permission and ownership. Here is the relevant quote :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;font size=&quot;small&quot;&gt;&lt;br /&gt;Yep that is correct from the source:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://svn.gnome.org/viewvc/NetworkManager/tags/NETWORKMANAGER_0_6_5_RELEASE/dispatcher-daemon/NetworkManagerDispatcher.c?view=markup&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yep that is correct from the source:&lt;br /&gt;&lt;br /&gt;http://svn.gnome.org/viewvc/NetworkManager/tags/NETWORKMANAGER_0_6_5_RELEASE/dispatcher-daemon/NetworkManagerDispatcher.c?view=markup&lt;br /&gt;&lt;br /&gt;/* * nmd_permission_check *&lt;br /&gt;* Verify that the given script has the permissions we want. Specifically, &lt;br /&gt;* ensure that the file is&lt;br /&gt;* - A regular file. &lt;br /&gt;* - Owned by root. &lt;br /&gt;* - Not writable by the group or by other. &lt;br /&gt;* - Not setuid. &lt;br /&gt;* - Executable by the owner. &lt;br /&gt;* */&lt;br /&gt;&lt;/font&gt; &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So the Network Manager doesn&#39;t like the 775 permission of my script. Changing the permission to 755 solves my problem.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/7048937403301986719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/08/gnome-network-manager-dispatcherd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7048937403301986719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7048937403301986719'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/08/gnome-network-manager-dispatcherd.html' title='Gnome Network Manager dispatcher.d scripts doesn&#39;t run'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-4348583155545913219</id><published>2009-08-05T11:16:00.000-07:00</published><updated>2009-08-05T11:38:02.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="acpid"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shutdown problem"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu shutdown problem, acpid: exiting...</title><content type='html'>Some times ago, I uninstalled gnome network-manager on my Ubuntu 9.04 dan replaced it with WICD because it won&#39;t bring up ipx protocol on boot time. Unfortunately, WICD also has its own problem, it can&#39;t bring up your wired and wireless interface simultaneously.&lt;br /&gt;&lt;br /&gt;Tonight, I decided to replace WICD with gnome network-manager and I planned to fix the ipx problem through its dispatcher scripts feature. Surprisingly, right after the network manager installed there is no problem with the ipx protocol, apparently the package network-manager in ubuntu repository has been updated recently.&lt;br /&gt;&lt;br /&gt;However, when I shutdown or restarted my computer, it always hang with a blank screen displaying the message: &lt;span style=&quot;font-style:italic;&quot;&gt;acpid:exiting&lt;/span&gt;, the only way to completely shut down my laptop is only by pressing the power button for about 3 seconds. &lt;br /&gt;&lt;br /&gt;After some googling, it turns that the problem was the network interfaces should be brought down before taking down the computer.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Here is the solution:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Edit as root the file /etc/init.d/alsa-utils&lt;br /&gt;&lt;li&gt;Find &lt;i&gt;stop)&lt;/i&gt;, here is what it looks like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  stop)&lt;br /&gt;        EXITSTATUS=0&lt;br /&gt;        TARGET_CARD=&quot;$2&quot;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Insert statements to bring down your network interfaces:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  stop)&lt;br /&gt;        ifconfig wlan0 down&lt;br /&gt;        ifconfig eth0 down&lt;br /&gt;        EXITSTATUS=0&lt;br /&gt;        TARGET_CARD=&quot;$2&quot;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Problem solved ... :)&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/4348583155545913219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/08/ubuntu-shutdown-problem-acpid-exiting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4348583155545913219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/4348583155545913219'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/08/ubuntu-shutdown-problem-acpid-exiting.html' title='Ubuntu shutdown problem, acpid: exiting...'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7890476220667452667.post-7552465741597522780</id><published>2009-06-28T10:05:00.000-07:00</published><updated>2009-06-28T10:17:36.279-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pidgin"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="yahoo messenger"/><title type='text'>Yahoo messenger problem on Linux</title><content type='html'>Recently, I can&#39;t connect to yahoo messenger through Pidgin on my Ubuntu 9.04 box. After some googling I found this page: http://news.softpedia.com/news/How-to-Fix-Yahoo-problem-in-Pidgin-114754.shtml&lt;br /&gt;&lt;br /&gt;Unfortunately, after following the steps I still can&#39;t connect to yahoo with error message: unknown &quot;error 1013. Logging into the Yahoo! website may fix this&quot;. Logging to yahoo website as suggested doesn&#39;t cure the problem :(&lt;br /&gt;&lt;br /&gt;After some more googling, I found this page: http://developer.pidgin.im/ticket/9467. Removing the @yahoo.com part of your pidgen account solves the problem.</content><link rel='replies' type='application/atom+xml' href='http://bpranoto.blogspot.com/feeds/7552465741597522780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bpranoto.blogspot.com/2009/06/yahoo-messenger-problem-on-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7552465741597522780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7890476220667452667/posts/default/7552465741597522780'/><link rel='alternate' type='text/html' href='http://bpranoto.blogspot.com/2009/06/yahoo-messenger-problem-on-linux.html' title='Yahoo messenger problem on Linux'/><author><name>Bambang Pranoto</name><uri>http://www.blogger.com/profile/05426035625148368706</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>