<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6405865758808618250</id><updated>2012-02-15T23:18:46.041-08:00</updated><category term='linux'/><category term='Python'/><category term='Graph'/><category term='Servlets'/><category term='MVC'/><category term='JSP'/><category term='Custom Tag'/><category term='JavaBean'/><category term='wvdial'/><category term='Arch'/><category term='awesome'/><category term='RubyGems'/><category term='Java'/><category term='NetBeans'/><category term='Ajax'/><category term='NERDTree'/><category term='mutt'/><category term='Enterprise'/><category term='Tab Completion'/><category term='Smart'/><category term='Chakra'/><category term='Ruby'/><category term='Apache OFBiz'/><category term='OrientDB'/><category term='vim'/><category term='project management'/><category term='window manager'/><category term='Comet'/><category term='Phoix'/><category term='Readline'/><category term='EV-DO'/><title type='text'>bpdp's changelogs</title><subtitle type='html'>On complexities of Software Engineering, FOSS, {Syntactic|Semantic|Pragmatic} Web, and Social Computing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-3355979142854279037</id><published>2012-02-14T23:46:00.000-08:00</published><updated>2012-02-14T23:46:47.009-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OrientDB'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Using OrientDB - Tinkerpop Blueprints from NetBeans</title><content type='html'>Using &lt;a href="http://http://code.google.com/p/orient/"&gt;OrientDB&lt;/a&gt; from &lt;a href="http://www.netbeans.org"&gt;NetBeans&lt;/a&gt; is pretty easy. Here I will give you some of the steps needed for the uninitiated. NetBeans version is not so important, although in this posting I use NetBeans 7.1. To follow this article, you need OrientDB (as this is about Tinkerpop Blueprints, of course you need orientdb-graphed package - mine is 1.0RC8), JDK (mine is JDK7_u2), and NetBeans (mine is 7.1).This article assume that we will use remote mode URL from OrientDB to connect to database. Here I just use &lt;b&gt;tinkerpop&lt;/b&gt; database which already exist in &lt;b&gt;$ORIENTDB_HOME/database/tinkerpop&lt;/b&gt;. So, first time is fire up your server:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;$ server.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Open NetBeans and create your project (&lt;b&gt;File - New Project - Java - Java Application&lt;/b&gt;) and put this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-C8Egtua6EZk/TztdyvjdYDI/AAAAAAAAATg/1xi-BbAt2uI/s1600/create-project.png" imageanchor="1" style=""&gt;&lt;img border="0" height="182" width="320" src="http://1.bp.blogspot.com/-C8Egtua6EZk/TztdyvjdYDI/AAAAAAAAATg/1xi-BbAt2uI/s320/create-project.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Our project structure looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w7eJ75Nt0Jw/TztgvW02TRI/AAAAAAAAAUE/J6fNhw2fBMs/s1600/project-structure.png" imageanchor="1" style=""&gt;&lt;img border="0" height="215" width="280" src="http://1.bp.blogspot.com/-w7eJ75Nt0Jw/TztgvW02TRI/AAAAAAAAAUE/J6fNhw2fBMs/s320/project-structure.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Next, we should manage OrientDB library. Choose &lt;b&gt;Tools - Library Manager&lt;/b&gt; and put all of the jar files in &lt;b&gt;$ORIENTDB_HOME/lib&lt;/b&gt; into one container like this (mine is called &lt;b&gt;OrientDB-Tinkerpop&lt;/b&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jPimL-U5blA/Tzte15W5FEI/AAAAAAAAATs/GL1AZ9oQ_iE/s1600/library-manager.png" imageanchor="1" style=""&gt;&lt;img border="0" height="195" width="320" src="http://2.bp.blogspot.com/-jPimL-U5blA/Tzte15W5FEI/AAAAAAAAATs/GL1AZ9oQ_iE/s320/library-manager.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After that, we put the library into our project by choosing &lt;b&gt;File - Project Properties (FirstOrientDB) - Libraries&lt;/b&gt; then add OrientDB-Tinkerpop library into our project:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hYrsO4q_sHw/TztfphBWRPI/AAAAAAAAAT4/bTDjY5yYDfM/s1600/project-properties.png" imageanchor="1" style=""&gt;&lt;img border="0" height="227" width="320" src="http://2.bp.blogspot.com/-hYrsO4q_sHw/TztfphBWRPI/AAAAAAAAAT4/bTDjY5yYDfM/s320/project-properties.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That's all the steps needed to prepare our project. For the source code part, it won't be too difficult also since we have the example from &lt;a href="https://github.com/tinkerpop/blueprints/wiki/"&gt;Tinkerpop Blueprints wiki&lt;/a&gt; (although they use Neo4J as an example). The class for OrientDB is OrientGraph. So, put this source code inside &lt;b&gt;FirstOrientDB.java&lt;/b&gt;:&lt;pre class="brush: java"&gt;&lt;br /&gt;package firstorientdb;&lt;br /&gt;&lt;br /&gt;import com.orientechnologies.common.exception.OException;&lt;br /&gt;import com.tinkerpop.blueprints.pgm.impls.orientdb.OrientGraph;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author bpdp&lt;br /&gt; */&lt;br /&gt;public class FirstOrientDB {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param args the command line arguments&lt;br /&gt;     */&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt; OrientGraph graph = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;&lt;br /&gt;            graph = new OrientGraph("remote:localhost/tinkerpop", "admin", "admin");&lt;br /&gt;            System.out.println("Success");&lt;br /&gt;&lt;br /&gt;        } catch (OException e) {&lt;br /&gt;  &lt;br /&gt;            System.out.println("Not succeed - " + e.getMessage());&lt;br /&gt;  &lt;br /&gt;        } finally {&lt;br /&gt;&lt;br /&gt;            if( graph != null )&lt;br /&gt;                graph.shutdown();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;In the firstime, usually you have error from NetBeans. This error comes from library which should be imported. Instead of writing import statement by myself, I let the error happened and then resolve it by using &lt;b&gt;Ctrl-Shift-I&lt;/b&gt;. From the source code, you may see that the connection was done by OrientGraph class. Its parameters are URL, username, password. We can see also that we can catch error by catching OException, the base Exception class in OrientDB. Here is the result when you press F6 or run the project:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xV3dV5MFoaE/TztiCQWM3AI/AAAAAAAAAUQ/RtdUUAgrUZM/s1600/success.png" imageanchor="1" style=""&gt;&lt;img border="0" height="111" width="320" src="http://3.bp.blogspot.com/-xV3dV5MFoaE/TztiCQWM3AI/AAAAAAAAAUQ/RtdUUAgrUZM/s320/success.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you can make it until this step, then you may now use Tinkerpop with your OrientDB inside your NetBeans project. Happy hacking!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-3355979142854279037?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/3355979142854279037/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2012/02/using-orientdb-tinkerpop-blueprints.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3355979142854279037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3355979142854279037'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2012/02/using-orientdb-tinkerpop-blueprints.html' title='Using OrientDB - Tinkerpop Blueprints from NetBeans'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-C8Egtua6EZk/TztdyvjdYDI/AAAAAAAAATg/1xi-BbAt2uI/s72-c/create-project.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-7955768158984615623</id><published>2012-02-14T08:01:00.000-08:00</published><updated>2012-02-14T08:01:00.131-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Graph'/><category scheme='http://www.blogger.com/atom/ns#' term='OrientDB'/><title type='text'>Introduction to Graph Database and OrientDB</title><content type='html'>&lt;a href="http://http://www.graph-database.org/"&gt;Graph database&lt;/a&gt; is a kind of &lt;a href="http://www.nosql-databases.org"&gt;NOSQL&lt;/a&gt; database which simply a term to show about the database management system software which is not a part of relational database. Since the scalability issues have arise and become a very big concerns for any company, this kind of database is getting more and more attention. People usually call this kind of needs on data scalability as &lt;b&gt;web scale&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;You may see from the data needs and inherent characteristics of web application that web is usually comprise of many resources which can link each other. This characteric is inherent in a graph, just like mathematicians usually care about. While the discussion about graph theory is outside from the scope of this article, readers interested in background theory about graph database should find a good book in discrete mathematics and especially graph theory. Graph theory is one prime object study of discrete mathematics and become one prominent theory since the first publishing of Leonhard Euler paper entitled "Seven Bridges of Königsberg". A graph consists of vertices and edges, as explained in this picture:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5N0JTuvjjCM/TzY8hr-67eI/AAAAAAAAASk/wXvuSUmbASc/s1600/graph.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://1.bp.blogspot.com/-5N0JTuvjjCM/TzY8hr-67eI/AAAAAAAAASk/wXvuSUmbASc/s320/graph.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Graph theory has a very broad range of application, not just in web and / or computer science. That said, I will not repeat the things that already written in Wikipedia, just have a look at the &lt;a href="http://en.wikipedia.org/wiki/Graph_theory#Applications"&gt;Wikipedia articles&lt;/a&gt; and found it by yourself. &lt;br /&gt;&lt;br /&gt;There are some companies and open source projects that realize the importance of graph theory and start the development of graph database. To make you confuse, there are some software that you can use, for example &lt;a href="http://www.neo4j.org"&gt;Neo4J&lt;/a&gt;, &lt;a href="http://code.google.com/p/orient/"&gt;OrientDB&lt;/a&gt;, &lt;a href="http://www.mulgara.org"&gt;Mulgara&lt;/a&gt; - a specialized version of Graph Database which deals with RDF, etc. Benchmarking and choosing which graph database is better is not in the scope of this article and I personally do not interested in all of those lies, so I just want to use OrientDB for all my graph database needs. :p&lt;br /&gt;&lt;br /&gt;OrientDB comes with small size zipped file. It takes only around 2 MB for OrientDB or you may get OrientDB with all of Tinkerpop "standard" inside only with around 8 MB size.&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;...&lt;br /&gt;-rw-r--r-- 1 bpdp users 2689843 Feb  3 06:06 orientdb-1.0rc8.zip&lt;br /&gt;-rw-r--r-- 1 bpdp users 8584056 Feb  3 06:07 orientdb-graphed-1.0rc8.zip&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You will ask then, what is the difference between those two zip files? &lt;b&gt;orientdb-version&lt;/b&gt; is the graph database software and only OrientDB, while for orientdb-graphed, is also consists of &lt;a href="http://www.tinkerpop.com"&gt;Tinkerpop&lt;/a&gt; thingie beside the graph database. Tinkerpop builds some software (open source) related with graph. You can use this graphed edition if you want to enable Tinkerpop abilities in your OrientDB database. It provides wrapper for OrientDB database so that you can use Tinkerpop related API in your software. There are 4 API supported by OrientDB: Blueprints, Gremlin, Rexster, and Pipes.&lt;br /&gt;&lt;br /&gt;In this article, we will use the graphed version. Installation is pretty easy, as long as you have JDK, then it should not be a problem at all. What you need to do is only unzip the file and set some enviroment variables.&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;$ unzip orientdb-graphed-1.0rc8.zip&lt;br /&gt;$ cd orientdb-graphed-1.0rc8&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I put this in my &lt;b&gt;$HOME/.bashrc&lt;/b&gt; file:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;export ORIENTDB_HOME=/home/bpdp/software/orientdb/orientdb-graphed&lt;br /&gt;export PATH=$PATH:$ORIENTDB_HOME/bin&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;One more thing, we should also change the configuration in &lt;b&gt;$ORIENTDB_HOME/config/orientdb-server-log.properties&lt;/b&gt; to reflect the location of the log file:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;java.util.logging.FileHandler.pattern=/home/bpdp/software/orientdb/orientdb-graphed/log/orient-server.log&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You may of course change the location to any other place in filesystem that you want. To execute the server, use &lt;b&gt;$ORIENTDB_HOME/bin/server.sh&lt;/b&gt; shell script:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;$ server.sh &lt;br /&gt;           .                                              &lt;br /&gt;          .`        `                                     &lt;br /&gt;          ,      `:.                                      &lt;br /&gt;         `,`    ,:`                                       &lt;br /&gt;         .,.   :,,                                        &lt;br /&gt;         .,,  ,,,                                         &lt;br /&gt;    .    .,.:::::  ````                                   &lt;br /&gt;    ,`   .::,,,,::.,,,,,,`;;                      .:      &lt;br /&gt;    `,.  ::,,,,,,,:.,,.`  `                       .:      &lt;br /&gt;     ,,:,:,,,,,,,,::.   `        `         ``     .:      &lt;br /&gt;      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::     &lt;br /&gt;       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:      &lt;br /&gt;        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:      &lt;br /&gt;  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:      &lt;br /&gt;  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:      &lt;br /&gt;    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:      &lt;br /&gt;      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:      &lt;br /&gt;           ,::::,,,. `:   ,,   :::::    :     :   .:      &lt;br /&gt;           ,,:` `,,.                                      &lt;br /&gt;          ,,,    .,`                                      &lt;br /&gt;         ,,.     `,                     GRAPH-DB Server   &lt;br /&gt;       ``        `.                                       &lt;br /&gt;                 ``                                       &lt;br /&gt;                 `                                        &lt;br /&gt;&lt;br /&gt;2012-02-11 10:34:02:864 INFO [OLogManager] OrientDB Server v1.0rc8 (build @BUILD@) is starting up...&lt;br /&gt;2012-02-11 10:34:03:336 INFO [OLogManager] -&amp;gt; Loaded memory database 'temp'&lt;br /&gt;2012-02-11 10:34:03:372 INFO [OLogManager] Listening binary connections on 0.0.0.0:2424&lt;br /&gt;2012-02-11 10:34:03:375 INFO [OLogManager] Listening cluster connections on 0.0.0.0:2434&lt;br /&gt;2012-02-11 10:34:03:377 INFO [OLogManager] Listening http connections on 0.0.0.0:2480&lt;br /&gt;2012-02-11 10:34:03:402 INFO [OLogManager] Installing GREMLIN language v.1.4&lt;br /&gt;2012-02-11 10:34:03:437 INFO [OLogManager] OrientDB Server v1.0rc8 is active.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;From another terminal, we may use &lt;b&gt;$ORIENTDB_HOME/bin/console.sh&lt;/b&gt; shell script to access the server:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;$ console.sh &lt;br /&gt;OrientDB console v.1.0rc8 (build @BUILD@) www.orientechnologies.com&lt;br /&gt;Type 'help' to display all the commands supported.&lt;br /&gt;&lt;br /&gt;Installing extensions for GREMLIN language v.1.4&lt;br /&gt;&lt;br /&gt;&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The database usually located in &lt;b&gt;$ORIENTDB_HOME/database&lt;/b&gt;. Although you may have &lt;b&gt;filesystem&lt;/b&gt; and &lt;b&gt;memory&lt;/b&gt; as a URL for connection, this time we will use only &lt;b&gt;remote&lt;/b&gt; to connect to the database. Here is how you will do it and how you will display information about the database:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&gt; connect remote:localhost/tinkerpop admin admin&lt;br /&gt;Connecting to database [remote:localhost/tinkerpop] with user 'admin'...OK&lt;br /&gt;&lt;br /&gt;&gt; info&lt;br /&gt;Current database: tinkerpop (url=remote:localhost/tinkerpop)&lt;br /&gt;&lt;br /&gt;Total size: 1.48Mb&lt;br /&gt;&lt;br /&gt;Cluster configuration: {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;CLUSTERS:&lt;br /&gt;----------------------------------------------+------+---------------------+-----------+-----------+&lt;br /&gt; NAME                                         |  ID  | TYPE                | RECORDS   | SIZE      |&lt;br /&gt;----------------------------------------------+------+---------------------+-----------+-----------+&lt;br /&gt; index                                        |     1| PHYSICAL            |        11 |Not supported |&lt;br /&gt; orole                                        |     3| PHYSICAL            |         3 |Not supported |&lt;br /&gt; ouser                                        |     4| PHYSICAL            |         3 |Not supported |&lt;br /&gt; default                                      |     2| PHYSICAL            |         0 |Not supported |&lt;br /&gt; ographvertex                                 |     6| PHYSICAL            |       813 |Not supported |&lt;br /&gt; ographedge                                   |     7| PHYSICAL            |      8051 |Not supported |&lt;br /&gt; orids                                        |     5| PHYSICAL            |      3080 |Not supported |&lt;br /&gt; internal                                     |     0| PHYSICAL            |         3 |Not supported |&lt;br /&gt;----------------------------------------------+------+---------------------+-----------+-----------+&lt;br /&gt; TOTAL                                                                               0 |        0b |&lt;br /&gt;--------------------------------------------------------------------------------------- -----------+&lt;br /&gt;&lt;br /&gt;CLASSES:&lt;br /&gt;----------------------------------------------+---------------------+-----------+&lt;br /&gt; NAME                                         | CLUSTERS            | RECORDS   |&lt;br /&gt;----------------------------------------------+---------------------+-----------+&lt;br /&gt; ORIDs                                        | 5                   |      3080 |&lt;br /&gt; OUser                                        | 4                   |         3 |&lt;br /&gt; OGraphEdge                                   | 7                   |      8051 |&lt;br /&gt; ORole                                        | 3                   |         3 |&lt;br /&gt; OGraphVertex                                 | 6                   |       813 |&lt;br /&gt;----------------------------------------------+---------------------+-----------+&lt;br /&gt; TOTAL                                                                    11950 |&lt;br /&gt;--------------------------------------------------------------------------------+&lt;br /&gt;&lt;br /&gt;INDEXES:&lt;br /&gt;----------------------------------------------+------------+-----------------------+----------------+-----------+&lt;br /&gt; NAME                                         | TYPE       |         CLASS         |     FIELDS     | RECORDS   |&lt;br /&gt;----------------------------------------------+------------+-----------------------+----------------+-----------+&lt;br /&gt; edges                                        | NOTUNIQUE  |                       |                |        89 |&lt;br /&gt; vertices                                     | NOTUNIQUE  |                       |                |       977 |&lt;br /&gt; dictionary                                   | DICTIONARY |                       |                |         0 |&lt;br /&gt;----------------------------------------------+------------+-----------------------+----------------+-----------+&lt;br /&gt; TOTAL = 3                                                                                                 1066 |&lt;br /&gt;----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To shutdown the server, give &lt;b&gt;shutdown.sh&lt;/b&gt; command from the shell:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;$ shutdown.sh &lt;br /&gt;Sending shutdown command to remote OrientDB Server instance...&lt;br /&gt;Shutdown executed correctly&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You will see this one from server console:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;2012-02-14 10:47:50:750 INFO [OLogManager] Received shutdown command from the remote client /127.0.0.1:57411&lt;br /&gt;2012-02-14 10:47:50:750 INFO [OLogManager] Remote client /127.0.0.1:57411 authenticated. Starting shutdown of server...&lt;br /&gt;2012-02-14 10:47:50:751 INFO [OLogManager] OrientDB Server is shutdowning...&lt;br /&gt;2012-02-14 10:47:51:497 INFO [OLogManager] Shutdowning handler graph...&lt;br /&gt;2012-02-14 10:47:51:498 INFO [OLogManager] Shutdowning handler default...&lt;br /&gt;2012-02-14 10:47:51:499 INFO [OLogManager] Shutdowning handler automaticBackup...&lt;br /&gt;2012-02-14 10:47:51:499 INFO [OLogManager] Shutdowning connection listener 'ONetworkProtocolBinary /0.0.0.0:2424:'...&lt;br /&gt;2012-02-14 10:47:51:499 INFO [OLogManager] Shutdowning connection listener 'OClusterNetworkProtocol /0.0.0.0:2434:'...&lt;br /&gt;2012-02-14 10:47:51:500 INFO [OLogManager] Shutdowning connection listener 'ONetworkProtocolHttpDb /0.0.0.0:2480:'...&lt;br /&gt;2012-02-14 10:47:51:500 INFO [OLogManager] OrientDB Server shutdown complete&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To conclude, there are still some areas that maybe need more attention. People in IT love standardization, although sometimes they &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_Office_Open_XML_and_OpenDocument"&gt;create more than one standard for one purpose&lt;/a&gt;. &lt;a href="http://www.unqlspec.org/display/UnQL/Home"&gt;UnQL&lt;/a&gt;, the standard for document-oriented is alredy discussed while there are still a little bit flux in Graph Database world. Someday maybe people start to discuss this issue and come up with the result. Well, hopefully :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-7955768158984615623?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/7955768158984615623/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2012/02/introduction-to-graph-database-and.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/7955768158984615623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/7955768158984615623'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2012/02/introduction-to-graph-database-and.html' title='Introduction to Graph Database and OrientDB'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-5N0JTuvjjCM/TzY8hr-67eI/AAAAAAAAASk/wXvuSUmbASc/s72-c/graph.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-241074306674847542</id><published>2012-02-13T11:04:00.000-08:00</published><updated>2012-02-13T11:07:08.535-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache OFBiz'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise'/><title type='text'>Apache OFBiz - ASF Solution for Enterprise Automation</title><content type='html'>As my daily jobs require me to pay attention only to the development tools, I don't pay attention to this software in the first place. What I mean by this is, I realized that there is an ERP solution from Apache Software Foundation before but after I promise my students to give them a free and open source software in my "Business Information Systems" class, then I started to look for free and open source ERP package. Then I remember about &lt;a href="http://ofbiz.apache.org/"&gt;Apache OFBiz Project&lt;/a&gt; which provide with a complete ERP package for free (in the sense of free beer and free speech). In the list below, you may have these functionalities inside (taken from the website):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Advanced e-commerce&amp;nbsp;&lt;/li&gt;&lt;li&gt;Catalog management&amp;nbsp;&lt;/li&gt;&lt;li&gt;Promotion and pricing management&amp;nbsp;&lt;/li&gt;&lt;li&gt;Order management (sales and purchase)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Customer management (part of general party management)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Warehouse management&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fulfillment (auto stock moves, batched pick, pack and ship)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Accounting (invoice, payment and billing accounts, fixed assets)&lt;/li&gt;&lt;li&gt;Manufacturing management&amp;nbsp;&lt;/li&gt;&lt;li&gt;General work effort management (events, tasks, projects, requests, etc)&lt;/li&gt;&lt;li&gt;Content management (for product content, web sites, general content, blogging, forums, etc)&amp;nbsp;&lt;/li&gt;&lt;li&gt;A maturing Point Of Sales (POS) module using a rich client interface&amp;nbsp;&lt;/li&gt;&lt;li&gt;/etc&lt;/li&gt;&lt;/ol&gt;The installation is pretty straightforward as it was written in README files that goes inside the tarball (or actually the zipped file) that you can &lt;a href="http://ofbiz.apache.org/download.html"&gt;download&lt;/a&gt;. Unfortunately, you have to build and populate the database first (at first, it uses only JavaDB, but you may &lt;a href="https://cwiki.apache.org/OFBTECH/apache-ofbiz-technical-production-setup-guide.html#ApacheOFBizTechnicalProductionSetupGuide-DatabaseSetup"&gt;change it to another DBMS software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To install the software, just unpack and then build and populate database by using &lt;a href="http://ant.apache.org/"&gt;Apache Ant&lt;/a&gt; which is already included in the distribution, and you are good to go:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: shell"&gt;$ unzip apache-ofbiz-10.04.zip&lt;br /&gt;$ cd apache-ofbiz-10.04&lt;br /&gt;$ ./ant run-install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Notes&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;You can not use JDK7 with Apache OFBiz, instead use JDK6 (latest version is 1.6.0_29). I use 1.6.0_27 and it still works correctly. If you use Windows, read the README file. If you are too lazy, wipe away your Windows OS, install Linux, follow the instruction in this blog and you are all set. :p&lt;br /&gt;&lt;br /&gt;After finish with "BUILD SUCCESS" notification, run Apache OFBiz using the shell script (startofbiz.sh) or batch file (startofbiz.bat) if you use Windows. At first you will be overwhelmed by too many messages in console:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;$ ./startofbiz.sh &lt;br /&gt;Set OFBIZ_HOME to - /home/bpdp/master/apache-ofbiz/apache-ofbiz-10.04&lt;br /&gt;Admin socket configured on - /127.0.0.1:10523&lt;br /&gt;2012-02-14 01:34:02,569 (main) [    ContainerLoader.java:50 :INFO ] [Startup] Loading containers...&lt;br /&gt;2012-02-14 01:34:02,966 (main) [ ComponentContainer.java:177:INFO ] Auto-Loading component directory : [/home/bpdp/master/apache-ofbiz/apache-ofbiz-10.04/framework]&lt;br /&gt;2012-02-14 01:34:03,007 (main) [ ComponentContainer.java:238:INFO ] Loading component : [geronimo]&lt;br /&gt;2012-02-14 01:34:03,062 (main) [ ComponentContainer.java:238:INFO ] Loading component : [sql]&lt;br /&gt;..........&lt;br /&gt;..........&lt;br /&gt;..........&lt;br /&gt;..........&lt;br /&gt;..........&lt;br /&gt;2012-02-14 01:35:00,935 (default-invoker-Thread-11) [                Log.java:111:INFO ] [CommonPermissionServices.xml#genericBasePermissionCheck] Checking for primary permission ACCOUNTING_CREATE&lt;br /&gt;2012-02-14 01:35:00,961 (default-invoker-Thread-11) [     ServiceEcaRule.java:134:INFO ] For Service ECA [fixedAssetPermissionCheck] on [return] got false for condition: [hasPermission][equals][false][true][Boolean]&lt;br /&gt;2012-02-14 01:35:00,972 (default-invoker-Thread-11) [  ServiceDispatcher.java:599:INFO ] Sync service [JobDispatcher/fixedAssetPermissionCheck] finished in [3751] milliseconds&lt;br /&gt;2012-02-14 01:35:01,000 (default-invoker-Thread-8) [  ServiceDispatcher.java:599:INFO ] Sync service [JobDispatcher/sendEmailDated] finished in [4124] milliseconds&lt;br /&gt;2012-02-14 01:35:01,105 (default-invoker-Thread-11) [  ServiceDispatcher.java:599:INFO ] Sync service [JobDispatcher/createMaintsFromTimeInterval] finished in [3898] milliseconds&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To see your e-Commerce site (the front page of your Apache OFBiz application), go to &lt;b&gt;http://server:8080/ecommerce&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dftHtZkZ1kQ/TzlcHvzTDII/AAAAAAAAASw/bfkwhUwtCOs/s1600/first-screen.png" imageanchor="1"&gt;&lt;img border="0" height="153" src="http://1.bp.blogspot.com/-dftHtZkZ1kQ/TzlcHvzTDII/AAAAAAAAASw/bfkwhUwtCOs/s320/first-screen.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The backend can be accessed by using &lt;b&gt;http://server:8443/webtools&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-flgphMBse4s/TzlcT1ap6TI/AAAAAAAAAS8/6hK4KVqTrVA/s1600/webtools1.png" imageanchor="1"&gt;&lt;img border="0" height="71" src="http://4.bp.blogspot.com/-flgphMBse4s/TzlcT1ap6TI/AAAAAAAAAS8/6hK4KVqTrVA/s320/webtools1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;For the first time, you may login using "admin" as username and "ofbiz" as password.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dBf7HnGXdpg/TzlcgegLr-I/AAAAAAAAATI/IouoilcUAUA/s1600/webtools2.png" imageanchor="1"&gt;&lt;img border="0" height="82" src="http://4.bp.blogspot.com/-dBf7HnGXdpg/TzlcgegLr-I/AAAAAAAAATI/IouoilcUAUA/s320/webtools2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is the result of backend login:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tb9XGjZVjHY/TzlcquibWKI/AAAAAAAAATU/QFYjNnB3yEY/s1600/webtools3.png" imageanchor="1"&gt;&lt;img border="0" height="152" src="http://1.bp.blogspot.com/-tb9XGjZVjHY/TzlcquibWKI/AAAAAAAAATU/QFYjNnB3yEY/s320/webtools3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You may see that this kind of software can be a good example of free and open source software for your business need. If you are a technopreneur, why don't you get involved in the project and sell the service to customers? It's up to you now, you have all you need.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-241074306674847542?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/241074306674847542/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2012/02/apache-ofbiz-asf-solution-for.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/241074306674847542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/241074306674847542'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2012/02/apache-ofbiz-asf-solution-for.html' title='Apache OFBiz - ASF Solution for Enterprise Automation'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dftHtZkZ1kQ/TzlcHvzTDII/AAAAAAAAASw/bfkwhUwtCOs/s72-c/first-screen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-5570441248730085295</id><published>2012-01-22T20:51:00.000-08:00</published><updated>2012-01-23T05:26:14.968-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='NERDTree'/><title type='text'>Arrows Problem in NERDTree Vim Plugin</title><content type='html'>The &lt;a href="https://github.com/scrooloose/nerdtree"&gt;NERDTree&lt;/a&gt; plugin in Vim is used to present and display directories and files in your filesystem location. I found this plugin very useful to manage my code. The small problem at the first time I used this plugin is the display of explored filesystem. Default in my terminal like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eNLavHqbXX8/TxzmFRQ78aI/AAAAAAAAARQ/J15jocgxwdI/s1600/before-nerdtree-arrows-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://3.bp.blogspot.com/-eNLavHqbXX8/TxzmFRQ78aI/AAAAAAAAARQ/J15jocgxwdI/s320/before-nerdtree-arrows-0.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Not beautiful of course. So, I tried to find the solution. The problem lies in how we define arrow for explored filesystem. Just add this in your &lt;b&gt;$HOME/.vimrc&lt;/b&gt;:&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;let g:NERDTreeDirArrows=0&lt;br /&gt;&lt;/pre&gt;Here's the more beautiful result:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jMJ-D0x006k/TxzmvtA4yLI/AAAAAAAAARc/W_gPUrYpU3U/s1600/after-nerdtree-arrows-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-jMJ-D0x006k/TxzmvtA4yLI/AAAAAAAAARc/W_gPUrYpU3U/s320/after-nerdtree-arrows-0.png" width="264" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Just for the record, I also use this startup NERDTree command in my .vimrc:&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;" always open NERDTree&amp;nbsp;&lt;br /&gt;autocmd vimenter * NERDTree&lt;br /&gt;&lt;br /&gt;" if the last window is NERDTree, then close Vim&lt;br /&gt;autocmd bufenter * if (winnr("$") == 1 &amp;amp;&amp;amp; exists("b:NERDTreeType") &amp;amp;&amp;amp; b:NERDTreeType == "primary") | q | endif&amp;nbsp;&lt;br /&gt;&lt;br /&gt;let g:NERDTreeDirArrows=0&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-5570441248730085295?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/5570441248730085295/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2012/01/arrows-problem-in-nerdtree-vim-plugin.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5570441248730085295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5570441248730085295'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2012/01/arrows-problem-in-nerdtree-vim-plugin.html' title='Arrows Problem in NERDTree Vim Plugin'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-eNLavHqbXX8/TxzmFRQ78aI/AAAAAAAAARQ/J15jocgxwdI/s72-c/before-nerdtree-arrows-0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-6707772725671845248</id><published>2012-01-16T22:22:00.000-08:00</published><updated>2012-01-16T23:01:39.802-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='window manager'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='awesome'/><title type='text'>Menggunakan awesome Window Manager untuk Keperluan Sehari-hari</title><content type='html'>Tulisan ini hanya sedikit sekali membahas tentang awesome Window  Manager (http://awesome.naquadah.org/). Kalau mau mengetahui apa itu  awesome, mengapa dibuat awesome, dan lain-lain yang lebih lengkap, ya ke  'rumah'nya saja. Tulisan ini barangkali tidak akan menarik bagi  orang-orang yg tdk menyukai old school. Jika tidak mengetahui arti dari  old school, ya berarti memang anda termasuk orang-orang yg tdk menyukai  itu. hehehe ...&lt;br /&gt;&lt;br /&gt;Saya pertama kali mengetahui awesome dari  TL twitter-nya Zed Shaw. Berhubung orang ini memang termasuk freak, saya  jadi ingin tahu tentang awesome. Fakta bahwa awesome meng-embedd Lua  dan menggunakan Lua untuk konfigurasinya juga menarik perhatian saya.&lt;br /&gt;&lt;br /&gt;Untuk menginstall, karena saya menggunakan Frugalware, ya cukup begini saja:&lt;br /&gt;&lt;blockquote&gt;pacman-g2 -S awesome &lt;/blockquote&gt;Kalau  memang mau install from scratch alias mengkompilasi sendiri, ya boleh  juga. Setelah itu, akan muncul di menu display manager dan bisa dipilih  saat akan login. Kalau tidak mengaktifkan display manager, cukup  menuliskan berikut ini di file &lt;strong&gt;$HOME/.xinitrc&lt;/strong&gt;:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;exec /usr/bin/awesome&lt;/blockquote&gt;&lt;span class="fbUnderline"&gt;&lt;strong&gt;Catatan&lt;/strong&gt;&lt;/span&gt;: sesuaikan letak dari binary executable di sistem anda.&lt;br /&gt;&lt;br /&gt;Tampilan awal nanti akan seperti berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XPAbx5oViQ0/TxUShqWhanI/AAAAAAAAAQ0/oHA8Pn_D5Uk/s1600/awesome-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-XPAbx5oViQ0/TxUShqWhanI/AAAAAAAAAQ0/oHA8Pn_D5Uk/s320/awesome-1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Konfigurasi awasome diletakkan di &lt;strong&gt;/etc/xdg/awesome/rc.lua&lt;/strong&gt;  dan berupa script Lua. Pada konfigurasi tersebut, saya ubah terminal  yang akan digunakan oleh awesome saat menampilkan manual page maupun  saya mengeksekusi perintah. Terminal yang saya gunakan adalah &lt;strong&gt;mrxvt&lt;/strong&gt;. sedangkan editor yang saya gunakan adalah &lt;strong&gt;vim&lt;/strong&gt;. Berikut ini adalah bagian yang saya ubah:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;-- This is used later as the default terminal and editor to run.&lt;br /&gt;terminal = "mrxvt"&lt;br /&gt;editor = os.getenv("EDITOR") or "vim"&lt;br /&gt;-- editor_cmd = terminal .. " -e " .. editor&lt;br /&gt;editor_cmd = "xterm -e " .. editor &lt;/blockquote&gt;Kondisi lainnya saya biarkan tetap default. Mengaturnya nanti kalau udah punya waktu untuk belajar lagi. Hehehe ... Hasilnya kurang lebih ya seperti ini:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-87Y-kRMHVFQ/TxUThTzkheI/AAAAAAAAAQ8/3L9P_153Y9M/s1600/awesome-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-87Y-kRMHVFQ/TxUThTzkheI/AAAAAAAAAQ8/3L9P_153Y9M/s320/awesome-2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Setelah itu tinggal menggunakan beberapa kombinasi tombol:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;[Windows start] + Enter = membuka terminal baru (mrxvt)&lt;/li&gt;&lt;li&gt;[Windows start] + r = eksekusi perintah&lt;/li&gt;&lt;li&gt;[Windows start] + j atau k = mengaktifkan window sebelum atau sesudahnya&lt;/li&gt;&lt;li&gt;[Windows start] + m atau n = maximize window atau minimize window&lt;/li&gt;&lt;/ol&gt;Tombol [Windows start] di manual awesome adalah tombol &lt;strong&gt;Mod4&lt;/strong&gt;.  Tombol ini biasanya digunakan di SO Windows untuk mengaktifkan start  menu. Tombol ini sebenarnya bisa diganti-ganti, cuman saya pakai ini  karena kasihan tombol itu gak pernah disentuh. hahaha ...&lt;br /&gt;&lt;br /&gt;Barangkali cukup itu dulu untuk sehari-hari. Enjoy awesome and become awesome! awesome - wm untuk &lt;a href="http://www.galifest.com/" target="_blank"&gt;#gali&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-6707772725671845248?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/6707772725671845248/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2012/01/menggunakan-awesome-window-manager.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/6707772725671845248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/6707772725671845248'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2012/01/menggunakan-awesome-window-manager.html' title='Menggunakan awesome Window Manager untuk Keperluan Sehari-hari'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-XPAbx5oViQ0/TxUShqWhanI/AAAAAAAAAQ0/oHA8Pn_D5Uk/s72-c/awesome-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-8273855467766857705</id><published>2010-12-24T23:26:00.000-08:00</published><updated>2010-12-24T23:27:20.709-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Readline'/><category scheme='http://www.blogger.com/atom/ns#' term='Tab Completion'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Mengaktifkan command line editing (Readline) di Python</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Secara default, pada saat kita masuk ke python command line, tidak akan ada completion seperti halnya bila kita menggunakan bash, tcsh, atau zsh. Untuk mengaktifkan tab completion, biasanya kita menggunakan langkah-langkah berikut:&lt;/div&gt;&lt;blockquote style="border-left-color: rgb(68, 68, 68); border-left-style: solid; border-left-width: 2px; color: #666666; font-style: italic; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 5px; padding-bottom: 0px; padding-left: 10px; padding-right: 10px; padding-top: 0px; width: 518px;"&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;[bpdp@bpdp-arch ~]$ python&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Python 3.1.3 (r313:86834, Dec &amp;nbsp;1 2010, 12:35:23)&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;[GCC 4.5.1 20101125 (prerelease)] on linux2&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Type “help”, “copyright”, “credits” or “license” for more information.&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&amp;gt;&amp;gt;&amp;gt; import readline&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&amp;gt;&amp;gt;&amp;gt; import rlcompleter&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&amp;gt;&amp;gt;&amp;gt; readline.parse_and_bind(“tab: complete”)&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Untuk mengotomatiskan langkah-langkah tersebut sehingga tidak perlu mengeksekusi berbagai perintah diatas, gunakan langkah-langkah sebagai berikut (asumsi: OS Linux dengan shell Bash):&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&lt;span style="text-decoration: underline;"&gt;Buat file $HOME/.pythonrc. Isinya:&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="border-left-color: rgb(68, 68, 68); border-left-style: solid; border-left-width: 2px; color: #666666; font-style: italic; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 5px; padding-bottom: 0px; padding-left: 10px; padding-right: 10px; padding-top: 0px; width: 518px;"&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;import readline&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;import rlcompleter&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;readline.parse_and_bind(“tab: complete”)&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&lt;span style="text-decoration: underline;"&gt;Tambahkan env var yang diperlukan di $HOME/.bashrc&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="border-left-color: rgb(68, 68, 68); border-left-style: solid; border-left-width: 2px; color: #666666; font-style: italic; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 5px; padding-bottom: 0px; padding-left: 10px; padding-right: 10px; padding-top: 0px; width: 518px;"&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;export PYTHONPATH=~/.pythonrc&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&lt;span style="text-decoration: underline;"&gt;Selesai&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Saat masuk ke command line Python, otomatis mode command line editing telah tersedia dengan menekatan tombol tab, sama halnya dengan di Bash:&lt;/div&gt;&lt;blockquote style="border-left-color: rgb(68, 68, 68); border-left-style: solid; border-left-width: 2px; color: #666666; font-style: italic; margin-bottom: 15px; margin-left: auto; margin-right: auto; margin-top: 5px; padding-bottom: 0px; padding-left: 10px; padding-right: 10px; padding-top: 0px; width: 518px;"&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;[bpdp@bpdp-arch ~]$ python&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Python 3.1.3 (r313:86834, Dec &amp;nbsp;1 2010, 12:35:23)&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;[GCC 4.5.1 20101125 (prerelease)] on linux2&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Type “help”, “copyright”, “credits” or “license” for more information.&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;&amp;gt;&amp;gt;&amp;gt; help(&lt;/div&gt;&lt;div style="font-size: 13px; line-height: 20px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 8px; padding-left: 0px; padding-right: 0px; padding-top: 8px;"&gt;Display all 163 possibilities? (y or n)&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-8273855467766857705?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/8273855467766857705/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/12/mengaktifkan-command-line-editing.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/8273855467766857705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/8273855467766857705'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/12/mengaktifkan-command-line-editing.html' title='Mengaktifkan command line editing (Readline) di Python'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-4501617520407988638</id><published>2010-10-21T20:04:00.000-07:00</published><updated>2010-10-21T20:04:21.321-07:00</updated><title type='text'>Menggunakan AHA dengan Olive VME-110 di Arch Linux</title><content type='html'>Tulisan sederhana ini sekedar menjelaskan sedikit cara untuk bisa menggunakan modem EVDO dari AHA di Arch Linux. Untuk modem, saya menggunakan Olive VME-110 yang berwarna putih (yang berwarna perak merk-nya Huawei, caranya mungkin beda sedikit dengan yang ada di tulisan ini). Di tulisan ini, penyebutan "modem" berarti akan mengacu ke Olive VME-110 (males nulisnya kalau panjang ... :-D).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Paket yang Diperlukan&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ada beberapa paket yang diperlukan untuk mengaktifkan modem ini yaitu: wvdial dan usb_modeswitch. Untuk menginstall, gunakan pacman (tentu saja jika belum bisa koneksi ke Internet, ngalah dulu sebentar cari koneksi kabel atau wifi):&lt;br /&gt;&lt;blockquote&gt;# pacman -S wvdial usb_modeswitch&lt;/blockquote&gt;Biasanya instalasi wvdial juga akan menyertakan wvstreams.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mengubah dari Mode Storage ke Mode Modem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Setelah instalasi paket yang diperlukan di atas, lakukan langkah-langkah berikut untuk konfigurasi.&lt;br /&gt;&lt;br /&gt;Aktifkan modul kernel usbserial:&lt;br /&gt;&lt;blockquote&gt;# modprobe usbserial&lt;/blockquote&gt;Masukkan modem ke USB port. Kernel akan mengenali device sebagai USB storage (karena modem ini bisa difungsikan juga sebagai USB flashdisk) berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Initializing USB Mass Storage driver...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;scsi6 : usb-storage 2-1.1:1.0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usbcore: registered new interface driver usb-storage&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;USB Mass Storage support registered.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;USB Serial support registered for GSM modem (1-port)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usbcore: registered new interface driver option&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;option: v0.7.2:USB Driver for GSM modems&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;scsi 6:0:0:0: CD-ROM &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Qualcomm MMC Storage &amp;nbsp; &amp;nbsp; &amp;nbsp;2.31 PQ: 0 ANSI: 2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr1: scsi3-mmc drive: 0x/58x caddy&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr 6:0:0:0: Attached scsi CD-ROM sr1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr 6:0:0:0: Attached scsi generic sg2 type 5&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr1: CDROM (ioctl) error, command: cdb[0]=0x51 51 00 00 00 00 00 00 00 02 00&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr: Sense Key : 0x4 [current]&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;sr: ASC=0x0 ASCQ=0x0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supaya bisa dikenali sebagai GSM modem (/dev/ttyUSB*), maka fasilitas storage (diatas dikenali sebagai Qualcomm - di Windows juga dikenali sebagai Qualcomm) harus di-eject dulu:&lt;br /&gt;&lt;blockquote&gt;# eject /dev/sr1&lt;/blockquote&gt;Saya menggunakan /dev/sr1 karena sesuai dengan pesan yang ada di atas, bahwa storage tersebut di kenali sebagai sr1 (lihat baris "sr1: scsi3-mmc drive: 0x/58x caddy", di tempat lain, bisa saja sr0). Setelah di-eject, maka modem baru akan dikenali:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usb 2-1.1: USB disconnect, address 3&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;cdrom: issuing MRW back ground format suspend&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usb 2-1.1: new full speed USB device using ehci_hcd and address 4&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;option 2-1.1:1.0: GSM modem (1-port) converter detected&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;option 2-1.1:1.1: GSM modem (1-port) converter detected&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;option 2-1.1:1.2: GSM modem (1-port) converter detected&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Device juga muncul:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[bpdp@bpdp-arch ~]$ ls -la /dev/ttyUSB*&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;crw-rw---- 1 root uucp 188, 0 Oct 22 08:45 /dev/ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;crw-rw---- 1 root uucp 188, 1 Oct 22 08:45 /dev/ttyUSB1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;crw-rw---- 1 root uucp 188, 2 Oct 22 08:45 /dev/ttyUSB2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[bpdp@bpdp-arch ~]$&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Konfigurasi usb_modeswitch&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Paket usb_modeswitch yang saya gunakan belum menyertakan definisi hardware dari modem, jadi kita akan membuat konfigurasinya sendiri. Pertama, kita mencari ID dari device modem:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[bpdp@bpdp-arch ~]$ lsusb&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 002 Device 004: ID 201e:2009 &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 001 Device 004: ID 0b05:1788 ASUSTek Computer, Inc.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 001 Device 003: ID 04f2:b071 Chicony Electronics Co., Ltd 2.0M UVC Webcam / CNF7129&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[bpdp@bpdp-arch ~]$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Di Arch Linux, device dikenali dengan ID vendor 201e dan ID product 2009. Setelah mengetahui ID ini, buat konfigurasi file baru di "/etc/usb_modeswitch.d/201e\:2009" yang berisi teks berikut:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;########################################################&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;# AHA.co.id&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;# 201e:2009&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;DefaultVendor= 0x201e&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;DefaultProduct=0x2009&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;TargetVendor= 0x201e&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;TargetProduct= 0x2009&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;CheckSuccess=20&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;MessageContent="555342431234567824000000800108df200000000000000000000000000000"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Konfigurasi wvdial&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Buat file baru (atau tambahkan entry berikut jika sudah ada filenya) untuk konfigurasi wvdial di "/etc/wvdial.conf". Isinya adalah teks sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[Dialer aha]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Init1 = ATZ&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Modem Type = USB Modem&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Baud = 115200&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Modem= /dev/ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Phone = #777&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Username = aha@aha.co.id&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Password = aha&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;New PPPD = yes&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;Stupid Mode = 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Konfigurasi udev&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Konfigurasi udev diperlukan supaya kita tidak perlu repot-repot meng-eject setiap kali memasukkan modem ke USB port. Buatlah file baru di "/etc/udev/rules.d/99-evdo-modem.rules" yang berisi:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;SYSFS{idVendor}=="201e",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;SYSFS{idProduct}=="2009", RUN+="/usr/bin/eject %k"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Konfigurasi Modul Kernel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Masukkan "usbserial" dalam array MODULES yang ada di file "/etc/rc.conf". Jika sebelumnya sudah ada modul lainnya, tinggal tambahkan saja sebagai berikut (di file saya sudah ada modul ath9k, tidak perlu anda tulis jika tidak menginginkan modul ath9k tersebut aktif):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;MODULES=(ath9k usbserial)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Menggunakan Modem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Langkah-langkah di atas sudah cukup untuk mengkonfigurasi modem. Jika kita ingin mengaktifkan, tinggal men-dial menggunakan wvdial sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;[root@bpdp-arch ~]# wvdial aha&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; WvDial: Internet dialer version 1.61&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Cannot get information for serial port.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Initializing modem.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Sending: ATZ&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;ATZ&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;OK&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Sending: ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;OK&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Modem initialized.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Sending: ATDT#777&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Waiting for carrier.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;ATDT#777&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;CONNECT 3100000&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Carrier detected. &amp;nbsp;Starting PPP immediately.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Starting pppd at Fri Oct 22 09:13:09 2010&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Pid of pppd: 2578&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; Using interface ppp0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; local &amp;nbsp;IP address 10.69.7.130&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; remote IP address 192.168.11.10&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; primary &amp;nbsp; DNS address 10.8.9.2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; secondary DNS address 192.168.190.66&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #d9ead3;"&gt;--&amp;gt; pppd: &amp;nbsp;[01]� �[01]�&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jika ingin disconnect, tekan Ctrl-C di posisi tersebut. Untuk seterusnya, jika ingin koneksi ke Internet menggunakan modem, yang kita lakukan hanya:&lt;br /&gt;1. Masukkan modem ke port USB&lt;br /&gt;2. dari terminal, sebagai root, ketikkan "wvdial aha"&lt;br /&gt;&lt;br /&gt;Mudah bukan? Happy browsing using Arch Linux! :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Catatan:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Saat mencari cara untuk koneksi menggunakan AHA dengan modem Olive VME-110 ini, saya sangat terbantu dengan artikel dan komentar di URL&amp;nbsp;&lt;a href="http://www.icemanblogger.com/2010/07/setting-modem-aha-olive-v-me110-di.html"&gt;http://www.icemanblogger.com/2010/07/setting-modem-aha-olive-v-me110-di.html&lt;/a&gt;. Bersama ini, rasanya saya perlu mengucapkan terima kasih untuk yang telah menulis artikel di atas dan komentar-komentar di bawahnya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-4501617520407988638?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/4501617520407988638/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/10/menggunakan-aha-dengan-olive-vme-110-di.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/4501617520407988638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/4501617520407988638'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/10/menggunakan-aha-dengan-olive-vme-110-di.html' title='Menggunakan AHA dengan Olive VME-110 di Arch Linux'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-1537552378035001665</id><published>2010-09-05T18:00:00.000-07:00</published><updated>2010-09-05T18:00:01.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Comet'/><title type='text'>Model Interaksi Aplikasi Web</title><content type='html'>&lt;b&gt;Pendahuluan&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tulisan ini membahas tentang gambaran umum model interaksi dari aplikasi web. Seperti yang kita ketahui, aplikasi web pada dasarnya terdiri atas dua sisi yaitu sisi klien dan sisi server. Meskipun selalu mempunyai pola klien-server, implementasi model ini mempunyai perkembangan yang menarik untuk diamati karena semakin hari semakin berkembang ke arah interaktivitas yang lebih baik.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Berbagai Model Interaksi Aplikasi Web&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aplikasi web mempunyai siklus request-response. Klien web (web browser) mengirimkan permintaan ke server (request), server menerima request tersebut kemudian memproses request dan mengirimkan hasilnya (response) ke server. Siklus ini bisa kita lihat pada gambar berikut:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oW3W3PaZ35k/TIQ8UcA_prI/AAAAAAAAAN8/ZtojNVzglUs/s1600/sikus-request-response.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oW3W3PaZ35k/TIQ8UcA_prI/AAAAAAAAAN8/ZtojNVzglUs/s320/sikus-request-response.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Sampai saat ini, ada tiga kategori besar dari aplikasi web berdasarkan pada model interaksi klien-server:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Model Tradisional&lt;/li&gt;&lt;li&gt;Model Ajax&lt;/li&gt;&lt;li&gt;Model Comet&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Model Interaksi Tradisional&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Model  interaksi tradisional mempunyai pola halaman-demi-halaman. Pola ini  yang pertama kali digunakan pada saat Tim Berners-Lee mulai  mengembangkan HTML dan ingrastrukturnya. Pada model ini, web browser  mengirimkan permintaan ke web server, sementara itu web server menerima  permintaan dan mengirimkan hasilnya ke web browser. Saat menerima  response dari web server, web browser akan me-refresh keseluruhan  halaman web. Model ini masih digunakan sampai saat ini. Model ini  dianggap "mahal" karena "memaksa" web server untuk mengirimkan  keseluruhan halaman yang ditampilkan oleh web browser sehingga  memerlukan sumber daya Internet yang relatif besar untuk lalu lintas  data. Secara konsepsual, model ini bisa digambarkan untuk aplikasi web  yang meminta user untuk melakukan login sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oW3W3PaZ35k/TIQ8g3beAAI/AAAAAAAAAOE/7VjXsbOY53s/s1600/model-tradisional.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oW3W3PaZ35k/TIQ8g3beAAI/AAAAAAAAAOE/7VjXsbOY53s/s320/model-tradisional.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Pada gambar tersebut, kira-kira logik yang harus dikerjakan oleh  pemrogram adalah membuat form HTML dengan action ke script pemroses di  server. Saat user mengklik tombol Submit, web browser akan mengirimkan  variabel-variabel yang terdapat pada form tersebut dan akan diproses  oleh server begitu server menerima variabel tersebut. Setelah diproses,  seluruh HTML dikirimkan kembali ke web browser untuk di-render.&lt;br /&gt;&lt;br /&gt;Untuk membuat aplikasi web seperti ini, yang diperlukan adalah komponen-komponen berikut:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Web browser yang bisa me-render HTML beserta pendukungnya (CSS,JavaScript, jpg, png, gif, dan lain-lain).&lt;/li&gt;&lt;li&gt;Web server (Apache web server, IIS, yaws, lighttpd, nginx, dan lain-lain)&lt;/li&gt;&lt;li&gt;Jika  akan menambahkan pemrosesan business logic di sisi server, bisa  ditambahkan server-side scripting language (PHP, JSP, ASP, dan lain-lain  tergantung pada compiler/interpreter yang didukung oleh web server).&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Model Ajax&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ajax  (Asynchronous JavaScript and XML) adalah sekumpulan teknologi untuk  membuat aplikasi web lebih interaktif dengan cara menggunakan berbagai  teknologi dan spesifikasi yang telah ada untuk mengambil data dari  server secara asynchronous dan me-render hasilnya ke display web browser  tanpa "mengganggu" bagian lainnya. Konsep inti dari Ajax adalah  menetapkan bagian tertentu dari halaman web yang akan diambil dari  server, kemudian secara asynchronous mengambil data di latar belakang  setelah itu menampilkan hanya pada bagian yang berubah itu saja. Istilah  Ajax dikemukakan oleh Jesse James Garret pada essay yang ditulisnya  pada tahun 2005 dengan judul "Ajax: A New Approach to Web Applications" (&lt;a href="http://www.adaptivepath.com/ideas/essays/archives/000385.php" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://www.adaptivepath.com/ideas/essays/archives/000385.php&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Secara  konsepsual, model interaksi ini bisa digambarkan sebagai berikut  (gambar diambil dari artikel milik Jesse James Garret dan merupakan hak  cipta dari yang bersangkutan):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oW3W3PaZ35k/TIQ8uT2z08I/AAAAAAAAAOM/SsFrGzrDVFo/s1600/ajax-jesse-james--adaptivepath-com.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oW3W3PaZ35k/TIQ8uT2z08I/AAAAAAAAAOM/SsFrGzrDVFo/s320/ajax-jesse-james--adaptivepath-com.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ajax bekerja dengan menggunakan berbagai teknologi berikut:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;HTML/XHTML dan CSS (serta pendukung lainya - gambar PNG, JPG, GIF) untuk lapisan presentasi.&lt;/li&gt;&lt;li&gt;DOM  (Document Object Model) merupakan konvensi yang cross-platform dan  language-independent untuk merepresentasikan dan berinteraksi dengan  obyek dalam HTML, XHTML, dan XML. Antarmuka publik dari DOM ini  diimplementasikan dalam bentuk API (Application Programming Interface).  JavaScript adalah salah satu contoh bahasa yang mendefinisikan API untuk  memanipulasi berbagai elemen DOM ini. Teknologi ini tidak selalu  menggunakan JavaScript, tetapi bisa juga menggunakan client-side  programming language lainnya seperti JScript (implementasi ECMAScript  dari Microsoft) atau VBScript (hanya bisa digunakan di Internet  Explorer). &lt;/li&gt;&lt;li&gt;XML untuk format pertukaran data serta XSLT untuk  pemrosesnya. Teknologi ini tidak selalu digunakan, banyak diantara  pemrogram yang menggunakan JSON sehingga XSLT tidak diperlukan lagi.&lt;/li&gt;&lt;li&gt;XMLHttpRequest,  yaitu API yang terdapat pada client-side scripting language  (diantaranya JavaScript) yang digunakan untuk mengirimkan request HTTP/S  secara langsung ke web server dan me-load response dari web server  secara langsung ke dalam script.&lt;/li&gt;&lt;li&gt;JavaScript untuk mem-binding berbagai teknologi tersebut ke dalam suatu interaksi baik dari suatu aplikasi web.&lt;/li&gt;&lt;/ol&gt;Contoh dari aplikasi yang berbasis Ajax ini bisa dilihat pada berbagai implementasi dari aplikasi web berikut:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Suggestions pada saat mengisikan input text di mesin pencarian Google/Yahoo/dan lain-lain.&lt;/li&gt;&lt;li&gt;Mengisi komentar, mengirimkan message di Facebook dan masih banyak lainnya.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Model Comet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Model  ini merupakan model yang mulai banyak digunakan dan merupakan  perkembangan terakhir dengan tingkat interaktivitas aplikasi ke user  yang paling bagus. Istilah Comet muncul pertama kali pada blog Alex  Russel (project leader dari Dojo Toolkit dan presiden dari Dojo  Foundation) di &lt;a href="http://infrequently.org/2006/03/comet-low-latency-data-for-the-browser/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://infrequently.org/2006/03/comet-low-latency-data-for-the-browser/&lt;/a&gt;. Comet dikenal juga dengan berbagai istilah berikut:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ajax Push&lt;/li&gt;&lt;li&gt;Reverse Ajax&lt;/li&gt;&lt;li&gt;Two-way-web&lt;/li&gt;&lt;li&gt;HTTP Streaming&lt;/li&gt;&lt;li&gt;HTTP Server Push&lt;/li&gt;&lt;/ol&gt;Model  ini sebenarnya merupakan sekumpulan teknologi yang memungkinkan suatu  aplikasi web untuk mengirimkan data dari server ke browser menggunakan  teknologi push. Secara konsepsual, Coment bekerja menggunakan gambaran  berikut (gambar diambil dari blog Alex Russel):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oW3W3PaZ35k/TIQ88Nyhw7I/AAAAAAAAAOU/tiDX4ZVXsu0/s1600/model-comet--alex-russel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oW3W3PaZ35k/TIQ88Nyhw7I/AAAAAAAAAOU/tiDX4ZVXsu0/s320/model-comet--alex-russel.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Comet bisa diimplementasikan menggunakan dua metode yaitu Streaming  dan Long Polling, meskipun penggunaan Long Polling makin banyak  digunakan. Contoh dari aplikasi web menggunakan Comet ini antara lain  bisa dilihat di Facebook. Pada aplikasi Facebook, notification akan  secara otomatis muncul (dalam bentuk angka dengan latar belakang merah)  tanpa diminta atau di-request ulang ke server. Server Facebook akan  mem-push notification tersebut ke web browser.&lt;br /&gt;&lt;br /&gt;Beberapa web server yang sudah mendukung Comet ini antara lain adalah:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Caplin Liberator (&lt;a href="http://www.freeliberator.com/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://www.freeliberator.com/&lt;/a&gt; - dibangun menggunakan C)&lt;/li&gt;&lt;li&gt;Cometd (&lt;a href="http://cometd.com/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://cometd.com/&lt;/a&gt; - dibangun menggunakan Python)&lt;/li&gt;&lt;li&gt;ErlyComet (&lt;a href="http://erlycomet.googlecode.com/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://erlycomet.googlecode.com/&lt;/a&gt; - Erlang)&lt;/li&gt;&lt;li&gt;Glassfish (&lt;a href="http://glassfish.dev.java.net/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://glassfish.dev.java.net/&lt;/a&gt; - Java)&lt;/li&gt;&lt;li&gt;Jetty (&lt;a href="http://jetty.mortbay.org/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://jetty.mortbay.org/&lt;/a&gt; - Java)&lt;/li&gt;&lt;li&gt;Lightstreamer (&lt;a href="http://lightstreamer.com/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://lightstreamer.com/&lt;/a&gt; - Java)&lt;/li&gt;&lt;li&gt;Meteor (&lt;a href="http://meteorserver.org/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://meteorserver.org/&lt;/a&gt; - Perl)&lt;/li&gt;&lt;li&gt;Orbited (&lt;a href="http://www.orbited.org/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://www.orbited.org/&lt;/a&gt; - Python)&lt;/li&gt;&lt;li&gt;Persevere (&lt;a href="http://persevere.sitepen.com/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://persevere.sitepen.com/&lt;/a&gt; - Java-JavaScript)&lt;/li&gt;&lt;li&gt;RMDS2Web Server (&lt;a href="http://www.migratory.ro/" onmousedown="UntrustedLink.bootstrap($(this), &amp;quot;7136a&amp;quot;, event);" rel="nofollow" target="_blank"&gt;http://www.migratory.ro/&lt;/a&gt; - Java)&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Penutup&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Model  interaksi tersebut sebenarnya tidak tergantung pada tingkat kekinian  tools. Sebagai contoh, menggunakan Jetty yang sudah mendukung Comet  tidak serta merta menjadikan aplikasi tersebut sebagai model aplikasi  web yang menggunakan interaksi Comet. Dengan demikian, memang harus  berhati-hati dalam mendefinisikan hal ini.&lt;br /&gt;&lt;br /&gt;Tertarik?  Silahkan mencoba membuat aplikasi dengan berbagai macam teknologi dan  model interaksi tersebut. Tools sudah banyak tersedia dan banyak pula  yang merupakan software bebas.&lt;br /&gt;&lt;br /&gt;Selamat belajar dan berkarya :)﻿&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-1537552378035001665?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/1537552378035001665/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/09/model-interaksi-aplikasi-web.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/1537552378035001665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/1537552378035001665'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/09/model-interaksi-aplikasi-web.html' title='Model Interaksi Aplikasi Web'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oW3W3PaZ35k/TIQ8UcA_prI/AAAAAAAAAN8/ZtojNVzglUs/s72-c/sikus-request-response.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-403121488216119649</id><published>2010-09-01T15:27:00.000-07:00</published><updated>2010-09-01T15:27:38.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RubyGems'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Arch'/><title type='text'>Masalah upgrade Ruby di Arch Linux</title><content type='html'>Untuk rekan-rekan yang menggunakan Arch Linux, proses update dan upgrade Ruby dari versi 1.9.1 (atau 1.8.7 juga ya?) ke versi berikutnya (1.9.2) mungkin bisa melihat ada masalah. Mulai dari instalasi yang gagal karena menumpuki file-file lama di /usr/share/ri dan /usr/lib/ruby, sampai dengan gem yang jika dijalankan malah memunculkan error.&lt;br /&gt; &lt;br /&gt;Saya belum melihat ke bug yang di-report, tapi langsung saya mencoba otak atik. Untuk instalasi saja sebenarnya bisa selesai dengan menyertakan --force:&lt;br /&gt; &lt;br /&gt;# pacman -S --force ruby&lt;br /&gt; &lt;br /&gt;Sayangnya, ini akan menimbulkan kekacauan saat menjalankan 'gem'. Jika mengalami masalah ini, silahkan uninstall ruby, hapus direktori /usr/lib/ruby dan /usr/share/ri. Setelah itu, baru install ruby yang baru. &lt;br /&gt; &lt;br /&gt;Catatan: Upgrade ke 1.9.2 perlu dilakukan jika kita ingin menggunakan Rails 3.0.&lt;br /&gt; &lt;br /&gt;Selamat mencoba.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-403121488216119649?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/403121488216119649/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/09/masalah-upgrade-ruby-di-arch-linux.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/403121488216119649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/403121488216119649'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/09/masalah-upgrade-ruby-di-arch-linux.html' title='Masalah upgrade Ruby di Arch Linux'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-6801931832334214459</id><published>2010-05-25T22:57:00.000-07:00</published><updated>2010-05-25T23:01:28.471-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EV-DO'/><category scheme='http://www.blogger.com/atom/ns#' term='Phoix'/><category scheme='http://www.blogger.com/atom/ns#' term='Chakra'/><category scheme='http://www.blogger.com/atom/ns#' term='wvdial'/><category scheme='http://www.blogger.com/atom/ns#' term='Arch'/><category scheme='http://www.blogger.com/atom/ns#' term='Smart'/><title type='text'>Konfigurasi EV-DO Smart di Chakra (Phoix) / Arch Linux</title><content type='html'>Chakra (&lt;a href="http://www.chakra-project.org"&gt;http://www.chakra-project.org&lt;/a&gt;) merupakan (saat ini) distrolet yang dikembangkan dari Arch Linux (&lt;a href="http://www.archlinux.org"&gt;http://www.archlinux.org&lt;/a&gt;). Chakra mempermudah anda jika ingin langsung mempunyai desktop yang fully functional dengan menggunakan desktop environment KDE. Tulisan ini akan menjelaskan cara menggunakan USB Modem EVDO ZTE AC 2726 dengan provider Smart. Tulisan ini berdasarkan pada pengalaman mas Muhammad Iqbal di &lt;a href="http://masiqbal.net/modem-smart-evdo-zte-ac2726-di-linux.php"&gt;http://masiqbal.net/modem-smart-evdo-zte-ac2726-di-linux.php&lt;/a&gt; (terima kasih mas!) dan manual dari usb_modeswitch yang bisa diperoleh di &lt;a href="http://www.draisberghof.de/usb_modeswitch/"&gt;http://www.draisberghof.de/usb_modeswitch/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OS yang saya gunakan adalah Chakra versi terakhir (Phoix). Meskipun menggunakan Chakra, tulisan yang ada disini bisa diterapkan juga untuk Arch Linux. Chakra dan Arch yang akan anda gunakan sudah harus mempunyai Yaourt karena instalasi nantinya akan menggunakan Yaourt. Jika belum mempunyai, anda bisa menggunakan Pacman untuk menginstall Yaourt.&lt;br /&gt;&lt;br /&gt;Pada saat modem USB dicolokkan, Chakra sudah langsung mengenali. Berikut adalah snapshot dari lsusb:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra etc]# lsusb &lt;br /&gt;Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 005 Device 003: ID 19d2:fff5 ONDA Communication S.p.A. &lt;br /&gt;Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;Bus 007 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN) Interface [Integrated Module]&lt;br /&gt;Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 002 Device 002: ID 04f2:b016 Chicony Electronics Co., Ltd VGA 30fps UVC Webcam&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;[root@chakra etc]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Device yang dikenali disitu adalah "Bus 005 Device 003: ID 19d2:fff5 ONDA Communication S.p.A.". Meskipun sudah dikenali, perlu digunakan usb_modeswitch untuk mengubah dari mode storage ke mode Modem. Berikut adalah langkah-langkan instalasi paket supaya modem bisa digunakan.&lt;br /&gt;&lt;br /&gt;Langkah pertama adalah instalasi usb_modeswitch menggunakan Yaourt:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra ~]# yaourt -Ss usb_modeswitch&lt;br /&gt;aur/usb_modeswitch 1.1.2-1 (83)&lt;br /&gt;  Activating switchable USB devices on Linux.&lt;br /&gt;aur/usb_modeswitch-fixed 1.1.1-3 (Out of Date) (13)&lt;br /&gt;  Activating switchable USB devices on Linux.&lt;br /&gt;aur/usb_modeswitch-updated 1.1.1-1 (2)&lt;br /&gt;  Activating switchable USB devices on Linux.&lt;br /&gt;[root@chakra ~]# yaourt -S usb_modeswitch&lt;br /&gt;==&gt; WARNING: Building package as root is dangerous.&lt;br /&gt; Please run yaourt as a non-privileged user.&lt;br /&gt;&lt;br /&gt;==&gt; Downloading usb_modeswitch PKGBUILD from AUR...&lt;br /&gt;--2010-05-26 09:43:18--  http://aur.archlinux.org/packages/usb_modeswitch/usb_modeswitch.tar.gz&lt;br /&gt;Resolving aur.archlinux.org... 208.92.232.29&lt;br /&gt;Connecting to aur.archlinux.org|208.92.232.29|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 693 [application/x-tgz]&lt;br /&gt;Saving to: “usb_modeswitch.tar.gz”&lt;br /&gt;&lt;br /&gt;100%[=============================================================&gt;] 693         --.-K/s   in 0s      &lt;br /&gt;&lt;br /&gt;2010-05-26 09:43:24 (54.7 MB/s) - “usb_modeswitch.tar.gz” saved [693/693]&lt;br /&gt;&lt;br /&gt;bsdtar: Removing leading '/' from member names&lt;br /&gt;x PKGBUILD&lt;br /&gt;&lt;br /&gt;Comment by: cyberpatrol on Wed, 24 Mar 2010 22:23:14 +0000&lt;br /&gt;Please, update this package. Version 1.1.1 is out and the version 1.1.0 is not available for downloading anymore.&lt;br /&gt;&lt;br /&gt;Comment by: helios on Fri, 26 Mar 2010 13:46:40 +0000&lt;br /&gt;I will update it as soon as I get back from holiday.&lt;br /&gt;&lt;br /&gt;Comment by: gborzi on Tue, 20 Apr 2010 22:29:21 +0000&lt;br /&gt;Version 1.1.2 is available, it requires tcl to work. Also udev doesn't seem able to find the tcl script which is installed by default as&lt;br /&gt;/lib/udev/usb_modeswitch/usb_modeswitch.tcl&lt;br /&gt;installing it as /lib/udev/usb_modeswitch it is found and works. This is the PKGBUILD I've used to make the package&lt;br /&gt;pkgname=usb_modeswitch&lt;br /&gt;pkgver=1.1.2&lt;br /&gt;pkgrel=1&lt;br /&gt;_pkgdata=20100418&lt;br /&gt;pkgdesc="Activating switchable USB devices on Linux."&lt;br /&gt;arch=('i686' 'x86_64')&lt;br /&gt;url="http://www.draisberghof.de/usb_modeswitch/"&lt;br /&gt;license=('GPL')&lt;br /&gt;depends=('libusb' 'tcl')&lt;br /&gt;makedepends=('gcc' 'make' 'wget')&lt;br /&gt;backup=('/etc/$pkgname.conf')&lt;br /&gt;source=("http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-${pkgver}.tar.bz2"&lt;br /&gt;"http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-${_pkgdata}.tar.bz2")&lt;br /&gt;md5sums=('071cb300d00938bfe20025c654303d92' '659c9633513fa2f84465244a50c351b3')&lt;br /&gt;build() {&lt;br /&gt;cd $srcdir&lt;br /&gt;# fetching&lt;br /&gt;wget -Nc http://www.draisberghof.de/usb_modeswitch/usb_modeswitch.setup || return 1&lt;br /&gt;# extracting&lt;br /&gt;cd $srcdir/usb-modeswitch-$pkgver/&lt;br /&gt;mkdir -p $pkgdir/lib/udev/usb_modeswitch || return 1&lt;br /&gt;mkdir -p $pkgdir/etc || return 1&lt;br /&gt;mkdir -p $pkgdir/usr/share/man/man1 || return 1&lt;br /&gt;# deleting the precompiled binary&lt;br /&gt;make clean || return 1&lt;br /&gt;# recompiling&lt;br /&gt;make || return 1&lt;br /&gt;# installing&lt;br /&gt;make DESTDIR=${pkgdir} install || return 1&lt;br /&gt;# adjusting the tcl script location&lt;br /&gt;mv ${pkgdir}/lib/udev/usb_modeswitch/usb_modeswitch.tcl ${pkgdir}/lib/udev/usb_modeswitch.tcl || return 1&lt;br /&gt;rmdir ${pkgdir}/lib/udev/usb_modeswitch || return 1&lt;br /&gt;mv ${pkgdir}/lib/udev/usb_modeswitch.tcl ${pkgdir}/lib/udev/usb_modeswitch || return 1&lt;br /&gt;# installing data&lt;br /&gt;cd $srcdir/usb-modeswitch-data-${_pkgdata} || return 1&lt;br /&gt;make DESTDIR=$pkgdir install || return 1&lt;br /&gt;# installing config&lt;br /&gt;cp $srcdir/usb_modeswitch.setup $pkgdir/etc/ || return 1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Comment by: helios on Sun, 25 Apr 2010 12:35:48 +0000&lt;br /&gt;thanks and updated&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      First Submitted: Thu, 26 Jun 2008 17:00:39 +0000&lt;br /&gt;usb_modeswitch 1.1.2-1 : Activating switchable USB devices on Linux.&lt;br /&gt;( Unsupported package: Potentally dangerous ! )&lt;br /&gt;==&gt;  Edit PKGBUILD ? [Y/n] ("A" to abort)&lt;br /&gt;==&gt;   ----------------------------------------------&lt;br /&gt;==&gt;n&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==&gt; usb_modeswitch dependencies:&lt;br /&gt; - libusb (already installed)&lt;br /&gt; - tcl (package found)&lt;br /&gt; - gcc (package found)&lt;br /&gt; - make (package found)&lt;br /&gt; - wget (already installed)&lt;br /&gt;==&gt;  Continue the building of usb_modeswitch ? [Y/n]&lt;br /&gt;==&gt;   ----------------------------------------------&lt;br /&gt;==&gt;Y&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==&gt; Install or build missing dependencies for usb_modeswitch:&lt;br /&gt;resolving dependencies...&lt;br /&gt;looking for inter-conflicts...&lt;br /&gt;&lt;br /&gt;Targets (7): libmpc-0.8.2-1  ppl-0.10.2-3  cloog-ppl-0.15.9-1  libelf-0.8.13-1  gcc-4.5.0-2  &lt;br /&gt;             make-3.81-5  tcl-8.5.8-1  &lt;br /&gt;&lt;br /&gt;Total Download Size:    19.83 MB&lt;br /&gt;Total Installed Size:   79.74 MB&lt;br /&gt;&lt;br /&gt;Proceed with installation? [Y/n] &lt;br /&gt;:: Retrieving packages from core...&lt;br /&gt; libmpc-0.8.2-1-i686...    68.0K   31.8K/s 00:00:02 [############################################] 100%&lt;br /&gt; ppl-0.10.2-3-i686.p...     2.4M   15.0K/s 00:02:47 [############################################] 100%&lt;br /&gt; cloog-ppl-0.15.9-1-...   119.5K   16.0K/s 00:00:07 [############################################] 100%&lt;br /&gt; libelf-0.8.13-1-i686      84.6K   23.9K/s 00:00:04 [############################################] 100%&lt;br /&gt; gcc-4.5.0-2-i686.pk...    14.7M   15.5K/s 00:16:12 [############################################] 100%&lt;br /&gt; make-3.81-5-i686.pk...   322.7K   18.5K/s 00:00:17 [############################################] 100%&lt;br /&gt;:: Retrieving packages from extra...&lt;br /&gt; tcl-8.5.8-1-i686           2.1M   16.1K/s 00:02:17 [############################################] 100%&lt;br /&gt;checking package integrity...&lt;br /&gt;(7/7) checking for file conflicts                   [############################################] 100%&lt;br /&gt;(1/7) installing libmpc                             [############################################] 100%&lt;br /&gt;(2/7) installing ppl                                [############################################] 100%&lt;br /&gt;(3/7) installing cloog-ppl                          [############################################] 100%&lt;br /&gt;(4/7) installing libelf                             [############################################] 100%&lt;br /&gt;(5/7) installing gcc                                [############################################] 100%&lt;br /&gt;(6/7) installing make                               [############################################] 100%&lt;br /&gt;(7/7) installing tcl                                [############################################] 100%&lt;br /&gt;==&gt; Building and installing package&lt;br /&gt;&lt;br /&gt;==&gt; usb_modeswitch dependencies:&lt;br /&gt; - libusb (already installed)&lt;br /&gt; - tcl (already installed)&lt;br /&gt; - gcc (already installed)&lt;br /&gt; - make (already installed)&lt;br /&gt; - wget (already installed)&lt;br /&gt;==&gt; Making package: usb_modeswitch 1.1.2-1 i686 (Wed May 26 10:06:36 WIT 2010)&lt;br /&gt;==&gt; Checking Runtime Dependencies...&lt;br /&gt;==&gt; Checking Buildtime Dependencies...&lt;br /&gt;==&gt; Retrieving Sources...&lt;br /&gt;  -&gt; Downloading usb-modeswitch-1.1.2.tar.bz2...&lt;br /&gt;--2010-05-26 10:06:36--  http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.1.2.tar.bz2&lt;br /&gt;Resolving www.draisberghof.de... 194.0.247.207&lt;br /&gt;Connecting to www.draisberghof.de|194.0.247.207|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 35001 (34K) [application/x-bzip]&lt;br /&gt;Saving to: “usb-modeswitch-1.1.2.tar.bz2.part”&lt;br /&gt;&lt;br /&gt;100%[=============================================================&gt;] 35,001      25.0K/s   in 1.4s    &lt;br /&gt;&lt;br /&gt;2010-05-26 10:06:44 (25.0 KB/s) - “usb-modeswitch-1.1.2.tar.bz2.part” saved [35001/35001]&lt;br /&gt;&lt;br /&gt;  -&gt; Downloading usb-modeswitch-data-20100418.tar.bz2...&lt;br /&gt;--2010-05-26 10:06:44--  http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20100418.tar.bz2&lt;br /&gt;Resolving www.draisberghof.de... 194.0.247.207&lt;br /&gt;Connecting to www.draisberghof.de|194.0.247.207|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 13967 (14K) [application/x-bzip]&lt;br /&gt;Saving to: “usb-modeswitch-data-20100418.tar.bz2.part”&lt;br /&gt;&lt;br /&gt;100%[=============================================================&gt;] 13,967      16.2K/s   in 0.8s    &lt;br /&gt;&lt;br /&gt;2010-05-26 10:06:52 (16.2 KB/s) - “usb-modeswitch-data-20100418.tar.bz2.part” saved [13967/13967]&lt;br /&gt;&lt;br /&gt;==&gt; Validating source files with md5sums...&lt;br /&gt;    usb-modeswitch-1.1.2.tar.bz2 ... Passed&lt;br /&gt;    usb-modeswitch-data-20100418.tar.bz2 ... Passed&lt;br /&gt;==&gt; Extracting Sources...&lt;br /&gt;  -&gt; Extracting usb-modeswitch-1.1.2.tar.bz2 with bsdtar&lt;br /&gt;  -&gt; Extracting usb-modeswitch-data-20100418.tar.bz2 with bsdtar&lt;br /&gt;==&gt; Starting build()...&lt;br /&gt;--2010-05-26 10:06:52--  http://www.draisberghof.de/usb_modeswitch/usb_modeswitch.setup&lt;br /&gt;Resolving www.draisberghof.de... 194.0.247.207&lt;br /&gt;Connecting to www.draisberghof.de|194.0.247.207|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 38634 (38K) [text/plain]&lt;br /&gt;Saving to: “usb_modeswitch.setup”&lt;br /&gt;&lt;br /&gt;100%[=============================================================&gt;] 38,634      12.6K/s   in 3.0s    &lt;br /&gt;&lt;br /&gt;2010-05-26 10:07:01 (12.6 KB/s) - “usb_modeswitch.setup” saved [38634/38634]&lt;br /&gt;&lt;br /&gt;/bin/rm -f usb_modeswitch&lt;br /&gt;gcc -o usb_modeswitch usb_modeswitch.c -march=i686 -mtune=generic -O2 -pipe -Wall -l usb&lt;br /&gt;usb_modeswitch.c: In function ‘search_devices’:&lt;br /&gt;usb_modeswitch.c:1120:8: warning: ‘listcopy’ may be used uninitialized in this function&lt;br /&gt;install -d /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/usr/sbin&lt;br /&gt;install --mode=755 usb_modeswitch /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/usr/sbin/usb_modeswitch&lt;br /&gt;install --mode=755 usb_modeswitch.tcl /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/lib/udev/usb_modeswitch&lt;br /&gt;install --mode=644 usb_modeswitch.conf /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/etc/usb_modeswitch.conf&lt;br /&gt;install --mode=644 usb_modeswitch.1 /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/usr/share/man/man1/usb_modeswitch.1&lt;br /&gt;install -d /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/etc/usb_modeswitch.d&lt;br /&gt;install --mode=644 -t /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/etc/usb_modeswitch.d ./usb_modeswitch.d/*&lt;br /&gt;install -d /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/lib/udev/rules.d&lt;br /&gt;install --mode=644 40-usb_modeswitch.rules /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/lib/udev/rules.d&lt;br /&gt;if [ -f /tmp/yaourt-tmp-root/aur-usb_modeswitch/usb_modeswitch/pkg/etc/issue ]; then \&lt;br /&gt;                if [ -n `which udevadm 2&gt;/dev/null` ]; then \&lt;br /&gt;                        UDEVADM=`which udevadm`; \&lt;br /&gt;                        UDEVADM_VER=`$UDEVADM -V 2&gt;/dev/null`; \&lt;br /&gt;                        if [ -z $UDEVADM_VER ]; then \&lt;br /&gt;                                UDEVADM_VER=`$UDEVADM --version 2&gt;/dev/null`; \&lt;br /&gt;                        fi; \&lt;br /&gt;                        if [ $UDEVADM_VER -gt 127 ]; then \&lt;br /&gt;                                $UDEVADM control --reload-rules; \&lt;br /&gt;                        else \&lt;br /&gt;                                $UDEVADM control --reload_rules; \&lt;br /&gt;                        fi \&lt;br /&gt;                elif [ `which udevcontrol 2&gt;/dev/null` ]; then \&lt;br /&gt;                `which udevcontrol` reload_rules; \&lt;br /&gt;                fi \&lt;br /&gt;        fi&lt;br /&gt;==&gt; Tidying install...&lt;br /&gt;  -&gt; Purging other files...&lt;br /&gt;  -&gt; Compressing man and info pages...&lt;br /&gt;  -&gt; Stripping debugging symbols from binaries and libraries...&lt;br /&gt;==&gt; Creating package...&lt;br /&gt;  -&gt; Generating .PKGINFO file...&lt;br /&gt;  -&gt; Compressing package...&lt;br /&gt;==&gt; Finished making: usb_modeswitch 1.1.2-1 i686 (Wed May 26 10:07:03 WIT 2010)&lt;br /&gt;&lt;br /&gt;==&gt;  Continue installing usb_modeswitch? [Y/n]&lt;br /&gt;==&gt;  [v]iew package contents [c]heck package with namcap&lt;br /&gt;==&gt;   ----------------------------------------------&lt;br /&gt;==&gt;Y&lt;br /&gt;&lt;br /&gt;loading package data...&lt;br /&gt;checking dependencies...&lt;br /&gt;(1/1) installing usb_modeswitch                     [############################################] 100%&lt;br /&gt;If you like this package, please install aurvote&lt;br /&gt;and vote for its inclusion/keeping in [community]&lt;br /&gt;&lt;br /&gt;[root@chakra ~]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Snapshots di atas adalah yang saya ambil dari screen pada saat instalasi. Perintah yang diketikkan sebenarnya hanya satu, yaitu "yaourt -S usb_modeswitch" dan setelah itu menjawab untuk meneruskan instalasi.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Konfigurasi /etc/usb_modeswitch_setup&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;File ini berisi setup untuk hardware yang kita gunakan. Yang perlu dilakukan hanya menghilangkan komentar ";" di depan konfigurasi hardware yang kita gunakan. Dalam hal ini, karena menggunakan ZTE 2726, kita akan mengedit bagian tersebut menjadi sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;DefaultVendor=  0x19d2&lt;br /&gt;DefaultProduct= 0xfff5&lt;br /&gt;&lt;br /&gt;TargetVendor=   0x19d2&lt;br /&gt;TargetProduct=  0xfff1&lt;br /&gt;&lt;br /&gt;# only for reference and 0.x versions&lt;br /&gt;# MessageEndpoint=0x05&lt;br /&gt;&lt;br /&gt;MessageContent="5553424312345678c00000008000069f030000000000000000000000000000"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Setelah selesai, jalankan usb_modeswitch berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra etc]# usb_modeswitch &lt;br /&gt;&lt;br /&gt;Looking for target devices ...&lt;br /&gt; No devices in target mode or class found&lt;br /&gt;Looking for default devices ...&lt;br /&gt; Found devices in default mode or class (1)&lt;br /&gt;Accessing device 002 on bus 005 ...&lt;br /&gt;Using endpoints 0x0a (out) and 0x89 (in)&lt;br /&gt;Inquiring device details; driver will be detached ...&lt;br /&gt;Looking for active driver ...&lt;br /&gt; OK, driver found ("usb-storage")&lt;br /&gt; OK, driver "usb-storage" detached&lt;br /&gt;&lt;br /&gt;SCSI inquiry data (for identification)&lt;br /&gt;-------------------------&lt;br /&gt;  Vendor String: ZTE     &lt;br /&gt;   Model String: USB Storage FFF1&lt;br /&gt;Revision String: 2.31&lt;br /&gt;-------------------------&lt;br /&gt;&lt;br /&gt;USB description data (for identification)&lt;br /&gt;-------------------------&lt;br /&gt;Manufacturer: ZTE, Incorporated&lt;br /&gt;     Product: USB Storage&lt;br /&gt;  Serial No.: 000000000002&lt;br /&gt;-------------------------&lt;br /&gt;Setting up communication with interface 0 ...&lt;br /&gt;Using endpoint 0x0a for message sending ...&lt;br /&gt;Trying to send message 1 to endpoint 0x0a ...&lt;br /&gt; OK, message successfully sent&lt;br /&gt;-&gt; Run lsusb to note any changes. Bye.&lt;br /&gt;&lt;br /&gt;[root@chakra etc]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Setelah itu, lihat hasilnya menggunakan lsusb, jika berhasil, pada baris kedua akan berubah menjadi fff1 bukan fff5 seperti di awal tulisan ini:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra etc]# lsusb &lt;br /&gt;Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 005 Device 003: ID 19d2:fff1 ONDA Communication S.p.A. &lt;br /&gt;Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;Bus 007 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN) Interface [Integrated Module]&lt;br /&gt;Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;Bus 002 Device 002: ID 04f2:b016 Chicony Electronics Co., Ltd VGA 30fps UVC Webcam&lt;br /&gt;Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub&lt;br /&gt;[root@chakra etc]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Untuk mengaktifkan, tinggal kita gunakan wvdial:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra etc]# pacman-color -S wvdial&lt;br /&gt;resolving dependencies...&lt;br /&gt;looking for inter-conflicts...&lt;br /&gt;&lt;br /&gt;Targets (3): xplc-0.3.13-2  wvstreams-4.6.1-2  wvdial-1.61-2  &lt;br /&gt;&lt;br /&gt;Total Download Size:    1.25 MB&lt;br /&gt;Total Installed Size:   8.27 MB&lt;br /&gt;&lt;br /&gt;Proceed with installation? [Y/n] &lt;br /&gt;:: Retrieving packages from extra...&lt;br /&gt; xplc-0.3.13-2-i686        43.5K   25.1K/s 00:00:02 [############################################] 100%&lt;br /&gt; wvstreams-4.6.1-2-i...  1152.1K   16.4K/s 00:01:10 [############################################] 100%&lt;br /&gt; wvdial-1.61-2-i686        85.9K   32.3K/s 00:00:03 [############################################] 100%&lt;br /&gt;checking package integrity...&lt;br /&gt;(3/3) checking for file conflicts                   [############################################] 100%&lt;br /&gt;(1/3) installing xplc                               [############################################] 100%&lt;br /&gt;(2/3) installing wvstreams                          [############################################] 100%&lt;br /&gt;(3/3) installing wvdial                             [############################################] 100%&lt;br /&gt;[root@chakra etc]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Jalankan wvdialconf untuk membuat konfigurasi wvdial berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra ~]# wvdialconf &lt;br /&gt;Editing `/etc/wvdial.conf'.&lt;br /&gt;&lt;br /&gt;Scanning your serial ports for a modem.&lt;br /&gt;&lt;br /&gt;Modem Port Scan&lt;*1&gt;: S0   S1   S2   S3   &lt;br /&gt;WvModem&lt;*1&gt;: Cannot get information for serial port.&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 Z -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 S0=0 -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 S0=0 &amp;C1 -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0 -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: Modem Identifier: ATI -- Manufacturer: QUALCOMM INCORPORATED&lt;br /&gt;ttyUSB0&lt;*1&gt;: Speed 9600: AT -- OK&lt;br /&gt;ttyUSB0&lt;*1&gt;: Max speed is 9600; that should be safe.&lt;br /&gt;ttyUSB0&lt;*1&gt;: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0 -- OK&lt;br /&gt;WvModem&lt;*1&gt;: Cannot get information for serial port.&lt;br /&gt;ttyUSB1&lt;*1&gt;: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud&lt;br /&gt;ttyUSB1&lt;*1&gt;: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud&lt;br /&gt;ttyUSB1&lt;*1&gt;: ATQ0 V1 E1 -- and failed too at 115200, giving up.&lt;br /&gt;WvModem&lt;*1&gt;: Cannot get information for serial port.&lt;br /&gt;ttyUSB2&lt;*1&gt;: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud&lt;br /&gt;ttyUSB2&lt;*1&gt;: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud&lt;br /&gt;ttyUSB2&lt;*1&gt;: ATQ0 V1 E1 -- and failed too at 115200, giving up.&lt;br /&gt;WvModem&lt;*1&gt;: Cannot get information for serial port.&lt;br /&gt;ttyUSB3&lt;*1&gt;: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud&lt;br /&gt;ttyUSB3&lt;*1&gt;: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud&lt;br /&gt;ttyUSB3&lt;*1&gt;: ATQ0 V1 E1 -- and failed too at 115200, giving up.&lt;br /&gt;WvModem&lt;*1&gt;: Cannot get information for serial port.&lt;br /&gt;ttyUSB4&lt;*1&gt;: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud&lt;br /&gt;ttyUSB4&lt;*1&gt;: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud&lt;br /&gt;ttyUSB4&lt;*1&gt;: ATQ0 V1 E1 -- and failed too at 115200, giving up.&lt;br /&gt;&lt;br /&gt;Found a modem on /dev/ttyUSB0.&lt;br /&gt;/etc/wvdial.conf&lt;warn&gt;: Can't open '/etc/wvdial.conf' for reading: No such file or directory&lt;br /&gt;/etc/wvdial.conf&lt;warn&gt;: ...starting with blank configuration.&lt;br /&gt;Modem configuration written to /etc/wvdial.conf.&lt;br /&gt;ttyUSB0&lt;info&gt;: Speed 9600; init "ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0"&lt;br /&gt;[root@chakra ~]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Hasilnya adalah sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra ~]# cat /etc/wvdial.conf &lt;br /&gt;&lt;br /&gt;[Dialer Defaults]&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;Modem Type = Analog Modem&lt;br /&gt;; Phone = &lt;target Phone Number&gt;&lt;br /&gt;ISDN = 0&lt;br /&gt;; Username = &lt;your Login Name&gt;&lt;br /&gt;Init1 = ATZ&lt;br /&gt;; Password = &lt;your Password&gt;&lt;br /&gt;Modem = /dev/ttyUSB0&lt;br /&gt;Baud = 9600&lt;br /&gt;[root@chakra ~]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ubah sesuai dengan konfigurasi Smart:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra ~]# cat /etc/wvdial.conf &lt;br /&gt;&lt;br /&gt;[Dialer Smart]&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;Modem Type = Analog Modem&lt;br /&gt;Phone = #777&lt;br /&gt;ISDN = 0&lt;br /&gt;Username = smart&lt;br /&gt;Init1 = ATZ&lt;br /&gt;Password = smart&lt;br /&gt;Modem = /dev/ttyUSB0&lt;br /&gt;Baud = 9600&lt;br /&gt;FlowControl = CRTSCTS&lt;br /&gt;Carrier Check = No&lt;br /&gt;New PPPD = yes&lt;br /&gt;[root@chakra ~]# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Untuk mengaktifkan koneksi ke Internet, yang perlu dilakukan hanya memanggil wvdial berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;[root@chakra ~]# wvdial Smart&lt;br /&gt;--&gt; WvDial: Internet dialer version 1.61&lt;br /&gt;--&gt; Cannot get information for serial port.&lt;br /&gt;--&gt; Initializing modem.&lt;br /&gt;--&gt; Sending: ATZ&lt;br /&gt;ATZ&lt;br /&gt;OK&lt;br /&gt;--&gt; Sending: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;OK&lt;br /&gt;--&gt; Modem initialized.&lt;br /&gt;--&gt; Sending: ATDT#777&lt;br /&gt;--&gt; Waiting for carrier.&lt;br /&gt;ATDT#777&lt;br /&gt;CONNECT&lt;br /&gt;--&gt; Carrier detected.  Waiting for prompt.&lt;br /&gt;~[7f]}#@!}!}!} }9}"}&amp;} } } } }#}%B#}%}%}&amp;} }/[0f]9}'}"}(}"dq~&lt;br /&gt;--&gt; PPP negotiation detected.&lt;br /&gt;--&gt; Starting pppd at Wed May 26 10:53:55 2010&lt;br /&gt;--&gt; Pid of pppd: 6231&lt;br /&gt;--&gt; Using interface ppp0&lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; local  IP address 10.12.26.89&lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; remote IP address 10.20.4.138&lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; primary   DNS address 10.17.3.244&lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;--&gt; secondary DNS address 10.17.3.252&lt;br /&gt;--&gt; pppd: H~� Pt� &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Selesai. Lain waktu, saat booting komputer dan masuk ke Linux, dari terminal aktifkan wvdial dengan perintah "wvdial Smart" sebelum mulai menggunakan.&lt;br /&gt;&lt;br /&gt;Selamat mencoba!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-6801931832334214459?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/6801931832334214459/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/05/konfigurasi-ev-do-smart-di-chakra-phoix.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/6801931832334214459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/6801931832334214459'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/05/konfigurasi-ev-do-smart-di-chakra-phoix.html' title='Konfigurasi EV-DO Smart di Chakra (Phoix) / Arch Linux'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-3312735659241246503</id><published>2010-02-20T19:14:00.000-08:00</published><updated>2010-04-13T17:15:27.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RubyGems'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>RubyGems Update 1.3.5 to 1.3.6</title><content type='html'>&lt;div class="snap_preview"&gt;At first, I thought that RubyGems update  should be a piece of cake but it turns out that I got some weird things  happened. Here’s the scenario:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[root@bpdp-arch ~]# gem update --system&lt;br /&gt;Updating RubyGems&lt;br /&gt;&lt;br /&gt;Updating rubygems-update&lt;br /&gt;&lt;br /&gt;Successfully installed rubygems-update-1.3.6&lt;br /&gt;&lt;br /&gt;Updating RubyGems to 1.3.6&lt;br /&gt;Installing RubyGems 1.3.6&lt;br /&gt;RubyGems 1.3.6 installed&lt;br /&gt;=== 1.3.6 / 2010-02-17&lt;br /&gt;NOTE:&lt;br /&gt;http://rubygems.org is now the default source for downloading gems.&lt;br /&gt;You may have sources set via ~/.gemrc, so you should replace&lt;br /&gt;http://gems.rubyforge.org with http://rubygems.org&lt;br /&gt;http://gems.rubyforge.org will continue to work for the forseeable future.&lt;br /&gt;New features:&lt;br /&gt;* `gem` commands&lt;br /&gt;&amp;nbsp;* Added `gem push` and `gem owner` for interacting with modern/Gemcutter&lt;br /&gt;&amp;nbsp;sources&lt;br /&gt;&amp;nbsp;* `gem dep` now supports --prerelease.&lt;br /&gt;&amp;nbsp;* `gem fetch` now supports --prerelease.&lt;br /&gt;&amp;nbsp;* `gem server` now supports --bind.&amp;nbsp; Patch #27357 by Bruno Michel.&lt;br /&gt;&amp;nbsp;* `gem rdoc` no longer overwrites built documentation.&amp;nbsp; Use --overwrite&lt;br /&gt;&amp;nbsp;force rebuilding.&amp;nbsp; Patch #25982 by Akinori MUSHA.&lt;br /&gt;* Captial letters are now allowed in prerelease versions.&lt;br /&gt;Bug fixes:&lt;br /&gt;* Development deps are no longer added to rubygems-update gem so older&lt;br /&gt;&amp;nbsp;versions can update sucessfully.&lt;br /&gt;* Installer bugs:&lt;br /&gt;&amp;nbsp;* Prerelease gems can now depend on non-prerelease gems.&lt;br /&gt;&amp;nbsp;* Development dependencies are ignored unless explicitly needed.&amp;nbsp; Bug #27608&lt;br /&gt;&amp;nbsp;by Roger Pack.&lt;br /&gt;* `gem` commands&lt;br /&gt;&amp;nbsp;* `gem which` now fails if no paths were found.&amp;nbsp; Adapted patch #27681 by&lt;br /&gt;&amp;nbsp;Caio Chassot.&lt;br /&gt;&amp;nbsp;* `gem server` no longer has invalid markup.&amp;nbsp; Bug #27045 by Eric Young.&lt;br /&gt;&amp;nbsp;* `gem list` and friends show both prerelease and regular gems when&lt;br /&gt;&amp;nbsp;--prerelease --all is given&lt;br /&gt;* Gem::Format no longer crashes on empty files.&amp;nbsp; Bug #27292 by Ian Ragsdale.&lt;br /&gt;* Gem::GemPathSearcher handles nil require_paths. Patch #27334 by Roger Pack.&lt;br /&gt;* Gem::RemoteFetcher no longer copies the file if it is where we want it.&lt;br /&gt;&amp;nbsp;Patch #27409 by Jakub Šťastný.&lt;br /&gt;Deprecation Notices:&lt;br /&gt;* lib/rubygems/timer.rb has been removed.&lt;br /&gt;* Gem::Dependency#version_requirements is deprecated and will be removed on or&lt;br /&gt;&amp;nbsp;after August 2010.&lt;br /&gt;* Bulk index update is no longer supported.&lt;br /&gt;* Gem::manage_gems was removed in 1.3.3.&lt;br /&gt;* Time::today was removed in 1.3.3.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;RubyGems installed the following executables:&lt;br /&gt;&amp;nbsp;/usr/lib/ruby/gems/1.9.1/gems/rubygems-update-1.3.5/bin/gem&lt;br /&gt;[root@bpdp-arch ~]# logout&lt;/pre&gt;&lt;/blockquote&gt;Piece of cake, right? Wrong. Let’s see:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[bpdp@bpdp-arch ~]$ gem env&lt;br /&gt;RubyGems Environment:&lt;br /&gt; - RUBYGEMS VERSION: 1.3.5&lt;br /&gt; - RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i686-linux]&lt;br /&gt; - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.1&lt;br /&gt; - RUBY EXECUTABLE: /usr/bin/ruby&lt;br /&gt; - EXECUTABLE DIRECTORY: /usr/bin&lt;br /&gt; - RUBYGEMS PLATFORMS:&lt;br /&gt; - ruby&lt;br /&gt; - x86-linux&lt;br /&gt; - GEM PATHS:&lt;br /&gt; - /usr/lib/ruby/gems/1.9.1&lt;br /&gt; - /home/bpdp/.gem/ruby/1.9.1&lt;br /&gt; - GEM CONFIGURATION:&lt;br /&gt; - :update_sources =&amp;gt; true&lt;br /&gt; - :verbose =&amp;gt; true&lt;br /&gt; - :benchmark =&amp;gt; false&lt;br /&gt; - :backtrace =&amp;gt; false&lt;br /&gt; - :bulk_threshold =&amp;gt; 1000&lt;br /&gt; - REMOTE SOURCES:&lt;br /&gt; - http://gems.rubyforge.org/&lt;br /&gt;[bpdp@bpdp-arch ~]$&lt;/pre&gt;&lt;/blockquote&gt;So, I guess I should use old-fashioned way just as explained in  manual:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[root@bpdp-arch ~]# gem install rubygems-update update_rubygems&lt;br /&gt;Successfully installed rubygems-update-1.3.6&lt;br /&gt;ERROR:&amp;nbsp; could not find gem update_rubygems locally or in a repository&lt;br /&gt;1 gem installed&lt;br /&gt;Installing ri documentation for rubygems-update-1.3.6...&lt;br /&gt;Updating class cache with 132 classes...&lt;br /&gt;Installing RDoc documentation for rubygems-update-1.3.6...&lt;br /&gt;Could not find main page README&lt;br /&gt;[root@bpdp-arch ~]# gem env&lt;br /&gt;RubyGems Environment:&lt;br /&gt; - RUBYGEMS VERSION: 1.3.5&lt;br /&gt; - RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i686-linux]&lt;br /&gt; - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.1&lt;br /&gt; - RUBY EXECUTABLE: /usr/bin/ruby&lt;br /&gt; - EXECUTABLE DIRECTORY: /usr/bin&lt;br /&gt; - RUBYGEMS PLATFORMS:&lt;br /&gt; - ruby&lt;br /&gt; - x86-linux&lt;br /&gt; - GEM PATHS:&lt;br /&gt; - /usr/lib/ruby/gems/1.9.1&lt;br /&gt; - /root/.gem/ruby/1.9.1&lt;br /&gt; - GEM CONFIGURATION:&lt;br /&gt; - :update_sources =&amp;gt; true&lt;br /&gt; - :verbose =&amp;gt; true&lt;br /&gt; - :benchmark =&amp;gt; false&lt;br /&gt; - :backtrace =&amp;gt; false&lt;br /&gt; - :bulk_threshold =&amp;gt; 1000&lt;br /&gt; - REMOTE SOURCES:&lt;br /&gt; - http://gems.rubyforge.org/&lt;br /&gt;[root@bpdp-arch ~]#&lt;/pre&gt;&lt;/blockquote&gt;This didn’t work too. Looks like I need to manually execute the  script to update RubyGems:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[root@bpdp-arch ~]# update_rubygems&lt;br /&gt;RubyGems 1.3.6 installed&lt;br /&gt;&lt;br /&gt;=== 1.3.6 / 2010-02-17&lt;br /&gt;&lt;br /&gt;NOTE:&lt;br /&gt;[ ... cut ... ]&lt;br /&gt;[ ... cut ... ]&lt;br /&gt;[ ... cut ... ]&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;RubyGems installed the following executables:&lt;br /&gt; /usr/bin/gem&lt;br /&gt;[root@bpdp-arch ~]#&lt;/pre&gt;&lt;/blockquote&gt;And then I am happy with the result:&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[root@bpdp-arch ~]# gem env&lt;br /&gt;RubyGems Environment:&lt;br /&gt;&amp;nbsp;- RUBYGEMS VERSION: 1.3.6&lt;br /&gt;&amp;nbsp;- RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i686-linux]&lt;br /&gt;&amp;nbsp;- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.1&lt;br /&gt;&amp;nbsp;- RUBY EXECUTABLE: /usr/bin/ruby&lt;br /&gt;&amp;nbsp;- EXECUTABLE DIRECTORY: /usr/bin&lt;br /&gt;&amp;nbsp;- RUBYGEMS PLATFORMS:&lt;br /&gt;&amp;nbsp;- ruby&lt;br /&gt;&amp;nbsp;- x86-linux&lt;br /&gt;&amp;nbsp;- GEM PATHS:&lt;br /&gt;&amp;nbsp;- /usr/lib/ruby/gems/1.9.1&lt;br /&gt;&amp;nbsp;- /root/.gem/ruby/1.9.1&lt;br /&gt;&amp;nbsp;- GEM CONFIGURATION:&lt;br /&gt;&amp;nbsp;- :update_sources =&amp;gt; true&lt;br /&gt;&amp;nbsp;- :verbose =&amp;gt; true&lt;br /&gt;&amp;nbsp;- :benchmark =&amp;gt; false&lt;br /&gt;&amp;nbsp;- :backtrace =&amp;gt; false&lt;br /&gt;&amp;nbsp;- :bulk_threshold =&amp;gt; 1000&lt;br /&gt;&amp;nbsp;- REMOTE SOURCES:&lt;br /&gt;&amp;nbsp;- http://rubygems.org/&lt;br /&gt;[root@bpdp-arch ~]#&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-3312735659241246503?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/3312735659241246503/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/02/rubygems-update-135-to-136.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3312735659241246503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3312735659241246503'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/02/rubygems-update-135-to-136.html' title='RubyGems Update 1.3.5 to 1.3.6'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-2072441692216995160</id><published>2010-02-03T08:03:00.000-08:00</published><updated>2010-02-03T08:03:35.063-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>Managing a Software Development Team: Some Experiences</title><content type='html'>Managing a software development team is never an easy task. It consists of 2 sides: technical and non-technical. This task is often assigned to the project manager. To be succeed, one has to consider those 2 sides. Below are some of my experiences in managing a software development team. This list is not meant to be complete. You may need more but at least you will be in the safety line level one if you do care with these issues.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Decide the tools which will be used by the team&lt;/h3&gt;Well, this is a bad news if you don't have enough technical capabilities. Once you don't decide the tools, your team will be confuse as they have more than one preferences. It's not funny to have your team uses PHP with different versions, some use WAMP while the others use XAMPP or maybe PHP which comes from some Linux distros. It's not funny to have your team uses Notepad, Textpad, Vim, Netbeans, Eclipse, for their IDE/Text Editor. This will waste much time and bandwidth. Consider this, if they use different tools, then when someone says: "uh oh, my Vim always give me a tab and not some spaces, how do I turn the tab into spaces?" and then nobody can answer this and probably think "that is your responsibility, I don't care because I never use Vim". Now consider if everybody uses Netbeans (note: I don't have any relation whatsoever with Netbeans nor a Netbeans evangelist), when someone yell "How do I create a new PHP module in Netbeans?", chances are some of the guys in your team know about this.&lt;br /&gt;&lt;h3&gt;Use a specific software development methodology, probably with some minor adaption&lt;/h3&gt;A software development methodology consists of process and modelling. It guides the team through the process and enable the team to model the software which is built by the team to solve client problems. It is important to use the specific methodology so that everyone in the team knows what and how to do the development. If you don't decide any methodology, then your team won't have any guides. Remember, you have to use a specific methodology but don't be too rigid. Your team may consists of people from many backgounds with many level of capabilities. For example, you may use a Unified Process methodology but because your team is limited and don't have time to learn how to use UML, then don't push them to use rigid UP methodology. The most important thing here is process. Do use that process but don't be too rigid.&lt;br /&gt;&lt;h3&gt;Make some conventions regarding technical issues&lt;/h3&gt;Again, this is important to keep the team away from the state of flux and let the guys in the team communicate with the same language. You surely don't want your team to have more than one variable / property naming system, right? What if some programmers use "this_is_a_variable", while the others use "thisIsAVariable"? quite confusing, I guess. You may need to define some coding conventions and probably uses software tool to force this conventions, for example if you use Java, you may use Checkstyle.&lt;br /&gt;&lt;h3&gt;Know the client(s) and their problems which are tried to be solved&lt;/h3&gt;You must understand this good enough so that you can define the scope of the problems and deal with the problems. &lt;br /&gt;&lt;h3&gt;Decide the scope of the problems and insists on this.&lt;/h3&gt;Clients basically don't understand the requirements, so your duty as a project manager is to define the scope of the problems which are tried to be solved by the software. You must cooperate nicely with the client and have the information understood by all team members. From programmers' point of view, the uncertainty caused by scope uncertainty will lead to frustration. Well, I do understand that agile methodologies encourage changes, but who want to deal with changes everytime? What I am trying to say is you as a project manager should understand that changes are possible but this should be done within the scope. Don't play with programmers' heart ;)&lt;br /&gt;&lt;h3&gt;Have a good interpersonal relationship and don't be a jerk&lt;/h3&gt;I know that this software development task is not easy. Clients always ask the progress and the team is in a stress condition. It really helps to just stay with the team and always willing to help them whatever you can than just act like a jerk who walks here and there and yelling. Trust me, the team will respect you more if you are always willing to help them.&lt;br /&gt;&lt;h3&gt;Never let the team in a state of flux&lt;/h3&gt;Uncertainty comes everytime. Whenever the team has anything uncertain, your decision is needed to keep them stay away from confusion. You do understand that you have to have a good grasp in technical side and problem domain to make a good decision, don't you?&lt;br /&gt;&lt;h3&gt;Let the team concentrate on technical matters&lt;/h3&gt;Ok, pay attention more to non technical matters so that the team can concentrate on technical side. Don't let them do any clerical things since programmers (usually) hate to do administrative things. It's good to have a dedicated person to deal with all administrative things.&lt;br /&gt;&lt;h3&gt;Let the team member knows each other about progress and difficulties&lt;/h3&gt;Opennes is important. By let them know each other's progress, you keep them in a fair situation. Low salary probably can be understood, but unfair treatment can not be tolerated.&lt;br /&gt;&lt;h3&gt;Inform the team about your progress too&lt;/h3&gt;So you think you can hide your progress? The team will surely want to know that you do your jobs too. If you hide your progress, they will lose respect and trust in you.&lt;br /&gt;&lt;h3&gt;Communicate. Communicate. Communicate&lt;/h3&gt;I can not stress more. This is really important for the team to have them communicate each other. Your tasks will be to communicate with them and act as a liaison between the team and the client. Oh and don't forget, have a good sense of humour. &lt;br /&gt;&lt;h3&gt;Always keep backup of everything&lt;/h3&gt;You don't need to backup everything if you are sure that you always live in an ideal situation. You should keep backup in more than one place. Compress them and have them uploaded anywhere on the Internet (4shared.com, rapidshare.com, /etc) as long as you have full control of your files. &lt;br /&gt;&lt;h3&gt;Use Version Control System&lt;/h3&gt;Version control system is a software which can be used to track the software source code versioning. You may use git, mercurial, subversion, /etc for this purpose. &lt;br /&gt;&lt;h3&gt;Use web based bug tracking system, project management software, and/or wiki&lt;/h3&gt;This will keep any information handy and on track. All any other members can also see the project's progress. It will keep each team members informed and any unfair situation can be detected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-2072441692216995160?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/2072441692216995160/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/02/managing-software-development-team-some.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/2072441692216995160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/2072441692216995160'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/02/managing-software-development-team-some.html' title='Managing a Software Development Team: Some Experiences'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-5199408927798605009</id><published>2010-01-05T17:52:00.000-08:00</published><updated>2010-04-13T17:30:21.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servlets'/><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaBean'/><title type='text'>MVC Without Framework: JSP and Servlets Integration</title><content type='html'>&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This post is used to showcase a MVC pattern for web development without framework. Its functionality is display a random number which is set by a bean and populated by a servlet. I use the source code from book “Core Servlets and Java Server Pages” – chapter 15, which is available online at http://pdf.coreservlets.com/. Credits should goes to Marty Hall and Larry Brown, I only make some minor replacement (for Tomcat 6.0.20) and more details instruction for the shake of my student’s clearlyness.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;Directory Structures and Files&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[bpdp@bpdp-arch webapps]$ tree mvc/&lt;br /&gt;mvc/&lt;br /&gt;`-- WEB-INF&lt;br /&gt;&amp;nbsp;|-- classes&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp; |-- beans&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |-- NumberBean.class&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; `-- NumberBean.java&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp; `-- servlets&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-- RandomNumberServlet.class&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `-- RandomNumberServlet.java&lt;br /&gt;&amp;nbsp;|-- views&lt;br /&gt;&amp;nbsp;|&amp;nbsp;&amp;nbsp; `-- RandomNum.jsp&lt;br /&gt;&amp;nbsp;`-- web.xml&lt;br /&gt;5 directories, 6 files&lt;br /&gt;[bpdp@bpdp-arch webapps]$&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;u&gt;&lt;b&gt;Files&lt;/b&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u style="font-weight: normal;"&gt;NumberBean.java&lt;/u&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: java"&gt;package beans;&lt;br /&gt;&lt;br /&gt;public class NumberBean {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;private double num = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public NumberBean(double number) {&lt;br /&gt;  &amp;nbsp;setNumber(number);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public double getNumber() {&lt;br /&gt;  &amp;nbsp;return(num);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public void setNumber(double number) {&lt;br /&gt;  &amp;nbsp;num = number;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;u&gt;RandomNumberServlet.java&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: java"&gt;package servlets;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import beans.NumberBean;&lt;br /&gt;&lt;br /&gt;/** Servlet that generates a random number, stores it in a bean,&lt;br /&gt;&amp;nbsp;* and forwards to JSP page to display it.&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;public class RandomNumberServlet extends HttpServlet {&lt;br /&gt;  public void doGet(HttpServletRequest request,&lt;br /&gt;    HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;    NumberBean bean = new NumberBean(Math.random());&lt;br /&gt;    request.setAttribute("randomNum", bean);&lt;br /&gt;    String address = "/WEB-INF/views/RandomNum.jsp";&lt;br /&gt;    RequestDispatcher dispatcher = request.getRequestDispatcher(address);&lt;br /&gt;    dispatcher.forward(request, response);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;u&gt;RandomNum.jsp&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0PsSvlIomI/AAAAAAAAAMY/XojENW1Ndbg/s1600-h/jsp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0PsSvlIomI/AAAAAAAAAMY/XojENW1Ndbg/s640/jsp.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;u&gt;web.xml&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oW3W3PaZ35k/S0PsZg2zB4I/AAAAAAAAAMg/58-gTVIC2ts/s1600-h/web-xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oW3W3PaZ35k/S0PsZg2zB4I/AAAAAAAAAMg/58-gTVIC2ts/s640/web-xml.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;From these source code, you should know that I have prepare directory for &lt;b&gt;views&lt;/b&gt; (only for JSP), &lt;b&gt;servlets &lt;/b&gt;(all servlets), &lt;b&gt;beans&lt;/b&gt; (all beans). That way, we can separate our application into 3 functionalities: Model (beans) – View (JSP) – and Controller (servlets). This will keep your mind stay organized.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;Run Application&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Execute the application by typing its URL: http://server:8080/mvc/randomize. Here’s the screenshot:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_oW3W3PaZ35k/S0Psp5KSVxI/AAAAAAAAAMo/NEI25NyXhzQ/s1600-h/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_oW3W3PaZ35k/S0Psp5KSVxI/AAAAAAAAAMo/NEI25NyXhzQ/s640/Screenshot.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you want to copy, the source code, have a look here: &lt;a href="http://bambangpdp.wordpress.com/2010/01/06/mvc-without-framework-jsp-and-servlets-integration/"&gt;http://bambangpdp.wordpress.com/2010/01/06/mvc-without-framework-jsp-and-servlets-integration/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-5199408927798605009?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/5199408927798605009/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/01/mvc-without-framework-jsp-and-servlets.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5199408927798605009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5199408927798605009'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/01/mvc-without-framework-jsp-and-servlets.html' title='MVC Without Framework: JSP and Servlets Integration'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oW3W3PaZ35k/S0PsSvlIomI/AAAAAAAAAMY/XojENW1Ndbg/s72-c/jsp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-5572420993380017033</id><published>2010-01-05T17:21:00.000-08:00</published><updated>2010-04-13T17:33:15.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Tag'/><title type='text'>Quick Hack for the Impatients: JSP Custom Tag</title><content type='html'>&lt;u&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Source code from this posting was taken from http://java.sun.com/developer/technicalArticles/xml/WebAppDev3/ with some minor replacement needed for Apache Tomcat 6.0.20 (latest as of this date) and more details on how to run the application.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Purpose of Application&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;This application is used as a showcase for jsp custom tag. Its functionality is create custom tag for jsp to display string in lowercase.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Directory Structure and Files&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;[bpdp@bpdp-arch webapps]$ tree customtags/&lt;br /&gt;customtags/&lt;br /&gt;|-- WEB-INF&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |-- classes&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; `-- tags&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-- ToLowerCaseTag.class&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `-- ToLowerCaseTag.java&lt;br /&gt;|&amp;nbsp;&amp;nbsp; |-- mytaglib.tld&lt;br /&gt;|&amp;nbsp;&amp;nbsp; `-- web.xml&lt;br /&gt;`-- coba.jsp&lt;br /&gt;&lt;br /&gt;3 directories, 5 files&lt;br /&gt;[bpdp@bpdp-arch webapps]$&lt;/pre&gt;&lt;/blockquote&gt;We created &lt;b&gt;customtags&lt;/b&gt; directory under webapps (which is needed for an application to be executed by Tomcat).&amp;nbsp; Pay attention to file &lt;b&gt;mytaglib.tld&lt;/b&gt;, this file is used as tag lib descriptor to describe descriptor for taglib.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Files&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;ToLowerCaseTag.java&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: java"&gt;package tags;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.servlet.jsp.*;&lt;br /&gt;import javax.servlet.jsp.tagext.*;&lt;br /&gt;&lt;br /&gt;public class ToLowerCaseTag extends BodyTagSupport {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public int doAfterBody() throws JspException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BodyContent bc = getBodyContent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get the bodycontent as string&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String body = bc.getString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // getJspWriter to output content&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JspWriter out = bc.getEnclosingWriter();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(body != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.print(body.toLowerCase());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(IOException ioe) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new JspException("Error: "+ioe.getMessage());&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return SKIP_BODY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;u&gt;web.xml&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oW3W3PaZ35k/S0PlBFTAjUI/AAAAAAAAAMA/oSS36Q7d4g4/s1600-h/web-xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oW3W3PaZ35k/S0PlBFTAjUI/AAAAAAAAAMA/oSS36Q7d4g4/s640/web-xml.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;mytaglib.tld&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0PlI5bzBfI/AAAAAAAAAMI/iP0aWP_WzYw/s1600-h/mytaglib-tld.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0PlI5bzBfI/AAAAAAAAAMI/iP0aWP_WzYw/s640/mytaglib-tld.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;coba.jsp&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oW3W3PaZ35k/S0PlP_VN99I/AAAAAAAAAMQ/kbp94Skm4T8/s1600-h/coba-jsp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_oW3W3PaZ35k/S0PlP_VN99I/AAAAAAAAAMQ/kbp94Skm4T8/s640/coba-jsp.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Notes:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;From&amp;nbsp; all of the files above, you should know the relationship between &lt;b&gt;taglib uri="mytags" prefix="first"&amp;nbsp; &lt;/b&gt;(in coba.jsp) with &lt;b&gt;&lt;taglib-uri&gt;mytags&lt;/taglib-uri&gt;&lt;/b&gt; (in web.xml).&lt;br /&gt;&lt;br /&gt;I used screenshot and not embedded code because this post interpret tags as HTML and keep yelling about error, so if you want to copy the source code, have a look here: &lt;a href="http://bambangpdp.wordpress.com/2010/01/06/217/"&gt;http://bambangpdp.wordpress.com/2010/01/06/217/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Run Application&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;To run this application, type the URL: http://server:8080/customtags/coba.jsp&lt;br /&gt;Here's the screenshot:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oW3W3PaZ35k/S0PfbObjBDI/AAAAAAAAAL4/NAB34IVjrME/s1600-h/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_oW3W3PaZ35k/S0PfbObjBDI/AAAAAAAAAL4/NAB34IVjrME/s640/Screenshot.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-5572420993380017033?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/5572420993380017033/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/01/quick-hack-for-impatients-jsp-custom.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5572420993380017033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/5572420993380017033'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/01/quick-hack-for-impatients-jsp-custom.html' title='Quick Hack for the Impatients: JSP Custom Tag'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oW3W3PaZ35k/S0PlBFTAjUI/AAAAAAAAAMA/oSS36Q7d4g4/s72-c/web-xml.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-2818368338442745904</id><published>2010-01-03T01:56:00.000-08:00</published><updated>2010-04-13T17:13:14.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutt'/><title type='text'>Configuring mutt for IMAPS</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0BpgAA9ZAI/AAAAAAAAALw/xLCssjfnVdE/s1600-h/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_oW3W3PaZ35k/S0BpgAA9ZAI/AAAAAAAAALw/xLCssjfnVdE/s640/Screenshot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here’s a trivial guide for desperately busy people to start using &lt;a href="http://www.facebook.com/note_redirect.php?note_id=260295991806&amp;amp;h=7b4d338a0ff5bae70d39b44fd8bfc781&amp;amp;url=http%3A%2F%2Fwww.mutt.org" target="_blank" title="http://www.mutt.org"&gt;mutt&lt;/a&gt;, yes the mail client that suck less. If you like simplicity and more on functionalities than eye candy, this should be your mail client (and who the hell are you to ask me to do that? — you said :p).&lt;br /&gt;&lt;br /&gt;Ok, to begin, you should know your user name, IMAP server, and SMTP server details. This should not be difficult since you should have this first place when you got your mail hosted somewhere else (for example, you may login to cpanel and than get this information from your e-mail account.&lt;br /&gt;Firstly, the configuration file. Mutt uses $HOME/.muttrc as the default configuration file. There are some configuration. Here’s mine (this is not complete .muttrc, I put this only the parts which is useful for this guide):&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush: bash"&gt;# put your email address here&lt;br /&gt;set from="bpdp@contextualmind.net"&lt;br /&gt;set use_from=yes&lt;br /&gt;set envelope_from="yes"&lt;br /&gt;&lt;br /&gt;set editor=vim&lt;br /&gt;&lt;br /&gt;set folder="imaps://username@imapserver"&lt;br /&gt;set spoolfile="imaps://username@imapserver/INBOX"&lt;br /&gt;&lt;br /&gt;set imap_pass="putpasswordhere"&lt;br /&gt;&lt;br /&gt;set smtp_url="smtp://username@server/"&lt;br /&gt;set smtp_pass="putpasswordhere"&lt;br /&gt;&lt;br /&gt;bind index 'G' imap-fetch-mail&lt;br /&gt;set mbox="!"&lt;/pre&gt;&lt;/blockquote&gt;Run mutt from shell and use G key to refresh (just as you have already defined in &lt;i&gt;bind index&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Happy mutt-ing, people &lt;img alt=":)" class="wp-smiley" src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-2818368338442745904?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/2818368338442745904/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2010/01/configuring-mutt-for-imaps.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/2818368338442745904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/2818368338442745904'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2010/01/configuring-mutt-for-imaps.html' title='Configuring mutt for IMAPS'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oW3W3PaZ35k/S0BpgAA9ZAI/AAAAAAAAALw/xLCssjfnVdE/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6405865758808618250.post-3749670246122421624</id><published>2009-12-27T00:17:00.000-08:00</published><updated>2009-12-26T09:16:58.243-08:00</updated><title type='text'>Memahami LAP (Language-Action Perspective) dalam Konteks Pragmatic Web: Pengenalan</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Language-Action Perspective pertama kali dicetuskan oleh Flores dan Ludlow (Flores, et.al - 1980). Pada saat itu, masih terdapat anggapan konvensional bahwa bahasa hanya merupakan alat untuk pertukaran komunikasi yang semata-mata hanya merupakan transmisi dari informasi dan simbol. Penelitian Flores dan Ludlow membuka kemungkinan bahwa bahasa tidak hanya digunakan sebagai alat pertukaran informasi tetapi juga untuk melakukan aksi (itu sebabnya, hal ini disebut sebagai Language-Action Perspective) seperti halnya dalam janji, perintah, permintaan, deklarasi, dan lain-lain. Aksi-aksi tersebut merupakan bangunan dasar dari komunitas dan organisasi dan harus dipahami dengan baik terutama dalam konteks pengembangan sistem informasi serta organisasi yang efektif.&lt;br /&gt;&lt;br /&gt;Pragmatic Web mempunyai akar dari LAP. Pada dasarnya, Pragmatic Web merupakan salah satu dari 3 komponen utama aplikasi web yang lengkap dan kompleks berikut ini:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Syntactic Web, merupakan komponen dari aplikasi web yang lebih berkaitan dengan sintaks dari halaman web. Tentu saja pada bagian ini akan lebih ditekankan unsur &lt;span style="font-weight: bold;"&gt;view&lt;/span&gt; dari aplikasi web. HTML, CSS, JavaScript, AJAX, dan sejenisnya sebenarnya merupakan unsur utama dari Syntactic Web.&lt;/li&gt;&lt;li&gt;Semantic Web, merupakan komponen dari aplikasi web yang berkaitan dengan isi dari web. Semantic Web lebih menekankan pada teknologi untuk mendefinisikan data secara terstruktur (XML - RDF). Komponen utama dari teknologi ini adalah ontologi. Ontologi mendefinisikan jejaring semantik dari konsep, keterkaitan, dan aturan untuk mendefinisikan arti dari suatu &lt;span style="font-style: italic;"&gt;resource&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pragmatic Web, merupakan komponen yang berkaitan dengan konteks (&lt;span style="font-style: italic;"&gt;context&lt;/span&gt;) dari suatu &lt;span style="font-style: italic;"&gt;resource&lt;/span&gt; web. Konteks merupakan hal yang sangat penting dan menentukan terjadinya suatu kesepahaman bersama antara pihak-pihak yang terlibat. Tidak akan ada suatu kesepakatan tanpa adanya kesepahaman konteks. Suatu kalimat yang diuraikan bisa saja mempunyai hasil yang berlainan jika ditempatkan pada konteks yang lain. Pada dasarnya konteks terbagi menjadi konteks umum dan konteks individual.&lt;/li&gt;&lt;/ol&gt;Dari hal ini, sebenarnya bisa dilihat mengapa Pragmatic Web mempunyai akar dari LAP. LAP berkonsentrasi pada konteks dari bahasa / simbol yang digunakan. Jika diterapkan pada aplikasi web yang telah tersedia semantik-nya, maka riset dibidang LAP ini bisa digunakan untuk mendefinisikan konteks dari aplikasi web.&lt;br /&gt;&lt;br /&gt;Masih banyak yang bisa dipelajari dan ditulis berkaitan dengan LAP dan Pragmatic Web. Let's see.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Referensi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 1px;" align="LEFT"&gt;&lt;span style="font-family:TimesNewRoman;"&gt;&lt;span style="font-family:Arial;"&gt;Flores, F., and      Ludlow, J. "Doing and Speaking in the Office," in: &lt;/span&gt;&lt;/span&gt;&lt;i&gt;     &lt;span style="font-family:Arial;"&gt;Decision Support Systems:Issues and Challenges, &lt;/span&gt;     &lt;/i&gt;&lt;span style="font-family:Arial;"&gt;G. Fick and R.H. Sprague (eds.), Pergamon Press, New      York, 1980, pp. 95-118.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Aldo de Moor,  Patterns for the Pragmatic Web, http://growingpains.blogs.com/home/2005/08/patterns_for_th.html.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6405865758808618250-3749670246122421624?l=bpdp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpdp.blogspot.com/feeds/3749670246122421624/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://bpdp.blogspot.com/2009/12/memahami-lap-language-action.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3749670246122421624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6405865758808618250/posts/default/3749670246122421624'/><link rel='alternate' type='text/html' href='http://bpdp.blogspot.com/2009/12/memahami-lap-language-action.html' title='Memahami LAP (Language-Action Perspective) dalam Konteks Pragmatic Web: Pengenalan'/><author><name>Bambang Purnomosidi D. P.</name><uri>https://profiles.google.com/107038072650503552268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-jLEsZah9oXo/AAAAAAAAAAI/AAAAAAAAASY/b_aHH6xw9MA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
