<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Digital Wizard Aspirant</title><link>http://blog.ivanceras.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/VGOj" /><description>A quest for having a tight grip on the seemingly never ceasing universe of Programming</description><language>en</language><managingEditor>noreply@blogger.com (ivanceras)</managingEditor><lastBuildDate>Sun, 27 Nov 2011 15:21:54 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">18</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogspot/vgoj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:subtitle>A quest for having a tight grip on the seemingly never ceasing universe of Programming</itunes:subtitle><item><title>A take on Euclideon's Unlimited Detail Technology Algorithm</title><link>http://blog.ivanceras.com/2011/08/hypothesis-on-euclideons-unlimited.html</link><category>sparse voxel</category><category>euclideon</category><category>bruce dell</category><category>hypothesis</category><category>unlimited detail technology algorithm</category><category>algorithm hypothesis</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Mon, 05 Sep 2011 07:19:27 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-5166534329396923207</guid><description>For those who haven't stumble on Unlimited Detail Technology of Euclideon. See the video below&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/00gAbgBu8R4/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/00gAbgBu8R4&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="400" height="320"  src="http://www.youtube.com/v/00gAbgBu8R4&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The idea behind the technology is to search for points in the data cloud.&lt;br /&gt;
All the points is stored in a data file indexed according to their position in the 3D space, which is unlike the polygon based data file where in x,y,z coordinated is stored in an array.&lt;br /&gt;
&lt;br /&gt;
With this in mind, the indexing used would be integer.&lt;br /&gt;
Let's inclose a 10,000 x 10,000 x 10,000 coordinate. This would contain up to a maximum of 1,000,000,000,000 (1 trillion of atoms ).&lt;br /&gt;
&lt;br /&gt;
While the point cloud data is stored in a disk in the system indexed according to the position, so retrieving a point at a certain X,Y,Z is as simple as using the xyz values as an offset of the datafile or memory address where it is stored.&lt;br /&gt;
&lt;br /&gt;
The basic rendering is to trace 1 ray for each pixel on the screen.&lt;br /&gt;
Each pixel has a different unit vector depending on its position from the screen's center point and the camera position and orientation. A unit vector is computed for each of the pixel on the screen.&lt;br /&gt;
&lt;br /&gt;
The search process is for each pixel on the screen, do an increment &amp;nbsp;for each of these vectors to their unit vector(which will give a rounded-off computed x,y,z coordinate).&lt;br /&gt;
This would be used to see in the data if an atom of that certain XYZ coordinate exist or not. If a point on the cloud data on that certain coordinate did exist, then that XYZ coordinate is marked for that certain pixel on the screen, else when no atom exist on that coordinate it proceeds to increment a unit vector on that certain ray until in finds one atom. (If transparency is considered, the matching atom will then be investigated to see if it is opaque or not, when opaque it stops the search, else depending on the transparency value, it searches for next atom that could haven been lying on that ray vector.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Vector getXYZatIncrement(Vector unit_vector, int increment){
  Vector v = new Vector();
  v.x = unit_vector.x * increment;
  v.y = unit_vector.y * increment;
  v.z = unit_vector.z * increment; 
  return v;
}


tracePixels(){
 for(int u = 0; u &amp;lt; screen.width; u++){
  for(int v = 0; v &amp;lt; screen.height; v++){
    Vector unit_vector = get_unit_vector(u,v);
  }
}


traceUnitVector(vector unit_vector){
 for(int i = 0; i &amp;lt; FAR_PRISM_MAX_ITERATION; i++)
   Vector trace_coordinate = getXYZatIncrement(unit_vector, increment)
    if(hasAtom(trace_coordinate)){
      //Get the detail of this atom at XYZ
    }
}


boolean hasAtom(Vector coordinate){
  //search in the data file
  int offset = get_offset_calculation(coordinate.x, coordinate.y, coordinate.z)
  //read value at offset in the large atom cloud data set
  //has value return true
  //else false    
}

&lt;/pre&gt;&lt;br /&gt;
I have layed my scientific guess on what could have be their algorithm used in Euclideon's technology. These present's a lot of drawback specifically with the dynamic interaction and animation with the 3D world. This is inherent due to the fact that the data is stored in a pre-indexed data file on a disk or in a large memory chunk. Doing such animation would require a full re-indexing of the data stored in the disk. Even with the advent of SSD and huge memory capacity on video cards, moving one atom in the atom cloud data set would require a reindexing, so as to maintain index with respect to 3D point location for each atom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The animation drawback of Euclideon's technology could be efficiently accomplished using "Transformation Map". Transformation map is an array of points containing the transformation of points in the Point Cloud Data. Points in the Point cloud data that are present in the transformation map will be an exclusion of the search on for the ray tracing. Z buffer with respect to the screen of the Point cloud will be compared to the Z buffer of the Transformation map and paint the final image on the screen.&lt;br /&gt;
&lt;br /&gt;
Transformation map is stored in the RAM or in the videoRAM which is faster to access and is not likely that are as much as the point in the overall 3D Point Cloud Data.&lt;br /&gt;
&lt;br /&gt;
The overall 3D point cloud data will be stored in the Hard Disk, which the total number is enormous.&lt;br /&gt;
&lt;br /&gt;
Point arrangement algorithm:&lt;br /&gt;
* arrange the points in such a way the location is the index as well&lt;br /&gt;
* make the usage of storage compressed at efficient size&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-5166534329396923207?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T0_gOLxk55RXnK142Y8SFbXVRzA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T0_gOLxk55RXnK142Y8SFbXVRzA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T0_gOLxk55RXnK142Y8SFbXVRzA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T0_gOLxk55RXnK142Y8SFbXVRzA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-05T07:19:27.659-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure url="http://www.youtube.com/v/00gAbgBu8R4&amp;fs=1&amp;source=uds" length="1157" type="application/x-shockwave-flash" /><media:content url="http://www.youtube.com/v/00gAbgBu8R4&amp;fs=1&amp;source=uds" fileSize="1157" type="application/x-shockwave-flash" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>For those who haven't stumble on Unlimited Detail Technology of Euclideon. See the video below The idea behind the technology is to search for points in the data cloud. All the points is stored in a data file indexed according to their position in the 3D </itunes:subtitle><itunes:author>noreply@blogger.com (ivanceras)</itunes:author><itunes:summary>For those who haven't stumble on Unlimited Detail Technology of Euclideon. See the video below The idea behind the technology is to search for points in the data cloud. All the points is stored in a data file indexed according to their position in the 3D space, which is unlike the polygon based data file where in x,y,z coordinated is stored in an array. With this in mind, the indexing used would be integer. Let's inclose a 10,000 x 10,000 x 10,000 coordinate. This would contain up to a maximum of 1,000,000,000,000 (1 trillion of atoms ). While the point cloud data is stored in a disk in the system indexed according to the position, so retrieving a point at a certain X,Y,Z is as simple as using the xyz values as an offset of the datafile or memory address where it is stored. The basic rendering is to trace 1 ray for each pixel on the screen. Each pixel has a different unit vector depending on its position from the screen's center point and the camera position and orientation. A unit vector is computed for each of the pixel on the screen. The search process is for each pixel on the screen, do an increment &amp;nbsp;for each of these vectors to their unit vector(which will give a rounded-off computed x,y,z coordinate). This would be used to see in the data if an atom of that certain XYZ coordinate exist or not. If a point on the cloud data on that certain coordinate did exist, then that XYZ coordinate is marked for that certain pixel on the screen, else when no atom exist on that coordinate it proceeds to increment a unit vector on that certain ray until in finds one atom. (If transparency is considered, the matching atom will then be investigated to see if it is opaque or not, when opaque it stops the search, else depending on the transparency value, it searches for next atom that could haven been lying on that ray vector. Vector getXYZatIncrement(Vector unit_vector, int increment){ Vector v = new Vector(); v.x = unit_vector.x * increment; v.y = unit_vector.y * increment; v.z = unit_vector.z * increment; return v; } tracePixels(){ for(int u = 0; u &amp;lt; screen.width; u++){ for(int v = 0; v &amp;lt; screen.height; v++){ Vector unit_vector = get_unit_vector(u,v); } } traceUnitVector(vector unit_vector){ for(int i = 0; i &amp;lt; FAR_PRISM_MAX_ITERATION; i++) Vector trace_coordinate = getXYZatIncrement(unit_vector, increment) if(hasAtom(trace_coordinate)){ //Get the detail of this atom at XYZ } } boolean hasAtom(Vector coordinate){ //search in the data file int offset = get_offset_calculation(coordinate.x, coordinate.y, coordinate.z) //read value at offset in the large atom cloud data set //has value return true //else false } I have layed my scientific guess on what could have be their algorithm used in Euclideon's technology. These present's a lot of drawback specifically with the dynamic interaction and animation with the 3D world. This is inherent due to the fact that the data is stored in a pre-indexed data file on a disk or in a large memory chunk. Doing such animation would require a full re-indexing of the data stored in the disk. Even with the advent of SSD and huge memory capacity on video cards, moving one atom in the atom cloud data set would require a reindexing, so as to maintain index with respect to 3D point location for each atom. The animation drawback of Euclideon's technology could be efficiently accomplished using "Transformation Map". Transformation map is an array of points containing the transformation of points in the Point Cloud Data. Points in the Point cloud data that are present in the transformation map will be an exclusion of the search on for the ray tracing. Z buffer with respect to the screen of the Point cloud will be compared to the Z buffer of the Transformation map and paint the final image on the screen. Transformation map is stored in the RAM or in the videoRAM which is faster to access and is not likely that are as much as the point in the overall 3D Point Cloud Data. The overall 3D point cloud data will</itunes:summary><itunes:keywords>sparse voxel, euclideon, bruce dell, hypothesis, unlimited detail technology algorithm, algorithm hypothesis</itunes:keywords></item><item><title>Ivanceras ERP</title><link>http://blog.ivanceras.com/2011/06/ivanceras-erp.html</link><category>openbravo</category><category>about ivanceras</category><category>adempiere</category><category>ERP</category><category>compiere</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Tue, 05 Jul 2011 10:12:06 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-6149716789036712888</guid><description>Ivanceras ERP is an opensource implementation of modern Enterprise Resource Planning based on Adempiere, Compiere, OpenBravo, written by me ivanceras ^_^.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;It uses the combination of current best breed of technologies available today, without leaving behind the support of important legacy features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;BackEnd&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Ivanceras ERP core is totally rewritten, designed in mind that it will support both Rdbms based database( such as PosgtreSQL, Oracle, MySQL and HTML5) &amp;nbsp;and Non-Rdbms database ( primarily Google BigTable which is the backbone of Google App engine, Apache Hive, which built on top of Apache Hadoop/MapReduce framework, which is also based on google research papers ). The table views in Rdbms are dropped since there is no way a view could be replicated to non-Rdbms database.&lt;br /&gt;
&lt;br /&gt;
Ivanceras ERP could be run on tomcat or jetty.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Client Side&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The java swing client is not supported in Ivanceras ERP due to the emergence of better new alternatives such as GWT for browser-based implementation and android for the mobile platform. &amp;nbsp;ZK webui client is also not supported, since Ivanceras ERP is &amp;nbsp;designed in mind to have an offline support for the browser client which will NOT be suitable for ZK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Source Code&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The source code is available at&amp;nbsp;&lt;a href="http://code.google.com/p/ivanceras-erp/"&gt;http://code.google.com/p/ivanceras-erp/&lt;/a&gt;&amp;nbsp;. It is still at a very early stage.&lt;/div&gt;&lt;div&gt;The core Entity Manager is very well usable though, and tested on both, Postgresql and BigTable backend databases. Retrieval of record is very fast, since very basic concepts of database efficient techniques is being used, such as utilization of joins in Rdbms and using google BigTable guidelines. I reset the development history due to sensitive information when setting up a migration from local development to the google app engine servers. Source code size at the moment is 2.5MB, which could reach up 25 MB when we generate all DAO and Business objects on adempiere3.6.0 database dump.&lt;br /&gt;
Documentation is the source code. so this is not for the faint hearted. More or less you have to read the source code, since I have not written much javadocs. I tried my best to create a readable and intuitive Class and method names.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Demo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;There is no available demo to test it yet. I still need server to run it on.&lt;/div&gt;&lt;div&gt;Please let me know if you want me to set-up demo to your servers.&lt;br /&gt;
If you want a demo for yourself, you can check out the code, then run it as a GWT web application.&lt;br /&gt;
Modify the configuration file(appengine/src/com/ivanceras/server/util/Configuration.java), then you will see what it looks like.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The appengine demo as well is also not yet working. Due to import process inconsistency, which I am still heavily working on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Development&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Here are some screenshot of the current state of the development. The GUI is rough since I have been working heavily still with the backend. This will get better as the development is going on.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-11FQaUlHz04/Tf-3bTfth9I/AAAAAAAAAOI/26pItCfqpbA/s1600/ivanceras-erp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/-11FQaUlHz04/Tf-3bTfth9I/AAAAAAAAAOI/26pItCfqpbA/s320/ivanceras-erp.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BosU1J86wF4/Tf-3ckGbF3I/AAAAAAAAAOM/heJa6yDXEqc/s1600/ivanceras-erp-tab.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/-BosU1J86wF4/Tf-3ckGbF3I/AAAAAAAAAOM/heJa6yDXEqc/s320/ivanceras-erp-tab.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Goals of this Project&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;This project is created to be as lightweight as possible.&lt;/li&gt;
&lt;li&gt;Offline support to major browsers which supports html5 data storage.&lt;/li&gt;
&lt;li&gt;Browser based seamless automated replication.&lt;/li&gt;
&lt;li&gt;Modularized design, so as different implementation only contains modules pertaining to it.&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Modules and module dependency (kernel, application dictionary, accounting.. etc)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;How can I help?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;You can help me by testing the very early stage. Plenty of bugs you may encounter. Filing of bugs.&lt;/div&gt;&lt;div&gt;Not a coder? Are you implementing opensource ERP for your clients? Best way you could help is via donation.Donate via paypal: ivanceras[at]gmail.com. &amp;nbsp;Donation will be used for the development of this project.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-6149716789036712888?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JQ8grycNZJJ62N8WzWJS8nGnjes/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JQ8grycNZJJ62N8WzWJS8nGnjes/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JQ8grycNZJJ62N8WzWJS8nGnjes/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JQ8grycNZJJ62N8WzWJS8nGnjes/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-05T10:12:06.344-07:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/-11FQaUlHz04/Tf-3bTfth9I/AAAAAAAAAOI/26pItCfqpbA/s72-c/ivanceras-erp.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>GWT uibinder</title><link>http://blog.ivanceras.com/2011/03/gwt-uibinder.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Tue, 08 Mar 2011 06:56:09 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-8241296883518063650</guid><description>So, GWT designer is integrated into the google plugin for eclipse which hangs-up your CPU when viewing even just the xml view of you ui binders.&lt;br /&gt;
&lt;br /&gt;
Even my core i7 processors takes a lot of time to display something.&lt;br /&gt;
The auto-suggest feature in ui binder xml is horribly slow, better be disabled, but I can not find where the option is. so whenever you wanted to created a ui, you may have to type fast in "g:" and the first letter of you ui field, so you won't be activating the auto-suggest feature.&lt;br /&gt;
&lt;br /&gt;
But beyond all these flaws, GWT still is great!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-8241296883518063650?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XCBOI4a-B-N9_fvJK53rPe1RR5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XCBOI4a-B-N9_fvJK53rPe1RR5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XCBOI4a-B-N9_fvJK53rPe1RR5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XCBOI4a-B-N9_fvJK53rPe1RR5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T06:56:09.739-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Conecting to SMART Using 3G connection</title><link>http://blog.ivanceras.com/2011/02/conecting-to-smart-using-3g-connection.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Mon, 28 Feb 2011 07:04:10 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-3627383022744953634</guid><description>&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 style="font-size: 14pt;"&gt;&lt;b&gt;Connecting to SMART Using 3G&lt;/b&gt;&lt;/h2&gt;&lt;ol style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Turn off 3G first, this is to ensure that no application will be using the internet before you could register an unlimited&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Write a text message to "unli 50" then send to 211&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Do not turn on 3G yet, you will still have to wait a few minutes to receive the confirmation message coming from smart that you are now registered.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Confirmation message received.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Go to&amp;nbsp;&lt;b&gt;Settings&lt;/b&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;b&gt;Wireless &amp;amp; network&lt;/b&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;b&gt;Mobile networks&lt;/b&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;b&gt;Network operators &amp;gt; &amp;nbsp;APN (Acces Point Names)&lt;/b&gt;&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;In "&lt;b&gt;Access Point Name"&lt;/b&gt;&amp;nbsp;put in this following entry:&lt;/li&gt;
&lt;ul style="margin-bottom: 0px; margin-top: 0px;"&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;&amp;nbsp;Name : internet&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;APN : internet&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Proxy : 10.102.61.46&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Port: 8080&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Leave the rest of the settings to default setting&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Menu &amp;gt; Save&lt;/li&gt;
&lt;/ul&gt;&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;To let the phone to use only 3G connection. Download and install&amp;nbsp;&lt;b&gt;Any Cut&lt;/b&gt;&amp;nbsp;Android App in android app market. Any cut will just put short cut on phone info.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Open&amp;nbsp;&lt;b&gt;Any Cut &amp;nbsp;&amp;gt; &amp;nbsp;New shortcut .&lt;/b&gt;&amp;nbsp;Choose&amp;nbsp;&lt;b&gt;Activity&amp;nbsp;&lt;/b&gt;&amp;nbsp;scroll to&amp;nbsp;&lt;b&gt;Phone Info. Phone Info&lt;/b&gt;&amp;nbsp;will then show as a shortcut in you home screen.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Open&amp;nbsp;&lt;b&gt;Phone Info.&lt;/b&gt;&amp;nbsp;Set the preferred network type to :&amp;nbsp;&lt;b&gt;&amp;nbsp;WCDMA only&lt;/b&gt;&amp;nbsp;that is 3G.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Go back to Settings. Turn of you WiFi.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Go to Mobile Network. Check&amp;nbsp;&lt;b&gt;Data enabled&lt;/b&gt;&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Go to APN Access Point Name "internet" should be turned on.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;To share your connection as a WiFi hotspot.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Turn on Poratable WiFi hotspot&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;Change you WiFi hotspot to idenitify your self. or else the default name is AndroidAP.&lt;/li&gt;
&lt;li style="margin-bottom: 0px; margin-top: 0px;"&gt;You wireless devices can now connect to your phone as a hotspot. Indicators will show at the top screen that you are connected to 3G and the blue WiFi indicates that you are thethering a WiFi 3G connection&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-3627383022744953634?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zTntwz8e4Ql7kYx9KPO71vDZeYw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zTntwz8e4Ql7kYx9KPO71vDZeYw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zTntwz8e4Ql7kYx9KPO71vDZeYw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zTntwz8e4Ql7kYx9KPO71vDZeYw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-28T07:04:10.684-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>We are hiring!</title><link>http://blog.ivanceras.com/2011/01/we-are-hiring.html</link><category>hiring</category><category>job</category><category>programmer</category><category>talent</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Sun, 02 Jan 2011 23:30:33 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-2316260120048310494</guid><description>&lt;div class="p1"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZKShlZKTutM/TSFqzODYfwI/AAAAAAAAAMA/bNWRVsCD4pk/s1600/cebu_machine_intelligence_20101210153642_10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ZKShlZKTutM/TSFqzODYfwI/AAAAAAAAAMA/bNWRVsCD4pk/s1600/cebu_machine_intelligence_20101210153642_10.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Be a part of a fast growing Silicon Valley style company in Cebu, where you will build fun and interesting technology and be a part of a team working with real Silicon Valley companies. We are building Internet security and privacy infrastructure as well as video-games and some professional enterprise outsourcing. Part of the your responsibility will be to work on technology projects that we are doing with our partners in California and elsewhere, and the rest will revolve around in-house research and development projects, which include the development of iPhone/iPad video games. These positions may require long hours and hard work. Your job may result in feelings of technological superiority. Serious candidates should be prepared to encounter challenging problems and unexpected opportunities.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p3"&gt;&lt;b&gt;Software Engineer&lt;/b&gt;&lt;/div&gt;&lt;div class="p4"&gt;(Cebu City)&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p5"&gt;&lt;b&gt;Responsibilities:&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div class="p6"&gt;You will be working side by side with seasoned experts in software development. You will learn how Silicon Valley engineers build great products and with time, you will be the seasoned engineer that leads development and incubates new projects.&lt;/div&gt;&lt;div class="p6"&gt;Hour will be flexible, and dress-codes are not enforced (but you should look presentable and bathe).We run a laboratory environment where comfort and harmony are important.&lt;/div&gt;&lt;div class="p5"&gt;&lt;b&gt;Requirements:&lt;/b&gt;&lt;/div&gt;&lt;ul class="ul1"&gt;&lt;li class="li1"&gt;Computer Science degree or equivalent&lt;/li&gt;
&lt;li class="li1"&gt;5+years of experience*developing software professionally&lt;/li&gt;
&lt;li class="li1"&gt;Strong skills in: C (and variants such as C++ and Objectives C), Java, Javascript,Linux,XML (xml-rpc, soap, etc..), SQL (mysql,oracle, etc..), PHP&lt;/li&gt;
&lt;li class="li1"&gt;Some projects may require modifying major open source applications such as Firefox, so work with C and C++ on multiple platforms for Open Source is a big plus.A complete understanding of how Web (client) and enterprise (server) technologies work (Apache, Servlet engines,XML processors,RPC techniques, Database administration, etc..) You must be capable of handling Linux/Unix based machines,configuring and managing them, because you will be using them for development&lt;/li&gt;
&lt;li class="li1"&gt;A strong theoretical understanding of computer science. For example: You should know what O(log n) means. You should know what a graph traversal algorithm is. You should completely understand object oriented software development.&lt;/li&gt;
&lt;li class="li1"&gt;Experience with Software Engineering methodologies, including source code control, regression testing, bugtrack and ticketing systems, development tools such as Eclipse. Visual Studio and XCode, and the ability and willingness to documents your work.&lt;/li&gt;
&lt;li class="li1"&gt;A passion for programming and building great stuff. Computer Science is art, and you must be an artist.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="p1"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p1"&gt;(*Young aggressive and talented computer science graduates with less 5 years of experience are also strongly&amp;nbsp; encouraged to apply. Salary will be subject to adjustment based on experience and skill level.)&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p1"&gt;We will love more if you have:&lt;/div&gt;&lt;div class="p1"&gt;Experience with Oracle, GWT, Javascript, Compiler technologies, Code analysis tools, Cryptography,Network security, advanced mathematics,philosophy and/ or the desire to eat a lot of pizza.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="p1"&gt;Preference are given to those who apply online!&lt;/div&gt;&lt;div class="p1"&gt;Starting salary of 50k / month for strong candidates that meet the stated requirements, after a short training period. Commensurate with experience.&lt;br /&gt;
&lt;br /&gt;
Send your resume to &amp;nbsp;hr[_at_]c-mil.com&lt;br /&gt;
&lt;br /&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/4922513247804505697-2316260120048310494?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pmR9UEBidyMESv6WpxA4axr8j3I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmR9UEBidyMESv6WpxA4axr8j3I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pmR9UEBidyMESv6WpxA4axr8j3I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmR9UEBidyMESv6WpxA4axr8j3I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-02T23:30:33.512-08:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_ZKShlZKTutM/TSFqzODYfwI/AAAAAAAAAMA/bNWRVsCD4pk/s72-c/cebu_machine_intelligence_20101210153642_10.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Application Software Localization for the Philippines</title><link>http://blog.ivanceras.com/2010/11/application-software-localization-for.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Tue, 23 Nov 2010 07:00:08 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-1603922602949680553</guid><description>There have been a lot of language-pack localization of ADempiere from some other country which are non-english speaking such as Mexico, Columbia, Panama, Japanese, Chinese. The good thing about localization is that users could easily understand the user interface labels and text since it is written in their own language.&lt;br /&gt;
&lt;br /&gt;
Now, some may think how come there are no localization for the Philippines. The reason behind it is that if we localized an application software for the philippines, it will be just is just bad. Bad in a sense that there are no exact equivalent terms for both business and technical terms of the application to our language. How many of you prefer to use google in English rather than the localized terms. Maybe for the Tagalog speaking Filipinos on the northern region of the country prefer it as google translation is suited for tagalog, but if you are living in the southern region of the country which speaks bisaya, then I would rather choose English interface than the Filipino localization. Many of visayan people understand more English than Tagalog.&lt;br /&gt;
&lt;br /&gt;
It is a good thing though since because of that we don't need Localization of Application software, so we could use a wide variety of software. Not to mention pirated software ;-). Go opensource philippines! Choose ADempiere as you ERP solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-1603922602949680553?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ckzyWicIOGWmcr65YL5a5gt_GJc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckzyWicIOGWmcr65YL5a5gt_GJc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ckzyWicIOGWmcr65YL5a5gt_GJc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckzyWicIOGWmcr65YL5a5gt_GJc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-23T07:00:08.432-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Adempiere ERP gmail template</title><link>http://blog.ivanceras.com/2010/07/adempiere-erp-gmail-template.html</link><category>look and feel</category><category>theme</category><category>adempiere</category><category>ERP</category><category>template</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Tue, 17 May 2011 03:34:21 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-7220403166442006056</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;Today I modified default adempiere webui theme into using the dekstop gmail theme&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://2.bp.blogspot.com/_ZKShlZKTutM/TDIV8P2tLYI/AAAAAAAAAJQ/IaFoLTcWj9I/s1600/gmailtheme-preview_login.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="512" src="http://2.bp.blogspot.com/_ZKShlZKTutM/TDIV8P2tLYI/AAAAAAAAAJQ/IaFoLTcWj9I/s640/gmailtheme-preview_login.jpg" width="640" /&gt;&lt;/a&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://1.bp.blogspot.com/_ZKShlZKTutM/TDIWmw25agI/AAAAAAAAAJY/xUxpocK2dTk/s1600/gmailtheme-preview_main.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="512" src="http://1.bp.blogspot.com/_ZKShlZKTutM/TDIWmw25agI/AAAAAAAAAJY/xUxpocK2dTk/s640/gmailtheme-preview_main.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&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/_ZKShlZKTutM/TDIXc3qapzI/AAAAAAAAAJg/1tG-ZRFxH0w/s1600/gmailtheme-preview_window.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="512" src="http://2.bp.blogspot.com/_ZKShlZKTutM/TDIXc3qapzI/AAAAAAAAAJg/1tG-ZRFxH0w/s640/gmailtheme-preview_window.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ZKShlZKTutM/TDIZPiap-2I/AAAAAAAAAJw/oXLvGzqYqr8/s1600/gmailtheme-preview_window_multi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="512" src="http://4.bp.blogspot.com/_ZKShlZKTutM/TDIZPiap-2I/AAAAAAAAAJw/oXLvGzqYqr8/s640/gmailtheme-preview_window_multi.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-7220403166442006056?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XZvPEQO-6MKj4cnNFMWsOGuqpBA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XZvPEQO-6MKj4cnNFMWsOGuqpBA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XZvPEQO-6MKj4cnNFMWsOGuqpBA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XZvPEQO-6MKj4cnNFMWsOGuqpBA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T03:34:21.063-07:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_ZKShlZKTutM/TDIV8P2tLYI/AAAAAAAAAJQ/IaFoLTcWj9I/s72-c/gmailtheme-preview_login.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Model Inheritance</title><link>http://blog.ivanceras.com/2009/07/model-inheritance.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Fri, 30 Oct 2009 10:34:09 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-2888443591635976792</guid><description>&lt;div&gt;&lt;div&gt;&lt;br /&gt;This maybe a long-term plan for adempiere.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt; Model Inheritance( Rough Draft )&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lastly, I encountered silverstripe( http://silverstripe.org ), a CMS system developed base on MVC architecture.&lt;br /&gt;&lt;br /&gt;One feature that attracts me is their Model Inheritance in which a certain Table could inherit from another table. The child table created only the columns which maps to properties which are present only in the child table. The child table will log the Parent record ID, which will be used in the contruction of the record as an object.&lt;br /&gt;&lt;br /&gt;See for example we have a table "Persons", we have "Employees" and "Customers", that will be used in General Business Context.&lt;br /&gt;&lt;br /&gt;When in Medical Business context, probably we have 2 tables "Doctors" and "Patient". From here we can graph the model structure, wherein "Person" is the base Model. "Employee" and "Customer" inherits from "Persons". "Doctors" will inherit from "Employee". "Patient" will inherit from "Customer".&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;Below is the illustration:&lt;br /&gt;&lt;br /&gt;Note: Black colored properties are properties of the its Model&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="jc9s" style="text-align: left;"&gt;&lt;br /&gt;&lt;img src="http://docs.google.com/File?id=ddprvkcr_273p97szdhf_b" style="width: 400px; height: 549px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;br /&gt; Model Inheritance&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;A heirarchy of Tables inheritance&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;A structure to which appropriate model can inherit from appropriate parent Model.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Generation of Model should now be similar with developing in Object orientation with Inheritance.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Tables like Employee, Customers will inherit from Business Partner Table.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Doctors will inherit from Employee, while patient will inherit from Customers.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;They are all Business Partners.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Entering of a records in a window will normally not require so much of work, since the inherited table will be viewable from a different window, yet still viewable from the base window which holds the parent Model.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In the figure,&lt;/b&gt; table "Persons" will have columns (Person_ID, Firstname,Lastname, Address). Customer will have columns (Customer_ID, Person_ID, CreditCardNo, Phone).&lt;br /&gt;&lt;br /&gt;Patient will have columns (Patient_ID, Customer_ID, MedicareNo, Allergies).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In "Patient" Window, we generated the fields by traversing to the active fields of the Model Inheritance structure starting from Patient table, Customer then to Person( until the base table ).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Tables in the Model Inheritance Heirarchy&lt;/h3&gt;&lt;div id="wv3r" style="text-align: left;"&gt;Figure showing MED_Person table&lt;br /&gt;&lt;div id="idsq" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 388.505px;" src="http://docs.google.com/File?id=ddprvkcr_285d3h3f7ds_b" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MED_Person is a "base table" (ordinary table such as&lt;br /&gt;those all current adempiere table, before this feature is implemented)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Figure showing MED_Customer inherits from MED_Person&lt;br /&gt;&lt;div id="g3.b" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 388.505px;" src="http://docs.google.com/File?id=ddprvkcr_284hszsx8fd_b" /&gt;&lt;br /&gt;&lt;br /&gt;Figure showing table MED_Patient inherits from MED_Customer&lt;br /&gt;&lt;img style="width: 648px; height: 388.505px;" src="http://docs.google.com/File?id=ddprvkcr_279c923j4fc_b" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The model inheritance will be set in the "Table &amp;amp; Column" with a field "&lt;span style="color: rgb(0, 0, 0); background-color: rgb(255, 0, 0);"&gt;Inherit from&lt;/span&gt;",&lt;br /&gt;the table name will be specified. A record from the Patient window will&lt;br /&gt;be assembled by merging the records on its parent tables. The&lt;br /&gt;updating/saving/new entry of Patient record will involve all the&lt;br /&gt;underlying parent tables in the inheritance heirarchy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;The Columns for each Tables&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="xise" style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;Figure shows the columns for &lt;span style="background-color: rgb(255, 0, 0);"&gt;MED_Person&lt;/span&gt;&lt;br /&gt;&lt;img style="width: 648px; height: 388.505px;" src="http://docs.google.com/File?id=ddprvkcr_288cqm4bcmf_b" /&gt;&lt;br /&gt;&lt;br /&gt;Figure shows &lt;span style="background-color: rgb(255, 153, 0);"&gt;MED_Customer&lt;/span&gt; we have two properties for MED_Customer (CreditCardNo,Phone)&lt;br /&gt;&lt;img style="width: 648px; height: 388.505px;" src="http://docs.google.com/File?id=ddprvkcr_287ccdwwmhd_b" /&gt;&lt;br /&gt;&lt;br /&gt;Columns for &lt;span style="background-color: rgb(255, 255, 0);"&gt;MED_Patient&lt;/span&gt; table,&lt;br /&gt;&lt;img style="width: 648px; height: 388.948px;" src="http://docs.google.com/File?id=ddprvkcr_286w7mtcnfh_b" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Take note of the highlighted columns. These columns are "properties" of Patient.&lt;/li&gt;&lt;li&gt;Note also for MED_Customer_ID, this would serve to provide linkage to the parent record on the parent table MED_Customer&lt;/li&gt;&lt;li&gt;All&lt;br /&gt;the rest column are the 7 required fields. Take note also that each&lt;br /&gt;table has these 7 required fields, in a sense that the values of this&lt;br /&gt;column from the underlying tables on the Model inheritance heirarchy&lt;br /&gt;will override those values, which is intended to be since this&lt;br /&gt;properties pertains to each record and parent tables doesn't&lt;br /&gt;necessarily means that they have same values of their descendant&lt;br /&gt;tables.(Though the opposite may be true, but not on all conditions).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;The Windows&lt;/h3&gt;&lt;br /&gt;Person window:&lt;br /&gt;&lt;br /&gt;&lt;div id="peuk" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 241.615px;" src="http://docs.google.com/File?id=ddprvkcr_291g53b7bhb_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="pww-" style="text-align: left;"&gt;&lt;div id="l47v" style="text-align: left;"&gt;Customer Window:&lt;br /&gt;&lt;div id="l3td" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 293.266px;" src="http://docs.google.com/File?id=ddprvkcr_290cz362rhr_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="nnw." style="text-align: left;"&gt;&lt;br /&gt;Patient window:&lt;br /&gt;&lt;br /&gt;&lt;div id="kezl" style="text-align: left;"&gt;&lt;img style="width: 648px; height: 370.603px;" src="http://docs.google.com/File?id=ddprvkcr_289dtf4swcd_b" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Take notice of the differences and the relations and the fields&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="n0l5" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt; Advantages:&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;We will have the ability to save the data to the underlying table of the inheritance model.&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;We could enter a patient without requiring us to zoom into the BusinessPartner window, yet still the patient name is added as a Business Partner.( *Persons = Business Partner).&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Gives the simplicity to the users of the system to see only the fields that is relevant to the given Model. Example entering a Patient would require only to enter the data that is relevant to a patient, and that would not include "FirstSale" and "Business Partner Group", so "FirstSale" and "Business Partner Group" will be marked as "inactive" and "non-mandatory" in Patient context.&lt;br /&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-2888443591635976792?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gJmHA5yldOr1ZIx_MRW_1gWWI3U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gJmHA5yldOr1ZIx_MRW_1gWWI3U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gJmHA5yldOr1ZIx_MRW_1gWWI3U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gJmHA5yldOr1ZIx_MRW_1gWWI3U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T10:34:09.293-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>My first Commercial Program</title><link>http://blog.ivanceras.com/2009/06/my-first-commercial-program.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Sun, 28 Jun 2009 23:37:42 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-7457288372631686468</guid><description>3 years ago, one of my instructors request me to write a software application for his reviewer center, which would simulate questionnaires in order for his reviewee grasp the review quickly and deeply. I was still a student during that time, and had known only one programming language yet: C. With the help of antique software Tubro C, I started writing the application, and some may observed that the it was a little bit playful and childish. Yeah, it was in DOS, using scrolling, text effects and playing sounds( even though your PC has no speakers ).&lt;br /&gt;&lt;br /&gt;Some other day, I looked at the source code, I still remembered sections what does it does. It was written in a procedural style, since C is not object oriented, and object oriented seems to be to abstract to me that time. The source code reach up to 2500+ and it is even compact(no unnecessary lines and spaces). I admit that the code could still be improve by removing repetitive codes, but it has a history that I had given such effort of re-structuring and reusing functions. During that time, I always had in mind that writing such a simple application seems to be tedious, how much more writing a more complex enterprise application such as an ERP. Now I have realize that burden of writing all your functions are leverage by utilizing proven libraries and frameworks. Though, I have exerted some efforts that would have been leveraged by some other libraries and frameworks using some other programming language, it was worth the fun and experienced. That time I had meticulously observed how the compiler process loops and arrays.&lt;br /&gt;&lt;br /&gt;Over the years, students coming from my school I was studying, enjoyed using the program and has help them a lot. With the correct tandem of the reviewer center and good sets of questionnaires encoded to the program, reviewees passed the National RME(Registered Master Electrician) board examination. In 2007 the 1st to 7th position was occupied by students coming from the reviewer center and my school and uses the Application provided by the reviewer center.&lt;br /&gt;&lt;br /&gt;This year(May 5, 2009), the 1st, 2nd, 5th, 6th and 7th position is still occupied (&lt;a href="http://cvscaft.edu.ph/2009-licensure-examinations/may-2009-registered-master-electrician.html"&gt;http://cvscaft.edu.ph/2009-licensure-examinations/may-2009-registered-master-electrician.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZKShlZKTutM/SkhX2eiG_bI/AAAAAAAAAEU/DtIO0GWIZSE/s1600-h/screenshot.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 226px;" src="http://2.bp.blogspot.com/_ZKShlZKTutM/SkhX2eiG_bI/AAAAAAAAAEU/DtIO0GWIZSE/s400/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5352624750550515122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://codingwhiz.com/images/Question_Simulator_Manual.pdf"&gt;manual&lt;/a&gt; on how to use the application.&lt;br /&gt;One great thing about the application, is that the questionnaires is written as a usual standard questionnaire documents, parse in the program and had the ability to randomize the questions and choices for each question, yet still while retaining the correct answer. Also, the questions are not limited to the distributed samples, you can write your own, following the samples format. You could also edit existing questions. The questionnaire are supposed to be written in XML to provide extensibility, unfortunately, I know nothing about xml 3 years ago.&lt;br /&gt;&lt;br /&gt;Here is a sample of a questionnaire:&lt;br /&gt;&lt;blockquote  style="color: rgb(51, 51, 51);font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;d&gt;&lt;d&gt;&lt;c&gt;&lt;a&gt;&lt;d&gt;&lt;c&gt;&lt;d&gt;&lt;d&gt;1. Electroplating uses a ___________ generator.&lt;br /&gt;     (A) series-wound (B) compound-wound&lt;br /&gt;     (C) shunt-wound   (D) separately-excited&lt;br /&gt;&lt;br /&gt;2. The total opposition to the flow of alternating         current is ______.&lt;br /&gt;     (A) resistance  (B) impedance&lt;br /&gt;     (C) induction    (D) capacitance&lt;br /&gt;&lt;br /&gt;&lt;d&gt;3. 3 phase currents are generally out of phase by         ____ degrees.&lt;br /&gt;      (A) 30  (B) 60  (C) 90  (D) 120&lt;br /&gt;&lt;br /&gt;&lt;c&gt;4. ____ is the ratio of output to input.&lt;br /&gt;     (A) reluctance  (B) cosine&lt;br /&gt;     (C) efficiency  (D) square root&lt;br /&gt;&lt;br /&gt;&lt;/c&gt;&lt;/d&gt;&lt;/d&gt;&lt;/d&gt;&lt;/c&gt;&lt;/d&gt;&lt;/a&gt;&lt;a&gt;5. The voltage produce by electromagnetic induction        is controlled by __.&lt;br /&gt;     (A) the number of lines of flux cut per second&lt;br /&gt;       (B) eddy currents&lt;br /&gt;     (C) the size of the magnet &lt;br /&gt;     (D) the number of turns&lt;br /&gt;&lt;br /&gt;6. Which of the following has the highest dielectric       strength to electrical breakdown?&lt;br /&gt;     (A) thermoplastic  (B) impregnated paper&lt;br /&gt;     (C) rubber               (D) woven cloth&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;a&gt;7. The greatest voltage drop in a circuit will occur       when the ____the current flow through that part of       the circuit.&lt;br /&gt;     (A) greater  (B) slower  (C) faster  (D) lower&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;a&gt;8. ______ results in loss of electrical energy from       the circuit.&lt;br /&gt;   (A) resistance   (B)reluctance&lt;br /&gt;   (C)susceptance   (D)admittance&lt;br /&gt;&lt;br /&gt;&lt;d&gt;9. Soft iron is most suitable for use in a _______.&lt;br /&gt;     (A) natural magnet  (B) permanent magnet&lt;br /&gt;     (C) magneto                (D) temporary magnet&lt;br /&gt;&lt;br /&gt;&lt;c&gt;10.As the temperature increases, the resistance of         most conductors also increases except _______.&lt;br /&gt;     (A) silver  (B) brass  (C) carbon  (D) zinc&lt;/c&gt;&lt;/d&gt;&lt;/a&gt;&lt;/c&gt;&lt;/d&gt;&lt;b&gt;&lt;d&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;a&gt;&lt;d&gt;&lt;c&gt;&lt;br /&gt;&lt;/c&gt;&lt;/d&gt;&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/d&gt;&lt;/b&gt;&lt;/d&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;a&gt;&lt;br /&gt;&lt;br /&gt;If you want a copy of the program, Post your comment down, or contact me: ivanceras[at]gmail[d0t]com.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-7457288372631686468?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DmrEOGZ1QTeL6DqOApy6v8x8A94/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DmrEOGZ1QTeL6DqOApy6v8x8A94/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DmrEOGZ1QTeL6DqOApy6v8x8A94/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DmrEOGZ1QTeL6DqOApy6v8x8A94/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-28T23:37:42.204-07:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_ZKShlZKTutM/SkhX2eiG_bI/AAAAAAAAAEU/DtIO0GWIZSE/s72-c/screenshot.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Let alone Application Dictionary</title><link>http://blog.ivanceras.com/2009/06/let-alone-application-dictionary.html</link><category>Waterworks System</category><category>adempiere</category><category>Application Dictionary</category><category>Municipal Waterworks</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Sun, 28 Jun 2009 08:46:47 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-6105420572372656758</guid><description>Recently, we had a client who needed a software for their Waterworks System. Requirement would be to manage their waterworks services members, processing of water meter readings and their corresponding billing, and the payment for each member's water consumption.&lt;br /&gt;&lt;br /&gt;Using ADempiere as a framework, one thing comes into my mind that using ADempiere alone out of the box will be harder for the waterworks employee in-charge, since all of them are not technical people. The Business partner window alone will be too complex for a waterworks sytem. I decided to create all the possible windows that may be used, and made it very simple by putting only the fields that are applicable to their specification. Using the Application Dictionary, creating the windows are slick and seamless.&lt;br /&gt;&lt;br /&gt;Almost all features of ADempiere's Application Dictionary was utilized in the application. That includes dynamic display logic code, dynamic mandatory logic codes, callouts, Jasperreports and a lot of Column SQL using a single subquery hooked into the main SQL of the Application Dictionary Core PO SQL assembler.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZKShlZKTutM/SkeQJCDY17I/AAAAAAAAAEM/nbAWNZnG0tw/s1600-h/Screenshot.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 298px;" src="http://2.bp.blogspot.com/_ZKShlZKTutM/SkeQJCDY17I/AAAAAAAAAEM/nbAWNZnG0tw/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5352405166997428146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see the &lt;a href="http://codingwhiz.com/images/Waterworks_System_Manual.pdf"&gt;Manual&lt;/a&gt; here, to see how does the application work.&lt;br /&gt;The finished application was deployed after a 3 weeks the work was started. I am planning to organize and release the documentation on how we build it, Hopefully someone would like to pay for my hardwork. Please add your comment at the bottom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-6105420572372656758?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/msnY1frk5hXS_fKjJe-hnDXaZ7g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/msnY1frk5hXS_fKjJe-hnDXaZ7g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/msnY1frk5hXS_fKjJe-hnDXaZ7g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/msnY1frk5hXS_fKjJe-hnDXaZ7g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-28T08:46:47.987-07:00</app:edited><media:thumbnail url="http://2.bp.blogspot.com/_ZKShlZKTutM/SkeQJCDY17I/AAAAAAAAAEM/nbAWNZnG0tw/s72-c/Screenshot.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Playing with inkscape</title><link>http://blog.ivanceras.com/2009/06/playing-with-inkscape.html</link><category>svg</category><category>inkscape</category><category>shiny image</category><category>tux</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Thu, 13 Aug 2009 11:56:16 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-8648565006643325939</guid><description>On May 22, 2009, Jeff Atwood published a new blog entry on &lt;a class="title-link" href="http://www.codinghorror.com/blog/archives/001260.html"&gt;How to Motivate Programmers&lt;/a&gt;. It links to an interesting webcomic &lt;a href="http://www.geekherocomic.com/"&gt;geekherocomic.com&lt;/a&gt;, I find geekhero webcomic interesting, so I read all the strips. Aside from enjoying all the strips, I learned that Salvatore Iovene, author of that webcomic used inkscape as his tool to create the strips. Without any hesitation, I installed inkscape on my Fedora Core 10 Linux seamlessly without problems. I then try to read some tuturials from &lt;a href="http://inkscapetutorials.wordpress.com/"&gt;http://inkscapetu&lt;/a&gt;&lt;a href="http://inkscapetutorials.wordpress.com/"&gt;torials.wordpress.com/&lt;/a&gt;. I then picked-up the &lt;a href="http://vector.tutsplus.com/tutorials/illustration/how-to-create-a-vector-light-bulb-icon-with-inkscape/"&gt;lightbulb tuturial&lt;/a&gt;. At first it get confused using the path tool, but then as I goes on I was able to create the lighbulb tuturial.&lt;br /&gt;
&lt;br /&gt;
Here is my final image:&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_ZKShlZKTutM/SibYMSyVTJI/AAAAAAAAADk/Nnl651A_gI0/s1600-h/lightbulb.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_ZKShlZKTutM/SoRfIyjxpgI/AAAAAAAAAE0/tA7BeTEyz4U/s1600-h/lightbulb+new.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5369521260347893250" src="http://3.bp.blogspot.com/_ZKShlZKTutM/SoRfIyjxpgI/AAAAAAAAAE0/tA7BeTEyz4U/s400/lightbulb+new.png" style="height: 400px; width: 235px;" /&gt;&lt;/a&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;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;and the exploded one:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/_ZKShlZKTutM/SoRhS4TzQgI/AAAAAAAAAFE/GMZSxycl1X4/s1600-h/lightbulb+exploded.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZKShlZKTutM/SoRhS4TzQgI/AAAAAAAAAFE/GMZSxycl1X4/s320/lightbulb+exploded.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Just tonight, before writing this blog, I stumbled upon a linux group in facebook which has the icon of tux(the linux mascot). Looking at the picture, I had already had a different view on how to look at the picture how it was created, which used to be so clueless until I learned inkscape. So I downloaded the picture, then used it as a reference to make my own image using inkscape. I am so happy that I was able to mimic the image. Here is it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;the original image&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_ZKShlZKTutM/SibZjINmv_I/AAAAAAAAADs/-iovF_jLYIE/s1600-h/n13932695724_5629.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5343197205444870130" src="http://3.bp.blogspot.com/_ZKShlZKTutM/SibZjINmv_I/AAAAAAAAADs/-iovF_jLYIE/s400/n13932695724_5629.jpg" style="cursor: pointer; height: 240px; width: 200px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Here is my final output.&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_ZKShlZKTutM/SibZ1PjSg9I/AAAAAAAAAD0/S3bHDTFKVB0/s1600-h/tux.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5343197516652512210" src="http://3.bp.blogspot.com/_ZKShlZKTutM/SibZ1PjSg9I/AAAAAAAAAD0/S3bHDTFKVB0/s400/tux.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 285px;" /&gt;&lt;/a&gt;Just for the record, I disassembled tux's parts to show, that I did really it in inkscape.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;Tux's parts disassembled in blue background:&lt;a href="http://1.bp.blogspot.com/_ZKShlZKTutM/Sibg42YpBJI/AAAAAAAAAEE/QkGTPNc9nF8/s1600-h/tunx_disassembled.png.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5343205275197834386" src="http://1.bp.blogspot.com/_ZKShlZKTutM/Sibg42YpBJI/AAAAAAAAAEE/QkGTPNc9nF8/s400/tunx_disassembled.png.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 336px;" /&gt;&lt;/a&gt;&lt;/div&gt;One thing to note, Creating a seemingly complex, appealing shiny images as we usually see in almost all icons and images nowadays, could just be created using a simple white gradient. Take notice of the semi-transparent, mist-like rounded shapes above. I would make to an underlying shape to look shiny when it is place over the image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-8648565006643325939?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l6xOcx5YB5IzWXABreaUx2myqhs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l6xOcx5YB5IzWXABreaUx2myqhs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l6xOcx5YB5IzWXABreaUx2myqhs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l6xOcx5YB5IzWXABreaUx2myqhs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-13T11:56:16.083-07:00</app:edited><media:thumbnail url="http://3.bp.blogspot.com/_ZKShlZKTutM/SoRfIyjxpgI/AAAAAAAAAE0/tA7BeTEyz4U/s72-c/lightbulb+new.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>GCJ vs JVM Benchmark 2</title><link>http://blog.ivanceras.com/2009/05/gcc-vs-jvm-benchmark-2.html</link><category>postgreSQL benchmark</category><category>gcj benchmark</category><category>GCC vs JVM Benchmark 2</category><category>adempiere benchmark</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Tue, 26 Jan 2010 02:39:19 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-27155008139082614</guid><description>&lt;span style="font-family: inherit;"&gt;Recently I have published a little benchmark on &lt;/span&gt;&lt;a href="http://ivanceras.blogspot.com/2009/04/gcj-vs-jvm-benchmark.html"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;GCJ vs JVM Benchmark&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;, using a very simple code. In this article I will show you my benchmark result with my second benchmark.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I run this test using this Hardware and Software Specification:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;CPU: 2.2 GHz AMD Athlon 64 bit, single core&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;RAM: 2GB-128 MB shared memory&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;OS: Fedora Core 10 Cambridge (2.6.27.5-117.fc10.x86_64)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;ADempiere: ADempiere 342s (though this does not really affects since only the data is used)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;PostgreSQL: Postgresql 8.3.7&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;JVM: jdk1.5.0_18&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;GCJ: 4.3.2 20081105&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I have created 3 benchmark condition:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I google on sample code for postgresql-jdbc and copied the source code from this link:&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://oracle.anilpassi.com/postgres-sample-jdbc-java-code-2.html"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;http://oracle.anilpassi.com/postgres-sample-jdbc-java-code-2.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Pre-requisite: You must have those mentioned above,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;and download an updated postgresql-jdbc &lt;/span&gt;&lt;a href="http://jdbc.postgresql.org/download/postgresql-8.4dev-700.jdbc3.jar"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;http://jdbc.postgresql.org/download/postgresql-8.4dev-700.jdbc3.jar&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I used the jdbc3 since my JVM is 1.5.0&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Condition 1:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Fetch first record from my custom adempiere with 2 records only:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;here is the code:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: inherit;"&gt;//TestDb.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestDb {
public static String getQueueSize() {
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException cnfe) {
System.err.println("Couldn't find driver class:");
System.out.println("Couldn't find driver class:");
cnfe.printStackTrace();
}
System.out.println("Able to locate the jmake a connection.");
Connection postGresConn = null;
try {
postGresConn =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/adempiere342s",
"adempiere", "adempiere");
} catch (SQLException se) {
System.out.println("Couldn't connect: print out a stack trace and exit.");
se.printStackTrace();
System.exit(1);
}

if (postGresConn != null)
System.out.println("Successfully connected to Postgres Database");
else
System.out.println("We should never get here.");

try {
Statement stGetCount = postGresConn.createStatement();
ResultSet rs =
stGetCount.executeQuery("&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;SELECT * FROM adempiere.EDU_Questionnaire&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;");
//ResultSet rs = stGetCount.executeQuery("SELECT SUM(import_count -import_remaining) from  xx_queue_table") ;
rs.next();
System.out.println("1: "+rs.getObject(1));
System.out.println("2: "+rs.getObject(2));
System.out.println("3: "+rs.getObject(3));
System.out.println("4: "+rs.getObject(4));
System.out.println("5: "+rs.getObject(5));
System.out.println("6: "+rs.getObject(6));
System.out.println("7: "+rs.getObject(7));
System.out.println("8: "+rs.getObject(8));
System.out.println("9: "+rs.getObject(9));
System.out.println("10: "+rs.getObject(10));
System.out.println("11: "+rs.getObject(11));
System.out.println("12: "+rs.getObject(12));
return rs.getString(2);
} catch (SQLException e) {
System.out.println("Could not create statement in JDBC");
e.printStackTrace();

}

return "SUCCESS";
}

public static void main(String[] args) {
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;long sTime = System.currentTimeMillis();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
String textString = getQueueSize();
System.out.println("Result is " + textString);
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;long eTime = System.currentTimeMillis();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;System.out.println("Total Execution Time:"+ ( eTime - sTime ) );&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
}
}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;Compiling an Running in JVM:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;compile the code&lt;br /&gt;
$&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;javac TestDb.java&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
Run the code incorporating jdbc to its classpath&lt;br /&gt;
$&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;java -cp postgresql-8.4dev-700.jdbc3.jar:./ TestDb&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;Compiling, Linking and Running in GCJ:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;compile the PostgreSQL jdbc driver&lt;br /&gt;
$&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;gcj -c -g -O postgresql-8.4dev-700.jdbc3.jar&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
This will create the native binary file "postgresql-8.4dev-700.jdbc3.o"&lt;br /&gt;
&lt;br /&gt;
compile the Test&lt;br /&gt;
$&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;gcj -c -g -O TestDb.java&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
This will create the native binay file "TestDb.o"&lt;br /&gt;
&lt;br /&gt;
do the linking&lt;br /&gt;
$&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;gcj --main=TestDb -o TestDb.bin postgresql-8.4dev-700.jdbc3.o &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;TestDb.o&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
This will create the executable file: "TestDb.bin"&lt;br /&gt;
&lt;br /&gt;
execute&lt;br /&gt;
$&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;./TestDb.bin&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;I run the test in a random order, up to 10 times for each with intervals between run, and tabulated the result.&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;and here is the result:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="font-family: inherit;"&gt;Simple Data
#        GCJ     JVM
1        110     352
2        86      386
3        87      387
4        79      290
5        128     329
6        115     378
7        93      483
8        84      609
9        88      349
10       120     368
Averages  99      393.1
&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Condition 2: Querying the AD_Window records, which has(in my case 288 records)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;This is the modified code&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestDb {
public static String getQueueSize() {
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException cnfe) {
System.err.println("Couldn't find driver class:");
System.out.println("Couldn't find driver class:");
cnfe.printStackTrace();
}
System.out.println("Able to locate the jmake a connection.");
Connection postGresConn = null;
try {
postGresConn =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/adempiere342s",
"adempiere", "adempiere");
} catch (SQLException se) {
System.out.println("Couldn't connect: print out a stack trace and exit.");
se.printStackTrace();
System.exit(1);
}

if (postGresConn != null)
System.out.println("Successfully connected to Postgres Database");
else
System.out.println("We should never get here.");

try {
Statement stGetCount = postGresConn.createStatement();
ResultSet rs =
stGetCount.executeQuery("&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;SELECT * FROM adempiere.AD_Window&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;");
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;while(rs.next()){&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
System.out.println("1: "+rs.getObject(1));
System.out.println("2: "+rs.getObject(2));
System.out.println("3: "+rs.getObject(3));
System.out.println("4: "+rs.getObject(4));
System.out.println("5: "+rs.getObject(5));
System.out.println("6: "+rs.getObject(6));
System.out.println("7: "+rs.getObject(7));
System.out.println("8: "+rs.getObject(8));
System.out.println("9: "+rs.getObject(9));
System.out.println("10: "+rs.getObject(10));
System.out.println("11: "+rs.getObject(11));
System.out.println("12: "+rs.getObject(12));
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("13: "+rs.getObject(13));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("14: "+rs.getObject(14));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("15: "+rs.getObject(15));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("16: "+rs.getObject(16));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("17: "+rs.getObject(17));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("18: "+rs.getObject(18));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("19: "+rs.getObject(19));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;     System.out.println("20: "+rs.getObject(20));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
} catch (SQLException e) {
System.out.println("Could not create statement in JDBC");
e.printStackTrace();

}

return "SUCCESS";
}

public static void main(String[] args) {
long sTime = System.currentTimeMillis();
String textString = getQueueSize();
System.out.println("Result is " + textString);
long eTime = System.currentTimeMillis();
System.out.println("Total Execution Time:"+ ( eTime - sTime ) );
}
}&lt;/span&gt;
&lt;/blockquote&gt;
&lt;/pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Here is the result&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="font-family: inherit;"&gt;AD_Window Data&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;#        GCJ    JVM&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;1        527    2262&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;2        486    2474&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;3        500    1774&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;4        660    1943&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;5        515    2178&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;6        486    2413&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;7        520    2261&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;8        510    2164&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;9        554    2091&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;10       656    2295&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;Averages 541.4  2185.5&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Condition 3: Using the AD_Element(System Elements table) which has 2460 records&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;
&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.Connection;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.DriverManager;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.ResultSet;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.SQLException;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;import java.sql.Statement;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;public class TestDb {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;public static String getQueueSize() {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;try {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   Class.forName("org.postgresql.Driver");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;} catch (ClassNotFoundException cnfe) {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.err.println("Couldn't find driver class:");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.out.println("Couldn't find driver class:");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   cnfe.printStackTrace();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;System.out.println("Able to locate the jmake a connection.");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;Connection postGresConn = null;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;try {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   postGresConn =&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;           DriverManager.getConnection("jdbc:postgresql://localhost:5432/adempiere342s",&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;                                       "adempiere", "adempiere");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;} catch (SQLException se) {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.out.println("Couldn't connect: print out a stack trace and exit.");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   se.printStackTrace();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.exit(1);&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;

&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;if (postGresConn != null)&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.out.println("Successfully connected to Postgres Database");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;else&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.out.println("We should never get here.");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;

&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;try {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   Statement stGetCount = postGresConn.createStatement();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   ResultSet rs =&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;  stGetCount.executeQuery("&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;SELECT * FROM adempiere.AD_Element&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   while(rs.next()){&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("1: "+rs.getObject(1));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("2: "+rs.getObject(2));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("3: "+rs.getObject(3));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("4: "+rs.getObject(4));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("5: "+rs.getObject(5));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("6: "+rs.getObject(6));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("7: "+rs.getObject(7));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("8: "+rs.getObject(8));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("9: "+rs.getObject(9));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("10: "+rs.getObject(10));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("11: "+rs.getObject(11));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("12: "+rs.getObject(12));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("13: "+rs.getObject(13));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("14: "+rs.getObject(14));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("15: "+rs.getObject(15));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("16: "+rs.getObject(16));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("17: "+rs.getObject(17));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       System.out.println("18: "+rs.getObject(18));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       //System.out.println("19: "+rs.getObject(19));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;       //System.out.println("20: "+rs.getObject(20));&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   }&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;} catch (SQLException e) {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   System.out.println("Could not create statement in JDBC");&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;   e.printStackTrace();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;

&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;

&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;return "SUCCESS";&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;

&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;public static void main(String[] args) {&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;long sTime = System.currentTimeMillis();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;String textString = getQueueSize();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;System.out.println("Result is " + textString);&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;long eTime = System.currentTimeMillis();&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;System.out.println("Total Execution Time:"+ ( eTime - sTime ) );&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;
&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;
&lt;/blockquote&gt;
&lt;/pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Here is the result:&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;AD_Element
#         GCJ      JVM
1         4141      13388
2         4014      10046
3         6600      10425
4         3718      10221
5         5154      9989
6         4099      13609
7         5455      10403
8         4592      13559
9         5862      9993
10        3383      14155
Averages   4701.8    11578.8&lt;/span&gt;
&lt;/blockquote&gt;
&lt;/pre&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;Conclusion:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;The GCJ showed that it takes only a quarter of the total execution that would have been ellapsed using the standard JVM. This goes that the compiled bytecode into native code greatly improve performance.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;What advantage does it bring to ADempiere?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;For the swing client, it is still not possible, since(though im not sure) the GCJ community is still in the process of supporting swing.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;For the ADempiere application server deployment, There could be a great possibility that the ADempiere server deployment could boost the performance using GCJ. For now, I am not certain if I could compile the ADempiere's Supported Application Server such as JBoss and Glassfish. I have no idea(..yet) either on the invocation of classes from an Application Server to its hosted application whether GCJ could handle it. For now, I am just showing anyone of the possibilities.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;Why need to compile?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Simple answer is for boosting performance.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: inherit;"&gt;How about platform-independence advantage?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Actually, this is not an issue for web servers, anyway almost all web servers run the same set of Operating System. Linux! yes. I love it ;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-27155008139082614?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oLhJV5woIrp5W7YR4cffPSt0Bng/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oLhJV5woIrp5W7YR4cffPSt0Bng/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oLhJV5woIrp5W7YR4cffPSt0Bng/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oLhJV5woIrp5W7YR4cffPSt0Bng/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-26T02:39:19.544-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><enclosure url="http://jdbc.postgresql.org/download/postgresql-8.4dev-700.jdbc3.jar" length="449776" type="application/octet-stream" /><media:content url="http://jdbc.postgresql.org/download/postgresql-8.4dev-700.jdbc3.jar" fileSize="449776" type="application/octet-stream" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Recently I have published a little benchmark on GCJ vs JVM Benchmark, using a very simple code. In this article I will show you my benchmark result with my second benchmark. I run this test using this Hardware and Software Specification: CPU: 2.2 GHz AMD </itunes:subtitle><itunes:author>noreply@blogger.com (ivanceras)</itunes:author><itunes:summary>Recently I have published a little benchmark on GCJ vs JVM Benchmark, using a very simple code. In this article I will show you my benchmark result with my second benchmark. I run this test using this Hardware and Software Specification: CPU: 2.2 GHz AMD Athlon 64 bit, single core RAM: 2GB-128 MB shared memory OS: Fedora Core 10 Cambridge (2.6.27.5-117.fc10.x86_64) ADempiere: ADempiere 342s (though this does not really affects since only the data is used) PostgreSQL: Postgresql 8.3.7 JVM: jdk1.5.0_18 GCJ: 4.3.2 20081105 I have created 3 benchmark condition: I google on sample code for postgresql-jdbc and copied the source code from this link: http://oracle.anilpassi.com/postgres-sample-jdbc-java-code-2.html Pre-requisite: You must have those mentioned above, and download an updated postgresql-jdbc http://jdbc.postgresql.org/download/postgresql-8.4dev-700.jdbc3.jar I used the jdbc3 since my JVM is 1.5.0 Condition 1: Fetch first record from my custom adempiere with 2 records only: here is the code: //TestDb.java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestDb { public static String getQueueSize() { try { Class.forName("org.postgresql.Driver"); } catch (ClassNotFoundException cnfe) { System.err.println("Couldn't find driver class:"); System.out.println("Couldn't find driver class:"); cnfe.printStackTrace(); } System.out.println("Able to locate the jmake a connection."); Connection postGresConn = null; try { postGresConn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/adempiere342s", "adempiere", "adempiere"); } catch (SQLException se) { System.out.println("Couldn't connect: print out a stack trace and exit."); se.printStackTrace(); System.exit(1); } if (postGresConn != null) System.out.println("Successfully connected to Postgres Database"); else System.out.println("We should never get here."); try { Statement stGetCount = postGresConn.createStatement(); ResultSet rs = stGetCount.executeQuery("SELECT * FROM adempiere.EDU_Questionnaire"); //ResultSet rs = stGetCount.executeQuery("SELECT SUM(import_count -import_remaining) from xx_queue_table") ; rs.next(); System.out.println("1: "+rs.getObject(1)); System.out.println("2: "+rs.getObject(2)); System.out.println("3: "+rs.getObject(3)); System.out.println("4: "+rs.getObject(4)); System.out.println("5: "+rs.getObject(5)); System.out.println("6: "+rs.getObject(6)); System.out.println("7: "+rs.getObject(7)); System.out.println("8: "+rs.getObject(8)); System.out.println("9: "+rs.getObject(9)); System.out.println("10: "+rs.getObject(10)); System.out.println("11: "+rs.getObject(11)); System.out.println("12: "+rs.getObject(12)); return rs.getString(2); } catch (SQLException e) { System.out.println("Could not create statement in JDBC"); e.printStackTrace(); } return "SUCCESS"; } public static void main(String[] args) { long sTime = System.currentTimeMillis(); String textString = getQueueSize(); System.out.println("Result is " + textString); long eTime = System.currentTimeMillis(); System.out.println("Total Execution Time:"+ ( eTime - sTime ) ); } } Compiling an Running in JVM: compile the code $javac TestDb.java Run the code incorporating jdbc to its classpath $java -cp postgresql-8.4dev-700.jdbc3.jar:./ TestDb Compiling, Linking and Running in GCJ: compile the PostgreSQL jdbc driver $gcj -c -g -O postgresql-8.4dev-700.jdbc3.jar This will create the native binary file "postgresql-8.4dev-700.jdbc3.o" compile the Test $ gcj -c -g -O TestDb.java This will create the native binay file "TestDb.o" do the linking $ gcj --main=TestDb -o TestDb.bin postgresql-8.4dev-700.jdbc3.o TestDb.o This will create the executable file: "TestDb.bin" execute $ ./TestDb.bin I run the test in a random order, up to 10 times for each with intervals between run, and tabulated the result. and here is the result: Simple Data # GCJ JVM 1 110 352 2 86 386 3 87 387 4 79 290 5 128 329 6 115 378 7 9</itunes:summary><itunes:keywords>postgreSQL benchmark, gcj benchmark, GCC vs JVM Benchmark 2, adempiere benchmark</itunes:keywords></item><item><title>GCJ vs JVM Benchmark</title><link>http://blog.ivanceras.com/2009/04/gcj-vs-jvm-benchmark.html</link><category>java</category><category>gcc vs java</category><category>GNU java compiler</category><category>gcj vs jdk</category><category>gcj benchmark</category><category>gcj</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Wed, 20 May 2009 08:28:38 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-6481044011317432140</guid><description>GCJ is a GNU compiler for the java language while JVM is sun's genuine JVM&lt;br /&gt;&lt;br /&gt;This is just a simple Benchmark comparing sun's JVM and GNU Java Compiler in terms of execution speed.&lt;br /&gt;&lt;br /&gt;Here is a code that I tested, it will just determine the execution time in 10,000 loops of printing the text "Little Benchmark".&lt;br /&gt;&lt;br /&gt;&lt;blockquote  style="color: rgb(0, 153, 0);font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//File: Test.java&lt;br /&gt;class Test{&lt;br /&gt; public static void main (String[] args){&lt;br /&gt;     long sTime = System.currentTimeMillis();&lt;br /&gt;     for(int i = 0; i &lt; 10000; i++ ){&lt;br /&gt;        System.out.println("Little Benchmark");&lt;br /&gt;     }&lt;br /&gt;     long eTime = System.currentTimeMillis();&lt;br /&gt;     System.out.println("Ellapsed time:"+ (eTime - sTime) );&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Specification:&lt;/span&gt;&lt;br /&gt;CPU: AMD 64 bit Athlon 2.2 GHZ.&lt;br /&gt;RAM: 2GB-128 MB shared memory&lt;br /&gt;OS: Linux Fedora Core 10  x86_64 (2.6.27.5-117)&lt;br /&gt;JVM: jdk1.6.0_13-b03&lt;br /&gt;GCJ: GCJ (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Running in JVM&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: arial; color: rgb(51, 204, 0);"&gt;$javac Test.java&lt;br /&gt;$java Test&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Running in GCJ&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;$gcj -c -g -O Test.java&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;$gcj --main=Test -o Test.bin Test.o&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;$./Test.bin&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;The Results vary from one execution to another, I just get the average execution of both and here is the results:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Result&lt;/span&gt;: (Average Execution Time)&lt;br /&gt;&lt;br /&gt;GCJ compiled:  &lt;span style="color: rgb(51, 204, 0);"&gt;345 ms&lt;/span&gt;&lt;br /&gt;JVM:                  &lt;span style="color: rgb(51, 204, 0);"&gt;867 ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion:&lt;/span&gt;&lt;br /&gt;The difference of the execution time is: &lt;span style="color: rgb(51, 204, 0);"&gt;522ms&lt;/span&gt;, and that is the GCJ compiled binary could still execute once more with that split second difference and still has time left to execute half of the loop.&lt;br /&gt;The JVM has and execution time is 2.51 times of the GCJ compiled binaries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-6481044011317432140?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i2rr_gd4EA7pZBAO2kNfkFRwMhI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i2rr_gd4EA7pZBAO2kNfkFRwMhI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i2rr_gd4EA7pZBAO2kNfkFRwMhI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i2rr_gd4EA7pZBAO2kNfkFRwMhI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-20T08:28:38.141-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Installing flash player on Firefox for 64 bit Fedora Core 10 Linux</title><link>http://blog.ivanceras.com/2009/04/installing-flash-player-on-firefox-for.html</link><category>flash player</category><category>Linux</category><category>firefox plugin</category><category>64 bit</category><category>adobe</category><category>x86_64</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Sun, 05 Apr 2009 22:45:18 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-1818988975409131824</guid><description>Installing Adobe flash player on Firefox for 64 bit Fedora Core 10 x86_64 using the standard standard "Install missing plugin" just don't work, so with the installation when visiting the adobe download site(&lt;a href="http://www.adobe.com/go/getflashplayer"&gt;http://www.adobe.com/go/getflashplayer&lt;/a&gt;) also don't work even if you selected the right operating system.&lt;br /&gt;&lt;br /&gt;I am using a 64 bit AMD processor( in which case, this also works with Intel 64bit processors such as Core 2 duo ), with Fedora Core 10 x86_64 installed on my PC. I had a hard time trying to install adobe flash player, but for the sake of going to the point directly follow this instruction.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download this file from adobe website &lt;a title="http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz" href="http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz" id="rry7"&gt;http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz&lt;/a&gt; (3.56 MB)&lt;/li&gt;&lt;li&gt;Extract the file, it should have libflashplayer.so&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Be root and then copy libflashplayer.so to /usr/lib64/mozilla/plugins/libflashplayer.so&lt;/li&gt;&lt;li&gt;Restart firefox, the try to open a site which contain flash files ( Oh yes, &lt;a href="http://www.youtube.com"&gt;http://www.youtube.com&lt;/a&gt; ).&lt;/li&gt;&lt;/ul&gt;Enjoy watching embedded movies yo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-1818988975409131824?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yC-YNfoVzQ5nPFP5Tlvl2clVU1E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yC-YNfoVzQ5nPFP5Tlvl2clVU1E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yC-YNfoVzQ5nPFP5Tlvl2clVU1E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yC-YNfoVzQ5nPFP5Tlvl2clVU1E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-05T22:45:18.132-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>So You Want to Be a Developer</title><link>http://blog.ivanceras.com/2009/03/i-want-to-be-web-developer.html</link><author>noreply@blogger.com (ivanceras)</author><pubDate>Fri, 06 Mar 2009 19:39:05 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-2938347912089982416</guid><description>&lt;div&gt;"&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 153, 102);"&gt;I want to be a web developer..... because job demands nowadays are centered to web development&lt;/span&gt;&lt;/span&gt;" --that may be the word of anyone who has just graduated from an IT course.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Web development industry is HOT, and is getting Hotter every day. Well, there should be reasons why.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;What should you have in order to be a full pledge web developer? Specifically I mean, "What are the programming languages should you be skilled of ?",  What are the tools I need to be familiarize with in order to be fit as a web developer. To answer the question, I will mention some programming languages and tools I know, that is involved in web development and classify them.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;List of programming languages and tools involved in web development&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; C&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;lient side programming languages:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;HTML - every web developer should know HTML/XHTML to the fullest extent they could&lt;/li&gt;&lt;li&gt;Javascript&lt;/li&gt;&lt;li&gt;CSS&lt;/li&gt;&lt;li&gt;Ajax - not really a programming language, more of a creative technique&lt;/li&gt;&lt;li&gt;Flash/Actionscript&lt;/li&gt;&lt;/ol&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; S&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;erver side programming languages:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;PHP &lt;/li&gt;&lt;li&gt;JAVA/JSP&lt;/li&gt;&lt;li&gt;ASP/.NET&lt;/li&gt;&lt;li&gt;C#&lt;/li&gt;&lt;li&gt;C++&lt;/li&gt;&lt;li&gt;Ruby&lt;/li&gt;&lt;li&gt;Python&lt;/li&gt;&lt;li&gt;Rails&lt;/li&gt;&lt;li&gt;Perl&lt;/li&gt;&lt;li&gt;Coldfusion&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Database servers:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;MySQL&lt;/li&gt;&lt;li&gt;PostgreSQL&lt;/li&gt;&lt;li&gt;Oracle&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; W&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;eb development tools:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Eclipse&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dreamweaver&lt;/li&gt;&lt;li&gt;Adobe PhotoShop&lt;/li&gt;&lt;li&gt;Adobe Flash&lt;/li&gt;&lt;li&gt;FTP client  - FileZilla is a good one&lt;/li&gt;&lt;li&gt;SVN (version control)&lt;/li&gt;&lt;li&gt;xampp&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Testing Frameworks&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;PHP unit&lt;/li&gt;&lt;li&gt;jUnit&lt;/li&gt;&lt;li&gt;xUnit family&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;That's it!.. ("&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;huh! all of those.. &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001172.html" title="Programming Is Hard, Let's Go Shopping!"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;okay lets go shopping...&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;")&lt;/div&gt;&lt;div&gt;Hey wait, I didn't tell you that you need to have all of those. Im just listing it so we could pick some from it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Learn the basic client side programming languages&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HTML( well formed HTML) is the basic requirement, every aspiring web developer should have.&lt;/div&gt;&lt;div&gt;HTML/CSS/Javascript/Ajax  - is closely binded to each other, so when you try learning HTML, your itched is triggered to learn CSS, then the itch goes itcher again, and you would want to learn Javascript, afterwards Ajax follows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;I have learned and practiced all those four already!, Could I start making professional looking web pages already?&lt;/span&gt;&lt;/span&gt; ". Sure!, you could even skip javascript and Ajax, for you to create nice looking web pages, using your skill in playing around with good color combination. "&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;So why bother learning the server side programming languages then?&lt;/span&gt;&lt;/span&gt;" Well, if you are only writing contents that requires not to be changed, or no reason for changing it -- that is okay, otherwise you should be able to learn one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Learn one of the Server side programming language&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first part(client sides) is the presentation. The real content comes from the server and is processed by the server side programming language. I strongly recommend newbies  to pick PHP. The language is very much easier to learn, nicely documented with simplicity and good examples. You can start playing with print commands and experiment as much as you could. then try learning some of the functions by visiting the &lt;a href="http://www.blogger.com/php.net"&gt;site.&lt;/a&gt; Accelerate as fast as you could by copy-pasting the examples and experiment them as much as you wanted. As you will move forward, you will figure it out the relation between your server side programs and you client side codes, and a flooding possibilties will fill up your mind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a lot of other server side programming languages to choose from, and each has its own weakness and strenghts, in fact I have tabulated some of these  &lt;a href="http://ivanceras.blogspot.com/2009/03/my-own-views-of-progamming-languages.html" title="My own views of Progamming Languages advantages/disadvantages"&gt;advantages/disadvantages&lt;/a&gt; of prominent and dominant programming languages for the web. Depending on your needs, you have to balance power and flexibilty.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Learn one of the database server&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;For whatever web application you are developing, you will and you should be needing a database to organize the contents for you. I highly recommend MySQL. Don't be tempted to use file system as a storage of your data, just because file system is a lot faster than database servers. Or if you are stupid enough to insist that you could stored your data in a file, serializing those objects, then insist "&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;I could retrieve them back using the keys, and relate to other data using their respective keys&lt;/span&gt;&lt;/span&gt;". Allright, How about If I wanted to send emails to the subscribing visitors of our site, and those only that specifies themselves to have "big boobs and fat ass"? How you gonna do it? will you be righting a search algorithm for it( huh?). Code nightmare isn't it?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You should begin learning basic sql syntax, and using them into your code. If you are using MySQL, then it will follow that you will be using the PhpMyAdmin web interface, to administer your database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Learn the required tools&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While you are developing web applications, you may feel the need to get some tools to hasten up your web development. These tools come in handy, especially removing redundant steps when you are developing you web applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First and foremost you should have an editor. For those who has just started, or had been miserably using windows notepad. I recommend using &lt;a href="http://sourceforge.net/projects/notepad-plus/" title="Notepad++ in sourceforge"&gt;Notepad++&lt;/a&gt;, a general, full featured code editor which loads faster and gets you editing the multiple source files right away without waiting for longer loading time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you in deeper adherence to your programming career( shall I call it career now? ). You will want more, more advanced, more specific tools for the language you are choosing. Great chance you will love eclipse, eclipse is an enterprise class standard Intergrated Development Environment (IDE) which provides you a complete set of features you need for your web developement process. Other derivatives of eclipse includes Zend IDE which is purposely conceived to be more specific to PHP. You may also want Dreamweaver to quickly create/modify your templates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Photoshop is intended for graphic designers, who would always work in hand with the developers. But often times, you may need to do basic functionalities of the software such as enchancing and optimizing images, cropping, resizing and not the least slicing. You should be able to learn how to slice  - already made templates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;When you have acquired the basics( enough to get your engine running ) of those programming languages and tools I have walk you through. Then surely you will have a chance of getting projects for you to work on. As you are working, you will notice that you will be getting better and better much more if you really love what you are doing.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometimes you will need to transfer multiples files from your local development environment to your production servers, so you will be in need of ftp client software. I have given filezilla as a good one ( though I haven't tried any other :) ). Using filezilla is as slick.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Accumulating Add-ons&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is really a big advantage to have an experience using frameworks. You may want to learn one or two of it, if you have a lot of time. Some others, are urge to get projects already ( I mean projects as jobs to do, whether you are working for a company, or a freelancer ).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When working on certain projects, mostly you will get projects that doesn't have to be build from scratch. You will often get instructed to modify some parts of the web applications or add some new features of an existing one. Challenges may you have encountered on your way. As you go along, you will often discover frameworks that the existing one is using.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You should wisely have to balance your time so that you will be "learning frameworks on demand". Learn it just when it is needed. Don't be afraid you can not do it, since certainly you could use existing codes as a basis of your code, and often times you will only want basic knowledge of one or two modules from the framework, therefore you wouldn't have to learn all at once, then as usual everything else follows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Learning more&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Everyday is a learning and as you go advanced, you begin to do big projects and collaborate with some other people ( your team ),then  a need for a version control arise. SVN comes in when speaking of version control.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Though I have just used testing frameworks a little and only for curiosity( since  because, it's a QA thing ) , they will be very useful to quickly identify what has been gone wrong that was previously working from the last version. It is handy right?, rather than after you have made changes, you will then manually try to look for all the application features if nothing seems to be going wrong.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Flash? oh yeah! Rich contents. Though I dyingly love animation, I have tried to make discipline not to use flash contents on sites as possible. use javascript instead! ( "Ows? excuses!, or maybe you are just not experienced in flash"). Ahehe. yeah, really im not experienced in flash nor have tried learning it on demand, but I have tried looking at actionscripts and run simple apps in flex, still I haven't gathered enough confidence for it. Maybe a later time.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-2938347912089982416?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4scYZZxXeMZXKFOhNT0NIdt3D58/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4scYZZxXeMZXKFOhNT0NIdt3D58/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4scYZZxXeMZXKFOhNT0NIdt3D58/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4scYZZxXeMZXKFOhNT0NIdt3D58/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-06T19:39:05.373-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>My own views of Progamming Languages advantages/disadvantages</title><link>http://blog.ivanceras.com/2009/03/my-own-views-of-progamming-languages.html</link><category>Programming languages advantages/disadvantages</category><category>best programming language</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Fri, 06 Mar 2009 09:19:06 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-1433116757681639681</guid><description>&lt;div&gt;&lt;div&gt;As a wannabe hardcore programmer, there will be a lot of times when you think and doubt about the current programming language you are well versed, no matter how much you love the language. There are times when you will try to figure out how will it be if I am well versed in this language, or what a great application I could have created if I am well versed in this language or that. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you begin to think of these things, you may have started out with this words&lt;/div&gt;&lt;div&gt; "that language is really very efficient in terms to these", pointing out the advantages of these languages.&lt;/div&gt;&lt;div&gt;After several thoughts of ponder, you will begun to point out its disadvantages, and compare them together, usually against or in favor of you current programming language. You may have come up into a conclusion that another language has more advantage than other, or you will admire yourself that your programming language is advantageous.&lt;/div&gt;&lt;div&gt;Several times it may happen again, think and ponder again, then draw a conclusion out of it, and you may have noticed and realized that the conclusion you have created has already been created from your previous muni-muni (pondering).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order for me avoid that syndrome( is that a syndrome?). I have decided to tabulate this things via blog, so others could criticize, in such a way I could improve my views.&lt;/div&gt;&lt;div&gt;So here they are my own views of Programming Languages advantages and disadvantages.&lt;/div&gt;&lt;div&gt;I will tackle only of the programming languages that I have tasted( though a little ) .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Advantages of C++&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; Extremely fast&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Codes are hidden automatically to the end user for your commercial versions.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Disadvantages of C++&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; Nightmares of Pointers - I am easily confused in pointers ( You could do programs in C/C++ without using pointers, but I guess it is not the right thing in there)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Compilation extra work&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Lesser known libraries&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Compilation of code whenever there is changes&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Advantages of PHP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; No Compilation needed - just paste your codes then run it!, that's it!&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Object Oriented concepts is PHP 5 - though I have just started learning object orientation using java documents ;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; APC will be packed in PHP 6 - it will be more efficient and optimized&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Disadvantages of PHP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; Not as fast as C++ - but definitely faster than java&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Libraries are written in C and a little bit dirty - it doesn't matter&lt;br /&gt;&lt;/li&gt;&lt;li&gt; There is a little known great applications build in PHP - if ever there is, that probably is build using procedural programming. (am I an OO purist?, well I love OO )&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Advanatages of JAVA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; Codes are automatically hidden to your user - for your commercial versions&lt;br /&gt;&lt;/li&gt;&lt;li&gt; A lot of great softwares is build in java.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; ADempiere is in JAVA - whoa! I really loved ADempiere and the community behind it! ( I am planning to build one in PHP --&gt; too ambitious? )&lt;br /&gt;&lt;/li&gt;&lt;li&gt; ZK is in Java - Zk is used in ADempiere for its front-end&lt;br /&gt;&lt;/li&gt;&lt;li&gt; There has been discipline and standards on coding the language - therefore libraries you used follows the standard coding of java and therefore uniformity of code structures is all throughout.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Disadvantages of JAVA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt; Slower Code Execution - But could be easily recovered using fast machines&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Application server deployment is a headache for non-advanced user&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Compilation is needed for every change you have made&lt;br /&gt;&lt;/li&gt;&lt;li&gt; I am not well vered in Java as in PHP&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that's it for now, I may have included PowerBuilder, since I have built and edited enterprise applications using it, but I think It does not belongs here since I am more of a building web applications than desktop applications, (what about C++? well, C++ is not behind in web application programming &lt;a href="http://www.webtoolkit.eu/wt"&gt;WT&lt;/a&gt; is one of them, though this project is still young I've seen the extreme goals of the project).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Conclusion:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I may have wrong views and ideas of what I had presented here, but I would rather not spend a lot of time going deeper into these programming languages, before I could select which of those languages I would be putting my focus. For now, I am contented with my programming language PHP, not to be biased I pushing myself to learn more on Java, it is such that from what I have seen, PHP is a lot simpler to learn and expand your skills than other programming languages.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-1433116757681639681?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ls49e0hmxswZEVTEZYYiWfsK3TM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ls49e0hmxswZEVTEZYYiWfsK3TM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ls49e0hmxswZEVTEZYYiWfsK3TM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ls49e0hmxswZEVTEZYYiWfsK3TM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-06T09:19:06.764-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>on ADempiere</title><link>http://blog.ivanceras.com/2009/03/on-adempiere.html</link><category>adempiere</category><category>ERP</category><category>open source software</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Mon, 05 Jul 2010 18:30:19 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-4745023569704343463</guid><description>&lt;h5&gt;I am planning to post contents about ADempiere, but for now Im pasting my Adempiere wiki user's page&lt;br /&gt;
&lt;/h5&gt;&lt;h5 style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;ADempiere&lt;/span&gt; in an Open Source ERP, which is a fork of compiere&lt;br /&gt;
&lt;/h5&gt;&lt;h5 style="font-weight: normal;"&gt;Loved about ADempiere&lt;/h5&gt;&lt;ol&gt;&lt;li&gt;Extreme flexibility - "Configure me your way, and I will behave just as you wanted" &lt;/li&gt;
&lt;li&gt;Intuitive, Uniformed and Attractive Design - Dumb users dont have to be instructed over and over again. &lt;/li&gt;
&lt;li&gt;Easy to hack-around - Everything is organized disciplinely. &lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="" name="Programming_journey:"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h5&gt;Programming journey:&lt;/h5&gt;Almost all of my college projects were made out of C, since C is main  subject of programming.  I was an extremist programmer of C, but later on, I find it very tiresome  to program (even minor) functionalities. &lt;br /&gt;
When I had a chance to undergone an OJT to a software establishment.  PHP was their main dish, tied-up with MySQL. I quickly learned PHP since I look at it  as if it is C(humbly, very easy indeed). Later, together with  my teammates, we were able to build our dynamic &lt;a class="external text" href="http://www.cvscaft-tcc.edu.ph/index.php" rel="nofollow" title="http://www.cvscaft-tcc.edu.ph/index.php"&gt;school website&lt;/a&gt; using our  spare time during school days and completed the site in a span of 1 month. &lt;br /&gt;
When I was hired as an in-house developer of a Manufacturing firm, I was  trained with PowerBuilder. I found PowerBuilder to be extremely fast, robust and  suitable for (RAD)rapid application development indeed, much more since they tied it  up with Oracle 10g. I enjoyed using toad (excellent), but I found PowerBuilder inflexible.  You can't just have what you wanted. You have to adjust to the program, and if you won't, you  have to go several wasteful time creating your own set controls. Also it lacks inconsistency.  Along with the training we are modifying the existing system, SFC(Shop Floor Control). OMG, I find it  very badly designed, much more it has a corporate core library with no supplied source code. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="" name="How_did_I_encountered_ADempiere.3F"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h5&gt;How did I encountered ADempiere?&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Short Answer: "It is just a matter of keyword" - ERP &lt;/li&gt;
&lt;li&gt;Long Answer: &lt;/li&gt;
&lt;/ul&gt;Back February 2008, I was googling for an application which will be suitable for business application,which has a requirement of a web interface. It is just a matter of keyword really. I used SugarCRM as the basis(I've encountered of SugarCRM on my OJT days, since it was used in the establishment).I tried googling for SFC, CRM... then came related keywords such as SCM, MRP, and "ERP". I tried ERP, Opensource ERP,etc until.... guess what... Compiere appeared to be prominent, with other rivals...Opentaps,OpenBravo,TinyERP,Value-ERP,TinyERP,ERP5, etc. (ADempiere didn't show up.. i dont know) I read on Compiere, was impressed and interested especially on its "Active Application Dictionary" feature.At first I was hesitant since it is programmed with java. (Java was not apart of our curriculum. It was only a report discussion of other group in a group activity). I tried "Opensource ERP in PHP", opentaps then showed, but I gotten almost nothing to read. Maybe it was dead. I've got no choice, but to read and read about compiere. Every additional word I've read make me more curios about it and urge me to look at the source if it is really well-designed(somehow). &lt;br /&gt;
I don't know how to download the source yet, since I know nothing about svn. CVS was our dish and "vi" was our knife. I tried again googling "Compiere compressed/zip source code"...etc, luckily ADempiere showed up, with a sourceforge download link. Without any doubt I downloaded both the compiled binary and the source code.I also downloaded the AVA, in case the 2 might not be easy. &lt;br /&gt;
&lt;br /&gt;
I read about ADempiere(site looks messy...adempeire.org) anyway I manage to reach the wiki. Thank God, I feel like home!. I read on it and read. Until then, that I've successfully installed and configured ADempiere and the database, everything follows. Learning after learning, asking after asking, experimenting after experimenting, hacking after hacking(ows..I mean the code!). It was such a very satisfying feeling of enjoyment. So too shall you(newbies)! &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Conclusion: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;All in all and for all these, &lt;/li&gt;
&lt;li&gt;I may be a newbie to Java (but not anymore to programming languages) &lt;/li&gt;
&lt;li&gt;I may be a newbie to PostgreSQL (but not anymore to databases) &lt;/li&gt;
&lt;li&gt;I may be a newbie to ADempiere (but not anymore to integrated systems) &lt;/li&gt;
&lt;li&gt;I may be a newbie to Sourceforge (but not anymore to opensource) &lt;/li&gt;
&lt;li&gt;I may be a newbie to SVN (but not anymore to version control) &lt;/li&gt;
&lt;li&gt;I may be a newbie to Eclipse (but not anymore to editors) &lt;/li&gt;
&lt;li&gt;I may be a newbie to Linux (but not anymore to Operation Systems) &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;You may be a newbie to a thing, but you may not to it in general. &lt;/li&gt;
&lt;/ul&gt;Go newbies! Be scared not as I dont!, Bottom line is, ADempiere hall famers: red1, trifon, carlos, victor, mario, low, teo, colin, karsten(,..etc) were once all newbies(except that they were conceived with keyboard on their hands). Though they got a lot of experience gathered for years, who will take their place when they retire, if not us(newbies). Long live ADempiere! &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Oops!, newbie ask: How about jj(jorge janke)?. I'm afraid he was not once a newbie! &lt;/li&gt;
&lt;li&gt;Ans: I don't know!, just believe he was once in his life :-) &lt;/li&gt;
&lt;li&gt;Seriously, I really adored jj for the wonderful design. I wonder why if he didn't get dizzy designing such, involving closely related objects. &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="ADempiere_Notes"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;ADempiere Notes&lt;/h2&gt;These are the compilation of my personal notes on ADempiere, influence much of  &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;The tuturials I've read(on this wiki, compiere docs, even openbravo's guides) &lt;/li&gt;
&lt;li&gt;The answers to my help yells on the sf forums. &lt;/li&gt;
&lt;li&gt;The crazy experimentation that I've done towards the software. &lt;/li&gt;
&lt;/ol&gt;There are equivalent tuturials scattered everywhere, but these notes should be useful for impatient starters who wants a short reading and faster learning with regards to ADempiere. Good luck impatient readers! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="" name="xlib_lock_failure_in_Linux"&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;xlib_lock failure in Linux&lt;/span&gt; &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Behaviour: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;the java virtual machine dont work &lt;/li&gt;
&lt;li&gt;this is caused by library conflicts between java and xinerma, I think. &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Solution/Workaround: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;use the sed workaround(as suggested in sun's forum.) &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Locate the libmawt.so file (ie, /opt/jdk1.5.0_15/jre/lib/amd/xawt/libmawt.so) &lt;/li&gt;
&lt;li&gt;Be root, then issue the command:  &lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;sed -i 's/XINERMA/FAKEEXTN/g' /opt/jdk1.5.0_15/jre/lib/amd/xawt/libmawt.so
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;I've tested it both on WereWolf(Fedora Core 8) and Hardy Heron(Ubuntu 8.04), and it works. &lt;/li&gt;
&lt;li&gt;Note: more or less, in jdk1.6.0 or above, this issue has already been eliminated &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="The_AD_in_ADempiere"&gt;&lt;/a&gt;The AD in ADempiere&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;AD ( Application Dictionary ) "The application is configured by a module of the application itself". &lt;/li&gt;
&lt;li&gt;In order to appreciate ADempiere, you should be able to understand how the AD works, and at least have a hands on "know how" on how to do it. &lt;/li&gt;
&lt;li&gt;I refer a window in ADempiere as "AD Window" so as not to confuse from an ordinay windows in every application &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Master.2FDetail_Tabs"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Master/Detail Tabs&lt;/h4&gt;"I really had a hard time on how to set that up , thanks to Karsten for the &lt;a class="external text" href="https://sourceforge.net/forum/forum.php?thread_id=2099308&amp;amp;forum_id=610547" rel="nofollow" title="https://sourceforge.net/forum/forum.php?thread_id=2099308&amp;amp;forum_id=610547"&gt;guidance&lt;/a&gt;" Master/Detail tab relationship is the basic of ADempiere know how, that every newbie should be able to have. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Terminologies/Notes: &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Master/Detail - a list of master records, each has its own set of records(detail) that pertains to it. &lt;/li&gt;
&lt;li&gt;Master Records is also known as Header. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Header is much more applicable when we are talking of tables &lt;/li&gt;
&lt;li&gt;Master is more appropriate when we are talking about records &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Tabs are tables that are used in an AD Window construct. &lt;/li&gt;
&lt;li&gt;When a certain tab is a detail of the Master tab, assuming that the tab level of the Master tab is 0,then the Detail tab must have a tab level set to 1. &lt;/li&gt;
&lt;li&gt;In my presumption, this is the step which often neglected by newbies and alike. &lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Requirement: &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;In order to create a Master-Detail tab, you should have the 2 table that relates as Master and detail. &lt;/li&gt;
&lt;li&gt;The Detail table must have the key column of the Master table -- (General Knowldege, of course)and must be have a reference of "Table Direct" and marked as "Parent Link Column" &lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Example/Scenario: &lt;/li&gt;
&lt;/ul&gt;In a certain Product Manufactured. Every Model has its own set of R numbers. &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Master Table: "Model" - can have it as "tt_Model" (test table Model) &lt;/li&gt;
&lt;li&gt;Detail Table: "R number" - can have it as "tt_Rno" (test table R Number) &lt;/li&gt;
&lt;li&gt;"tt_Rno" must have a column "tt_Model_ID" as "Table Direct" and marked as "Parent Link Column" &lt;/li&gt;
&lt;li&gt;To Refect this to your AD Window (ie, Model) &lt;/li&gt;
&lt;li&gt;Have the two table as tabs of the window. &lt;/li&gt;
&lt;li&gt;Set the tab level of R number to 1. No need to set tab level of Model to 0, since it is 0 by default. &lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Refer to &lt;a href="http://adempiere.com/wiki/index.php/NewWindow" title="NewWindow"&gt;NewWindow&lt;/a&gt; for a detail tuturial on this. &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Collapsable_Detail_Tab_displayed_in_the_Master_Tab"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Collapsable Detail Tab displayed in the Master Tab&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;The Detail tab could be displayed in the Master tab of you AD Window. &lt;/li&gt;
&lt;li&gt;This &lt;a href="http://adempiere.com/wiki/index.php/Collapse_Grid_%26_Horizontal_Tab" title="Collapse Grid &amp;amp; Horizontal Tab"&gt;feature&lt;/a&gt; has been implemented in Release 331t on January 2008 (I was not involved to Adempiere at this time),with prominent faces of the legendary Victor Carlos Perez(saludo!) &lt;/li&gt;
&lt;li&gt;Steps to do this: &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;You must have successfully set the Master/Detail tab in my previous note. &lt;/li&gt;
&lt;li&gt;Select a Field(column) in your Master Tab which will be used as "Marker"(entity replacement) to be replaced by the Detail tab when organizing the AD Window. I usually use "Searh Key", since most likely the user needs not to fill them. &lt;/li&gt;
&lt;li&gt;In "Search Key" record, Set the "Included Tab" to Detail Tab &lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;You should now see that the detail tab of your AD Window is being displayed in the Master Tab. &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Synchronize_Column"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Synchronize Column&lt;/h4&gt;Synchronize Column - creates the physical table into the database.Take note that a table you create using AD in "Table &amp;amp; Columns" is not created yet in the database, even if you are using "Copy Column from Table" button. If you are using "Create columns from DB", of course you should already have a physical table in the database, and this is a reverse process of "Synchronize Column". &lt;br /&gt;
Synchronize Column - reacts differently on two situation. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Condition 1:If you had just constructed your table using AD this goes that you don't have the physical table yet.You may look at it using Database Admin Software(ie. Toad, PgAdmin) if you are skeptic( as I do). &lt;/li&gt;
&lt;li&gt;Reaction: Synchronize column will create the table, and the columns associated with it. Look at your Toad to prove. &lt;/li&gt;
&lt;li&gt;Condition 2:If the physical table has been created (perhaps via Condition1) &lt;/li&gt;
&lt;li&gt;Reaction: Each column is updated if something has been change(ie. its datatype/referece).If the column is new, it is added to the physical table. &lt;/li&gt;
&lt;li&gt;Note: Each time you delete a column in AD table definition, make sure you also delete the equivalent column in the DB physical table, especially for columns that were defined as Mandatory. This is to prevent errors such as "Mandatory error constraint". You may also stupidily choose not to delete the columns, provided that you set them as "inactive" or "non-mandatory" in the AD Table definition. It's up to you. But I suggest, you delete those equivalent columns in the database for "seiri"(cleanliness?) sake! &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Copy_Columns_from_Table"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Copy Columns from Table&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;"Copy Columns from Table" has an attached process which will copy the columns of an AD Table specified. All columns will be copied except for the key column(&lt;specified_table_name&gt;_ID) of the specified AD Table. Instead, along with the copied columns it will also create a key column for your own table(&lt;your_table_name&gt;_ID). Wow, isn't that easy!(Thanks to the developers!, wonderful). &lt;/your_table_name&gt;&lt;/specified_table_name&gt;&lt;/li&gt;
&lt;li&gt;This will function only if and only if the AD Table definition has no physical table in the database yet. Also this don't create the actual database columns in a physical table (Again, the changes/creation of the physical table is done via "Synchronize Column"). &lt;/li&gt;
&lt;li&gt;Tip:If you want to create a basic table structure(which you would likely modify later) use the "M_Product_Category" table, since this contains the most basic columns required for you to be able to include/create the table for your AD Window. &lt;/li&gt;
&lt;/ul&gt;You can also create the columns of you table one by one(Creating/Reusing a system element, Inserting them one by one to your AD Table as Columns, etc...tiresome..) without using "Copy Columns from Table" functionality.&lt;br /&gt;
&lt;a href="" name="Create_Columns_from_DB"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Create Columns from DB&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;"Create Columns from DB" this also has an attached processed that does the exactly the opposite of "Synchronize Column". &lt;/li&gt;
&lt;/ul&gt;"Create Columns from DB" creates an "AD Table Column definition" based on the physical table on the Database. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Note: I used physical table when I refer to the actual table in the database, so as not to confuse reader from the table in AD Table, which are table definition only, stored in AD. &lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;This functionality is not very useful to everyone, but for others it may. Just to point out, Create Columns from DB is applicable when you had designed your database structure before you had encountered ADempiere, and you dont want to redundantly recreate them again using the AD(especially if it involves lots of tables). &lt;/li&gt;
&lt;li&gt;Important: If you prefer using this option, you must have to review your database structure, so as it conforms the ADempiere standards, to avoid problems later on. Standards such as &lt;table_name&gt;_ID naming instead of &lt;table_name&gt;_key as most database designs are. You should also consider data types uniformity such as Numeric instead of Integer(in PostgreSQL). &lt;/table_name&gt;&lt;/table_name&gt;&lt;/li&gt;
&lt;li&gt;Oops, using this option still gets your way still complicated! So, I suggest you re-create your database structure definition using the AD. &lt;/li&gt;
&lt;li&gt;This offers ample advantages:  &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;You can refresh your mind regarding on the database structure that you have designed(especially when it was designed wayback around 19... you don't remember anymore!) &lt;/li&gt;
&lt;li&gt; It gives you a solid hands-on experience on using ADempiere not just on developing it but also as a whole(yes!, as a whole) since ADempiere is designed to be consistent in all aspect, whether you are designing its functionality or you are using it in your business scenario. Same familiar steps/processes are repeated over and over again, what that differ is the data you are handling. &lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If you have to build the your system or extensions from scratch(I mean the database, from scratch) and will be based on ADempiere, Well you dont have to use this functionality. You should enjoy using the comfortable "Copy Columns from Table" functionality instead. &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Display_Logic"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Display Logic&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Display Logic allows you to dynamically control the display of controls/fields just as they are needed, so as not to confused/distract the user. &lt;/li&gt;
&lt;/ul&gt;This allows you to configure the display behavior(show/hide) of fields of a certain AD Window. This is very useful when you wanted to have a user friendly User Interface Window. &lt;br /&gt;
&lt;a href="" name="Dynamic_Validation"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Dynamic Validation&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Dynamic Validation behaves likely as References in Table and Columns, it only differs that the set of values referred to other table can change depending on how you use it. &lt;/li&gt;
&lt;/ul&gt;This is very much useful when you wanted to have a suppressed list of values that is applicable according to the set of inputs created by the user. Likely the Dynamic Validation has a where statement that related to the set of user inputs. Dynamic Validation is invoked when a other fields/own fields changes. &lt;br /&gt;
&lt;a href="" name="Column_SQL"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Column SQL&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Column SQL (Also known as Virtual Columns) - useful for read-only/computed fields. &lt;/li&gt;
&lt;/ul&gt;This could be used to return a value that is looked up from other table. You can take Column SQL as a sub-query of your ordinary SQL statements. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Remember: Sub-query must return only 1 record!(You should probably have where statement here). &lt;/li&gt;
&lt;li&gt;Useful SQL keywords: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;"coalesce" - could be used as a replacement of "decode" in Oracle &lt;/li&gt;
&lt;li&gt;"case-when-then-else-end" - acts like a if-then-else in programming(I have just learned this too, maybe we are indulge too much with "decode"). It is also applicable for both Oracle and PostgreSQL. I find "case-when-then-else-end" more handy and comprehensive than "decode". &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Process_vs_Callouts"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Process vs Callouts&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;A Process assigned to a button(mostly and appropriate) is applicable for server process and appropriate when you need an extra parameter for processing. &lt;/li&gt;
&lt;li&gt;Callout is applicable of processing and accessing the values on the fields (which are created on the client side and not on the server side). &lt;/li&gt;
&lt;li&gt;Callout is appropriate when you want a precalculation of values for other fields in an AD Window before it is saved into the database. &lt;/li&gt;
&lt;li&gt;Callouts can be assigned to any fields/controls (ie, Button, combobox,checkboxes,textboxes, etc.) &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Identifier"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Identifier&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Identifier mark a column to be a part of the unique &lt;/li&gt;
&lt;li&gt;When columns are marked as identifier(this goes that they belong to be a member of unique), the values of the column are concateneted with "-" with respect to the sequence order, when the table is referred in other table when displayed in the AD Window. &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Create_Fields"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Create Fields&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Create Fields - this automatically create the fields of your AD Window based on the column definition you have created in the AD Table. This fills up the fields tab in the "Window Tab &amp;amp; Fields" Window&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_ZKShlZKTutM/SbAHNh12t1I/AAAAAAAAAAM/bcq7n2sjuFU/s1600-h/ADempiere-Screenshot_.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" height="478" id="BLOGGER_PHOTO_ID_5309751889673762642" src="http://3.bp.blogspot.com/_ZKShlZKTutM/SbAHNh12t1I/AAAAAAAAAAM/bcq7n2sjuFU/s640/ADempiere-Screenshot_.jpg" style="float: left; height: 492px; margin-bottom: 10px; margin-left: 0pt; margin-right: 10px; margin-top: 0pt; width: 658px;"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;div style="text-align: left;"&gt;ADempiere WebUI screenshot.&lt;/div&gt;&lt;/span&gt;&lt;a href="" name="Some_thoughts"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Some thoughts&lt;/h2&gt;&lt;a href="" name="Full_Web_App"&gt;&lt;/a&gt;Full Web App &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;You could have a web application act as a full desktop application. The thing that web app can not do, is to access the your local file system and peripheral devices. But this could be patch up using AIR (Adobe Integrated Runtime) &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Using AIR as a substitute of a browser, &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;or &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Create a swf file, as part of your web-app, then interact with it using FA_bridge.js &lt;/li&gt;
&lt;li&gt;Create an AIR application which will be installed in the local computer of the user. This will be the agent for your web-app request &lt;/li&gt;
&lt;li&gt;Let your web-app communicate the swf of your web-app, and let the swf part of your web-app communicate with AIR using local-connection. &lt;/li&gt;
&lt;li&gt;I will try to elaborate this later-on. &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Simplest_way_to_network_two_computers"&gt;&lt;/a&gt;Simplest way to network two computers &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;You could network your two computer using an ordinary LAN cable only. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I heard about this long ago, but I am very skeptic to believe them, until I've tried it last week(just last week, and it worked) &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Simple.2C_Reliable_ADempiere_PITR_back-up"&gt;&lt;/a&gt;Simple, Reliable ADempiere PITR back-up &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;PITR - Point in time recovery, means you have the ability to restore your database status as it was in a certain point in time that you had made a back-up &lt;/li&gt;
&lt;li&gt;This is very useful for the prevention of risk!, especially when in time of disaster, or your system is hacked! &lt;/li&gt;
&lt;li&gt;Applicable for daily back-up only &lt;/li&gt;
&lt;li&gt;Utilizes two reliable simple and reliable technoloy &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Use of version control (ie, subversion) &lt;/li&gt;
&lt;li&gt;Use of dump (ie pg_dump) in PostgreSQL &lt;/li&gt;
&lt;/ol&gt;&lt;a href="" name="Requirement"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Requirement&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;You should already had a working SVN version control &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Steps_to_follow"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Steps to follow&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Set- up a new repository in your SVN &lt;/li&gt;
&lt;li&gt;Name it at your preference(i.e, repos/ADempiere_PITR ) &lt;/li&gt;
&lt;li&gt;Set up a directory (like a development directory) which will contain the dump file &lt;/li&gt;
&lt;li&gt;Dump your database to you ADempiere PITR working directory &lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;pg_dump &amp;gt; Adempiere_pitr.dmp
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;SVN add ADempiere_pitr.dmp &lt;/li&gt;
&lt;li&gt;SVN commit ADempiere_pitr.dmp &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;This should put your file into the SVN repository as revision 1 (you need to take note of the date) &lt;/li&gt;
&lt;li&gt;The next time you wanted to make a backup follow the same process as a version control &lt;/li&gt;
&lt;li&gt;pg_dump &amp;gt; Adempiere_pitr.dmp again, (This will overwite the file ADempiere_pitr.dmp) &lt;/li&gt;
&lt;li&gt;Commit it again to the SVN Repository&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Recovery_Steps"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Recovery Steps&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;( Optional )Back-up your last database status, this might be useful for future resource and documentation. &lt;/li&gt;
&lt;li&gt;Shutdown your application server and any other application that might be accessing the database(This is to stop service momentarily, to avoid user access to the database) &lt;/li&gt;
&lt;li&gt;Drop your database schema &lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;psql -U adempiere -d adempiere -c "drop schema adempiere cascade"
psql -U adempiere -d adempiere -c "drop schema sqlj cascade"
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;svn update your Adempiere_pitr.dmp to any revision you intend to (based the revision to the date of the commit) &lt;/li&gt;
&lt;li&gt;restore the database &lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;psql -U adempiere -d adempiere -f Adempiere_pitr.dmp
&lt;/pre&gt;&lt;a href="" name="Pros:"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Pros:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;No needed downtime &lt;/li&gt;
&lt;li&gt;Simple and  reliable &lt;/li&gt;
&lt;li&gt;Save disk space, since SVN stored them in a logical way that it saves disk (only changes from the previous file is actualy saved) &lt;/li&gt;
&lt;li&gt;No new technologies involved, use svn as you are used to using it :-) &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Cons:"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Cons:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Everytime you create you back-up, the whole database is read, since we are using dump &lt;/li&gt;
&lt;li&gt;Can't be used to have a per minute hot back-up. If ever you do,then your server performance will be affected &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Advertisement"&gt;&lt;/a&gt;Advertisement&lt;a href="" name="Hacker_for_hire.21.21.21"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;Hacker for hire!!!&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;I am planning to quit my job, as I see the light in ADempiere! &lt;/li&gt;
&lt;li&gt;I got potential clients, not served yet! &lt;/li&gt;
&lt;li&gt;I can't do this alone! There are still areas on the deployment process, which I can't really have confidence, such as security, hot back-up, etc!. &lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I'm looking for ADempiere oppurtunities, employer, partnership, etc..  &lt;/li&gt;
&lt;li&gt;Any interest? email me: ivanceras at google's mail server .com &lt;/li&gt;
&lt;/ul&gt;&lt;a href="" name="Short_Notes"&gt;&lt;/a&gt;Short Notes&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;No space should be used in a DB column when defining in AD. &lt;/li&gt;
&lt;li&gt;getting Adempiere home directory is in: org.compiere.util.Ini.findAdempiereHome &lt;/li&gt;
&lt;li&gt;Hiding the Performance Analysis Panel(the charts displays as a dashboard) is configured by setting all the Performance Goals records inactive in "Performance Goal" AD Window. &lt;/li&gt;
&lt;li&gt;Changing the generated report output format is done in "zkwebui/WEB-INF/src/org/adempiere/webui/window/ZKReportViewer.java". This applicable for the web interface, of course. You can alter the default output format(pdf) to html, you need a temporary file for this.To impress the user, you could also changed the format to "xls"(temp file), then have it be viewed using the ZSS spreadsheet(ZK spreadsheet) component. The user could view the report as a spreadsheet in the browser, as if he/she is used to view a spreadsheet in a desktop. &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-4745023569704343463?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3-yqB1IrjuzWNqOBjqEd5hKKXt0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3-yqB1IrjuzWNqOBjqEd5hKKXt0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3-yqB1IrjuzWNqOBjqEd5hKKXt0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3-yqB1IrjuzWNqOBjqEd5hKKXt0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T18:30:19.592-07:00</app:edited><media:thumbnail url="http://3.bp.blogspot.com/_ZKShlZKTutM/SbAHNh12t1I/AAAAAAAAAAM/bcq7n2sjuFU/s72-c/ADempiere-Screenshot_.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>About Me</title><link>http://blog.ivanceras.com/2009/03/about-me.html</link><category>about ivanceras</category><author>noreply@blogger.com (ivanceras)</author><pubDate>Wed, 06 May 2009 20:48:13 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-4922513247804505697.post-6522484139028274497</guid><description>Hello,&lt;br /&gt;&lt;br /&gt;I am ivanceras a computer enthusiast 23 years of age, currently a freelancer&lt;br /&gt;Today I will start blogging on the web.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Some Nice Words about me on the net:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/forum/message.php?msg_id=7313152"&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/forum/message.php?msg_id=7313152"&gt;https://sourceforge.net/forum/message.php?msg_id=7313152&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-size:85%;"&gt;Wow Ivan, honestly I'm impressed with the good work you have done with this (integrating and extending lots of things - script callouts, field groups, etc).&lt;br /&gt;&lt;br /&gt;You don't see like a newbie (as you state on your wiki page and blog)  :-)&lt;br /&gt;&lt;br /&gt;I also like the way you've pushed this - documenting all the scenario in wiki, publishing your patches, and showing even a video!&lt;br /&gt;&lt;br /&gt;I don't have words to express my feelings when I see somebody with such enthusiasm to contribute here.&lt;br /&gt;&lt;br /&gt;Hmmmm - what else can I say - your code looks good, clean, readable, meticulous.&lt;br /&gt;&lt;br /&gt;Thanks for joining the adempiere party.  It's not common to have such good contributors.[...]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);font-size:85%;" &gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-size:85%;" &gt;                 &lt;a href="https://sourceforge.net/users/globalqss/"&gt;Carlos Ruiz&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-size:85%;" &gt;&lt;a href="https://sourceforge.net/users/globalqss/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;!-- google_ad_section_end --&gt;    &lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=2767816&amp;amp;group_id=176962&amp;amp;atid=879335"&gt;https://sourceforge.net/tracker/?func=detail&amp;amp;aid=2767816&amp;amp;group_id=176962&amp;amp;atid=879335&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-size:85%;"&gt;Hi ivanceras,&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt; Wow, it's amazing what have you done! I am looking at wiki page and it's&lt;br /&gt;really amazing. Congratulations !&lt;br /&gt;&lt;br /&gt;The part that i like from your contribution is about making fields to&lt;br /&gt;align on header or on footer. This can be useful in a lot of cases.&lt;br /&gt;&lt;br /&gt;The part that i do not like is about the need to define those columns for&lt;br /&gt;each table that needs this functionality. I agree with Carlos suggestion.&lt;br /&gt;&lt;br /&gt;So, to have this feature in trunk i think we can split it into 2 FR:&lt;br /&gt;* ability to group fields on header or on footer - which is GREAT&lt;br /&gt;* ADempiere Multiple Record Action Field - (this one) which needs to be&lt;br /&gt;polished&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regarding ZK's pagination,  I am wondering if we can implement something&lt;br /&gt;similar with GMail's Select all functionality. More, exactly, when i press&lt;br /&gt;"Select All" button, gmail displays:&lt;br /&gt;All 100 conversations on this page are selected. Select all 12540&lt;br /&gt;conversations in "adempiere"&lt;br /&gt;&lt;br /&gt;WDYT?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;&lt;a href="https://sourceforge.net/users/teo_sarca/"&gt;Teo Sarca&lt;/a&gt; -&lt;a href="http://www.arhipac.ro/"&gt; www.arhipac.ro&lt;/a&gt;&lt;/span&gt;       &lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4922513247804505697-6522484139028274497?l=blog.ivanceras.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dCdySTAMOAPmd48fW0bcqadyqhA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCdySTAMOAPmd48fW0bcqadyqhA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dCdySTAMOAPmd48fW0bcqadyqhA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dCdySTAMOAPmd48fW0bcqadyqhA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-06T20:48:13.269-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><media:rating>nonadult</media:rating></channel></rss>

