<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7111452516229749637</id><updated>2012-02-15T22:53:06.291-08:00</updated><category term='memcashed'/><category term='monitoring tools review'/><category term='data mining'/><category term='Lucene'/><category term='debugging javascript'/><category term='scoop'/><category term='Java framework review'/><category term='Programming concepts'/><category term='Hibernate'/><category term='Ganymede'/><category term='Mount new disk on linux'/><category term='jManage 2.0'/><category term='sed'/><category term='hadoop'/><category term='Eclipse 3.4'/><category term='Web design'/><category term='PMD review'/><category term='good data'/><category term='Probe'/><category term='Linux monitoring'/><category term='Amazon s3'/><category term='business intellegence'/><category term='AWK'/><category term='web 2.0'/><category term='JBoss tools'/><category term='Tomcat monitoring'/><category term='distributed databases'/><category term='Java Heap Analysis Tool'/><category term='HBase'/><category term='java as service on linux'/><category term='Semantic web'/><category term='ssmtp'/><category term='crontab'/><category term='scribe'/><category term='Cloud computing'/><category term='facebook'/><category term='hadoop single node'/><category term='SSH authentication'/><category term='java monitoring tools'/><category term='centos'/><category term='mysql'/><category term='Spatial extensions in mySQL'/><category term='Java tools review'/><category term='Ad-Exchange'/><category term='java benchmarks'/><category term='ZooKeeper'/><category term='shell programming'/><category term='LDAP'/><category term='database technologies'/><category term='Java static code tools'/><category term='Regular expression'/><category term='rest'/><category term='Tomcat'/><category term='string searching'/><category term='Linux tunining'/><category term='Agile'/><category term='Restlet'/><category term='LAN performance tips'/><category term='Tomcat problems'/><category term='debugging javascript in IE'/><category term='Wolfram'/><category term='Microsoft Script debugger'/><category term='Too many open files problem'/><category term='Scrum'/><category term='mysql monitoring'/><category term='linux utilities'/><category term='PermGen memory'/><category term='SMTP properties'/><category term='Adobe Flex'/><category term='GWT'/><category term='javascript'/><category term='TFTP'/><category term='Web 2.0 tools for project management'/><category term='Hotspot options'/><category term='shell'/><category term='tomcat  monitoring tools'/><category term='PartitionedHashMap'/><category term='neo4j'/><category term='Blogspot tips'/><category term='Linux tips'/><category term='WEB4J'/><category term='java mail settins'/><category term='Tomcat memory problems'/><category term='nVidia CUDA'/><category term='linux'/><category term='Web Development Toolbox: 120+ New Tools for Web Development'/><category term='XML/XSD/Schema'/><category term='Google wave'/><category term='GAE'/><category term='FindBugs review'/><category term='yahoo technologies'/><category term='Fun'/><category term='Google'/><category term='Web Scalability'/><category term='AWS'/><category term='pattern matching'/><category term='LAMP on EC2'/><category term='SEO'/><category term='Face recognition in Java'/><category term='Hadoop cluster'/><category term='Map-Reduce example'/><category term='Eclipse 3.5'/><category term='Network performance'/><category term='IE'/><category term='RDMS'/><category term='Hadoop installation and configuration'/><category term='Java profilers'/><category term='New technologies'/><category term='gmail'/><title type='text'>Java frameworks and tools overview</title><subtitle type='html'>My intention was to make a place to discuss a different aspects of Java development and to review a Java frameworks, tools and interesting solutions.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4772704980883988824</id><published>2011-12-20T23:49:00.000-08:00</published><updated>2011-12-21T00:13:03.406-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribe'/><category scheme='http://www.blogger.com/atom/ns#' term='scoop'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Realtime Apache Hadoop at Facebook</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Facebook use Hadoop/Hbase for a following products Titan( Facebook messages), Puma( real-time publisher insights), ODS( Facebook internal metrics). &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Currently in use 4 data centers, about &lt;a href="tel:2000" style="color:rgb(17,85,204)" target="_blank" value="+9722000"&gt;2000&lt;/a&gt; nodes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Data center replication is not supported as part of HBase, so they wrote some internal product to do that.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;All data LZO compressed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Each data center has 2PB of data replicated x3, total 6PB.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Each node have 12 discs each 1Tb.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;Load on each node 55% read, 45% write.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li style="margin-left:15px"&gt;&lt;span style="font-family:Arial, Tahoma, Helvetica, FreeSans, sans-serif;color:#666666;"&gt;&lt;span style="line-height:18px"&gt;To collect data from front end servers they're using &lt;a href="http://www.facebook.com/note.php?note_id=32008268919" style="color:rgb(17,85,204)" target="_blank"&gt;Scribe&lt;/a&gt;, which is open sourced.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;Slides &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B4Bx_PvQsB5LNjIzODU0Y2EtNmMxNy00MWViLWEwMDctNGNiM2I4NzIwZDBh&amp;amp;hl=en_US" style="color:rgb(17,85,204)" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;b style="background-color:rgb(255,255,255)"&gt;WHY HADOOP AND HBASE( from facebook paper)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;The requirements for the storage system for our workloads can be summarized as follows:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Elasticity&lt;/b&gt;: We need to be able to add incremental capacity to our storage systems with minimal overhead and no downtime. In some cases we may want to add capacity rapidly and the system should automatically balance load and utilization across new hardware.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;2. High write throughput&lt;/b&gt;: Most of the applications store (and optionally index) tremendous amounts of data and require high aggregate write throughput.&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;&lt;br /&gt;3. Efficient and low-latency strong consistency semantics within a data center:&lt;/b&gt; There are important applications like Messages that require strong consistency within a data center. This requirement often arises directly from user expectations. For example ‘‘unread’’ message counts displayed on the home page and the messages shown in the inbox page view should be consistent with respect to each other. While a globally distributed strongly consistent system is practically impossible, a system that could at least provide strong consistency within a data center would make it possible to provide a good user experience. We also knew that (unlike other Facebook applications), Messages was easy to federate so that a particular user could be served entirely out of a single data center making strong consistency within a single data center a critical requirement for the Messages project. Similarly, other projects, like realtime log aggregation, may be deployed entirely within one data center and are much easier to program if the system provides strong consistency guarantees.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;br /&gt;&lt;b&gt;4. Efficient random reads from disk&lt;/b&gt;: In spite of the widespread use of application level caches (whether embedded or via memcached), at Facebook scale, a lot of accesses miss the cache and hit the back-end storage system. MySQL is very efficient at performing random reads from disk and any new system would have to be comparable.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;5. High Availability and Disaster Recovery:&lt;/b&gt; We need to provide a service with very high uptime to users that covers both planned and unplanned events (examples of the former being events like software upgrades and addition of hardware/capacity and the latter exemplified by failures of hardware components). We also need to be able to tolerate the loss of a data center with minimal data loss and be able to serve data out of another data center in a reasonable time frame.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Fault Isolation:&lt;/b&gt; Our long experience running large farms of MySQL databases has shown us that fault isolation is critical. Individual databases can and do go down, but only a small fraction of users are affected by any such event. Similarly, in our warehouse usage of Hadoop, individual disk failures affect only a small part of the data and the system quickly recovers from such faults.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;7. Atomic read-modify-write primitives: &lt;/b&gt;Atomic increments and compare-and-swap APIs have been very useful in building lockless concurrent applications and are a must have from the underlying storage system.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;8. Range Scans:&lt;/b&gt; Several applications require efficient retrieval of a set of rows in a particular range. For example all the last 100 messages for a given user or the hourly impression counts over the last 24 hours for a given advertiser.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;It is also worth pointing out non-requirements:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;1. Tolerance of network partitions within a single data center&lt;/b&gt;: Different system components are often inherently centralized. For example, MySQL servers may all be located within a few racks, and network partitions within a data center would cause major loss in serving capabilities therein. Hence every effort is made to eliminate the possibility of such events at the hardware level by having a highly redundant network design.&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;&lt;br /&gt;2. Zero Downtime in case of individual data center failure:&lt;/b&gt; In our experience such failures are very rare, though not impossible. In a less than ideal world where the choice of system design boils down to the choice of compromises that are acceptable, this is one compromise that we are willing to make given the low occurrence rate of such events. We might revise this non-requirement at a later time.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;b&gt;3. Active-active serving capability across different data centers&lt;/b&gt;: As mentioned before, we were comfortable making the assumption that user data could be federated across different data centers (based ideally on user locality). Latency (when user and data locality did not match up) could be masked by using an application cache close to the user.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;&lt;br /&gt;Some less tangible factors were also at work. Systems with existing production experience for Facebook and in-house expertise were greatly preferred. When considering open-source projects, the strength of the community was an important factor. Given the level of engineering investment in building and maintaining systems like these –– it also made sense to choose a solution that was broadly applicable (rather than adopt point solutions based on differing architecture and codebases for each workload).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;After considerable research and experimentation, we chose Hadoop and HBase as the foundational storage technology for these next generation applications. The decision was based on the state of HBase at the point of evaluation as well as our confidence in addressing the features that were lacking at that point via in- house engineering. HBase already provided a highly consistent, high write-throughput key-value store. The HDFS NameNode stood out as a central point of failure, but we were confident that our HDFS team could build a highly-available NameNode (AvatarNode) in a reasonable time-frame, and this would be useful for our warehouse operations as well. Good disk read-efficiency seemed to be within striking reach (pending adding Bloom filters to HBase’’s version of LSM Trees, making local DataNode reads efficient and caching NameNode metadata). Based on our experience operating the Hive/Hadoop warehouse, we knew HDFS was stellar in tolerating and isolating faults in the disk subsystem. The failure of entire large HBase/HDFS clusters was a scenario that ran against the goal of fault-isolation, but could be considerably mitigated by storing data in smaller HBase clusters. Wide area replication projects, both in-house and within the HBase community, seemed to provide a promising path to achieving disaster recovery.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="background-color:rgb(255,255,255)"&gt;HBase is massively scalable and delivers fast random writes as well as random and streaming reads. It also provides row-level atomicity guarantees, but no native cross-row transactional support. From a data model perspective, column-orientation gives extreme flexibility in storing data and wide rows allow the creation of billions of indexed values within a single table. HBase is ideal for workloads that are write-intensive, need to maintain a large amount of data, large indices, and maintain the flexibility to scale out quickly. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4772704980883988824?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4772704980883988824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4772704980883988824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4772704980883988824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4772704980883988824'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2011/12/facebook-use-hadoophbase-for-following.html' title='Realtime Apache Hadoop at Facebook'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6273487999852389910</id><published>2011-02-24T23:44:00.000-08:00</published><updated>2011-02-24T23:44:50.356-08:00</updated><title type='text'>A Day Made of Glass... Made possible by Corning.</title><content type='html'>&lt;iframe width="480" height="295" src="http://www.youtube.com/embed/6Cf7IL_eZ38?fs=1" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6273487999852389910?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6273487999852389910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6273487999852389910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6273487999852389910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6273487999852389910'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2011/02/day-made-of-glass-made-possible-by.html' title='A Day Made of Glass... Made possible by Corning.'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/6Cf7IL_eZ38/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2806042301644757843</id><published>2010-09-04T06:58:00.001-07:00</published><updated>2010-09-04T06:58:41.142-07:00</updated><title type='text'>An Introduction to RDF and the Jena RDF API</title><content type='html'>&lt;a href="http://jena.sourceforge.net/tutorial/RDF_API/"&gt;http://jena.sourceforge.net/tutorial/RDF_API/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2806042301644757843?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2806042301644757843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2806042301644757843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2806042301644757843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2806042301644757843'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/09/introduction-to-rdf-and-jena-rdf-api.html' title='An Introduction to RDF and the Jena RDF API'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8569660853936111330</id><published>2010-09-04T00:28:00.001-07:00</published><updated>2010-09-04T00:28:40.469-07:00</updated><title type='text'>XAuth - an introduction from Chris Messina</title><content type='html'>&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12121710&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=1&amp;amp;color=&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=12121710&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=1&amp;amp;color=&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/12121710"&gt;XAuth - an introduction&lt;/a&gt; from &lt;a href="http://vimeo.com/factoryjoe"&gt;Chris Messina&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-8569660853936111330?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8569660853936111330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8569660853936111330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8569660853936111330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8569660853936111330'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/09/xauth-introduction-from-chris-messina.html' title='XAuth - an introduction from Chris Messina'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4671236632705988261</id><published>2010-05-10T00:33:00.001-07:00</published><updated>2010-05-10T00:33:22.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux tips'/><title type='text'>CentOS: find out what network ports are in use</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; color: rgb(102, 102, 102);'&gt;To get a quick idea of what ports you have open on your local box, you can use nmap.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;small&gt;&lt;font face='georgia'&gt;&lt;i&gt;[root@api1dev /usr/local/bin]nmap localhost&lt;br/&gt;Starting Nmap 5.00 ( http://nmap.org ) at 2010-05-10 03:02 EDT&lt;br/&gt;Interesting ports on vmlinux-testing1 (127.0.0.1):&lt;br/&gt;Not shown: 991 closed ports&lt;br/&gt;PORT     STATE SERVICE&lt;br/&gt;21/tcp   open  ftp&lt;br/&gt;22/tcp   open  ssh&lt;br/&gt;80/tcp   open  http&lt;br/&gt;111/tcp  open  rpcbind&lt;br/&gt;389/tcp  open  ldap&lt;br/&gt;631/tcp  open  ipp&lt;br/&gt;726/tcp  open  unknown&lt;br/&gt;8009/tcp open  ajp13&lt;br/&gt;8080/tcp open  http-proxy&lt;/i&gt;&lt;/font&gt;&lt;/small&gt;&lt;br/&gt;&lt;small&gt;&lt;br/&gt;For more detailed information, try netstat:&lt;span style='font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; color: rgb(102, 102, 102);'&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;netstat -an&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;You’ll get a breakdown of every socket open on your machine – useful for figuring out who’s connected and from where.&lt;/p&gt;&lt;/span&gt;&lt;/small&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/7111452516229749637-4671236632705988261?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4671236632705988261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4671236632705988261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4671236632705988261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4671236632705988261'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/05/centos-find-out-what-network-ports-are.html' title='CentOS: find out what network ports are in use'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7237982988840971492</id><published>2010-04-08T01:34:00.000-07:00</published><updated>2010-04-08T01:40:24.761-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ad-Exchange'/><title type='text'>Interesting articles about Ad-Exchange and RTB</title><content type='html'>&lt;a href="http://goo.gl/wuts"&gt;The Ad-Exchange Model (Part I)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://goo.gl/dN6b"&gt;RTB Part I Followup&lt;/a&gt;&lt;br /&gt;&lt;a href="http://goo.gl/srZv"&gt;RTB Part II: Supply supply supply!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://goo.gl/nanI"&gt;RTB Part III: Cookies &amp; User Data!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7237982988840971492?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7237982988840971492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7237982988840971492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7237982988840971492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7237982988840971492'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/04/interesting-articles-about-ad-exchange.html' title='Interesting articles about Ad-Exchange and RTB'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1625657473388600737</id><published>2010-03-15T08:11:00.001-07:00</published><updated>2010-03-15T08:11:42.085-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='data mining'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Alternative to HBase + Map-Reduce</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;big&gt;&lt;big&gt;mongoDB &lt;br/&gt;&lt;br/&gt;&lt;/big&gt;&lt;/big&gt;Combining the best features of document databases, key-value stores, and RDBMSes.&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'&gt;&lt;span style='font-family: helvetica,arial,sans-serif; font-size: 13px; line-height: 17px;' class='Apple-style-span'&gt;&lt;p style='margin: 0px 0px 10px; padding: 0px; font-size: 10pt; line-height: 13pt; color: rgb(76, 58, 44) ! important; font-weight: normal; text-decoration: none ! important; max-width: 800px;'&gt;MongoDB (from "hu&lt;b style='margin: 0px;'&gt;mongo&lt;/b&gt;us") is a scalable, high-performance, open source, schema-free, document-oriented database. Written in C++, MongoDB features:&lt;/p&gt;&lt;ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Document-oriented storage (the simplicity and power of&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='BSON' href='/display/DOCS/BSON'&gt;JSON-like&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;data schemas)&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Dynamic&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Querying' href='/display/DOCS/Querying'&gt;queries&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Full&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Indexes' href='/display/DOCS/Indexes'&gt;index&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;support, including secondary indexes, inner-objects, embedded arrays,&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Geospatial Indexing' href='/display/DOCS/Geospatial+Indexing'&gt;geospatial&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Query&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Database Profiler' href='/display/DOCS/Database+Profiler'&gt;profiling&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Fast,&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://blog.mongodb.org/post/248614779/fast-updates-with-mongodb-update-in-place'&gt;in-place updates&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Efficient storage of binary data&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='GridFS' href='/display/DOCS/GridFS'&gt;large objects&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;(e.g. photos and videos)&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Replication' href='/display/DOCS/Replication'&gt;Replication&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;and fail-over support&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Sharding' href='/display/DOCS/Sharding'&gt;Auto-sharding&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;for cloud-level scalability&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='MapReduce' href='/display/DOCS/MapReduce'&gt;MapReduce&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;for complex aggregation&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='MongoDB Commercial Services Providers' href='/display/DOCS/MongoDB+Commercial+Services+Providers'&gt;Commercial Support, Training, and Consulting&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style='margin: 0px 0px 10px; padding: 0px; font-size: 10pt; line-height: 13pt; color: rgb(76, 58, 44) ! important; font-weight: normal; text-decoration: none ! important; max-width: 800px;'&gt;MongoDB bridges the gap between key-value stores (which are fast and highly scalable) and traditional RDBMS systems. Many companies are using MongoDB&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Production Deployments' href='/display/DOCS/Production+Deployments'&gt;in production today&lt;/a&gt;.&lt;/p&gt;&lt;h6 style='margin: 1.25em 0px 0.5em; padding: 0px; line-height: normal; font-weight: bold; font-size: 10pt; color: rgb(0, 51, 102); text-decoration: none ! important;'&gt;&lt;a style='margin: 0px; text-decoration: none ! important; color: rgb(76, 58, 44) ! important;' name='Home-QuickLinks'/&gt;Quick Links&lt;/h6&gt;&lt;ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Downloads' href='/display/DOCS/Downloads'&gt;Downloads&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://twitter.com/mongodb'&gt;Follow @mongodb on Twitter&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Use Cases' href='/display/DOCS/Use+Cases'&gt;Use Cases&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Philosophy' href='/display/DOCS/Philosophy'&gt;Philosophy&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Hosting Center' href='/display/DOCS/Hosting+Center'&gt;Hosting Center&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Drivers' href='/display/DOCS/Drivers'&gt;Drivers&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Source Code' href='/display/DOCS/Source+Code'&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://blog.mongodb.org/'&gt;Blog&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Articles' href='/display/DOCS/Articles'&gt;Articles&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Tutorial' href='/display/DOCS/Tutorial'&gt;Tutorial&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' target='_blank' mce_href='http://try.mongodb.org' href='http://try.mongodb.org/'&gt;Try MongoDB in the Browser&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Licensing' href='/display/DOCS/Licensing'&gt;Licensing&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://github.com/mongodb/mongo-snippets/tree/master'&gt;Example Snippets&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://jira.mongodb.org/'&gt;BugDB (Jira)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h6 style='margin: 1.25em 0px 0.5em; padding: 0px; line-height: normal; font-weight: bold; font-size: 10pt; color: rgb(0, 51, 102); text-decoration: none ! important;'&gt;&lt;a style='margin: 0px; text-decoration: none ! important; color: rgb(76, 58, 44) ! important;' name='Home-Support'/&gt;Support&lt;/h6&gt;&lt;ul style='margin: 0px 0px 1em; color: rgb(76, 58, 44) ! important; text-decoration: none ! important; position: relative; padding-left: 1.2em; line-height: 13pt; font-size: 10pt; list-style-type: disc;'&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Support forums:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://groups.google.com/group/mongodb-user'&gt;mongodb-user&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;|&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' title='Community' href='/display/DOCS/Community'&gt;more...&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;IRC:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='irc://irc.freenode.net/#mongodb'&gt;irc.freenode.net/#mongodb&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Commercial support:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://www.10gen.com/support'&gt;10gen&lt;/a&gt;&lt;/li&gt;&lt;li style='margin: 0px 0px 0px 1em; padding: 0px; font-size: 10pt; line-height: 13pt; list-style-image: url(http://media.mongodb.org/bullet-green.png); list-style-type: disc;'&gt;Training:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='margin: 0px; text-decoration: none; color: rgb(0, 51, 102);' href='http://www.10gen.com/training'&gt;10gen&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=0f23be25-6820-8984-a6ed-76fe9ded5a36' alt='' class='zemanta-pixie-img'/&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/7111452516229749637-1625657473388600737?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/1625657473388600737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=1625657473388600737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1625657473388600737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1625657473388600737'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/03/alternative-to-hbase-map-reduce.html' title='Alternative to HBase + Map-Reduce'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5773522105528641869</id><published>2010-02-18T00:31:00.001-08:00</published><updated>2010-02-18T00:31:18.322-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAMP on EC2'/><category scheme='http://www.blogger.com/atom/ns#' term='AWS'/><title type='text'>LAMP on EC2 : Setting up Amazon Web Services</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'&gt;&lt;span style='color: rgb(102, 102, 102); font-family: Georgia,&amp;apos;Times New Roman&amp;apos;,serif; font-size: 13px; line-height: 19px;' class='Apple-style-span'&gt;&lt;h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Arial,Helvetica,Geneva,sans-serif; font-size: 24px; letter-spacing: -1px; text-decoration: none; color: rgb(75, 75, 75);' class='title'&gt;&lt;a style='text-decoration: none; color: rgb(51, 51, 51); line-height: 1.21em;' href='/blog/2009/3/3/lamp-on-ec2-part-1-setting-up-amazon-web-services.html'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'&gt;&lt;span style='color: rgb(102, 102, 102); font-family: Georgia,&amp;apos;Times New Roman&amp;apos;,serif; font-size: 13px; line-height: 19px;' class='Apple-style-span'/&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Arial,Helvetica,Geneva,sans-serif; font-size: 24px; letter-spacing: -1px; text-decoration: none; color: rgb(75, 75, 75);' class='title'&gt;&lt;a style='text-decoration: none; color: rgb(51, 51, 51); line-height: 1.21em;' href='/blog/2009/3/3/lamp-on-ec2-part-1-setting-up-amazon-web-services.html'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'&gt;&lt;span style='color: rgb(18, 50, 166); font-family: arial;' class='Apple-style-span'&gt;http://goo.gl/z1Zb&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;' class='Apple-style-span'&gt;&lt;span style='color: rgb(18, 50, 166); font-family: arial;' class='Apple-style-span'&gt;http://goo.gl/xhqB&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=3e46f3ff-d192-8383-a3c9-b447f8d36e56' alt='' class='zemanta-pixie-img'/&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/7111452516229749637-5773522105528641869?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5773522105528641869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5773522105528641869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5773522105528641869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5773522105528641869'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/02/lamp-on-ec2-setting-up-amazon-web.html' title='LAMP on EC2 : Setting up Amazon Web Services'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3557590356530441877</id><published>2010-02-08T01:05:00.000-08:00</published><updated>2010-02-08T01:05:39.404-08:00</updated><title type='text'>Web performance in seven steps: Summary and Conclusions</title><content type='html'>&lt;span class="Apple-style-span"   style="  ;font-family:Verdana, Arial, sans-serif;font-size:11px;"&gt;&lt;h2 class="title" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 5px; padding-top: 10px; padding-right: 15px; padding-bottom: 0px; padding-left: 48px; font-weight: normal; font-family: Helvetica, Arial, sans-serif; line-height: 28px; font-size: 22px; color: rgb(101, 58, 113); background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; display: inline-block; width: 690px; background-position: 100% 0%; background-repeat: no-repeat no-repeat; "&gt;&lt;a href="http://blog.xebia.com/2010/01/20/web-performance-in-seven-steps-summery-and-conclusions/" rel="bookmark" title="Permanent Link to Web performance in seven steps: Summary and Conclusions" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: normal; "&gt;Web performance in seven steps: Summary and Conclusions&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: -webkit-xxx-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="node-wrapper" style="background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white-left.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 5px; margin-top: 0px; margin-right: 0px; margin-bottom: -10px; margin-left: 0px; position: relative; font-size: 16px; float: left; background-position: 0% 100%; background-repeat: no-repeat no-repeat; "&gt;&lt;div class="node-content" style="clear: both; background-image: url(http://blog.xebia.com/wp-content/themes/xebia_theme/images/box-white.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 10px; font-size: 12px; line-height: 1.1em; float: left; background-position: 100% 100%; background-repeat: no-repeat no-repeat; "&gt;&lt;div class="node-bg-fix" style="width: 671px; float: left; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); padding-top: 10px; padding-right: 35px; padding-bottom: 10px; padding-left: 52px; left: -15px; margin-right: -15px; position: relative; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;div class="view view-article-overview view-id-article_overview view-display-id-page_1 view-dom-id-1"&gt;&lt;div class="view-content"&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;Previous time I blogged about the last step of the seven steps, &lt;a href="http://blog.xebia.com/2009/11/18/web-performance-in-seven-steps-step-7-share-the-responsibility-for-the-whole-chain/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;step 7: Share the responsibility for the whole chain&lt;/a&gt;, a non-technical but rather a communication and behavior thing which I found crucial for success. We now have reached the end of this series and I'll sum up the topics we've dealt with and draw some conclusions.&lt;span id="more-3962"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;In this growing on line world with demanding customers it has become essential that services provided on the web are &lt;a href="http://blog.xebia.com/2009/05/25/web-performance-in-seven-steps/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;always available and always fast enough&lt;/a&gt;. This is often challenging to developers and operators: &lt;a href="http://blog.xebia.com/2009/06/02/web-performance-in-seven-steps-how-performance-problems-manifest-themselves/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;performance problems manifest themselves in various ways&lt;/a&gt;, like in frustration, loss of revenue and disruption of development; and just adding hardware is a doubtful solution.&lt;/p&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;The question is: how can we as developers and operators assure that our web site is always available and always fast? My answer is: you need the right approach. I present that approach: measure, don’t guess; seven steps to performance success. These seven steps are as follows:&lt;/p&gt;&lt;ul style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/06/10/web-performance-in-seven-steps-step-1-define-performance-requirements/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 1: Define performance requirements&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/06/15/web-performance-in-seven-steps-step-2-execute-a-proof-of-concept/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 2: Execute a proof of concept&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/06/29/web-performance-in-seven-steps-step-3-test-representatively/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 3: Test representatively&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/07/22/web-performance-in-seven-steps-step-4-test-continuously/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 4: Test continuously&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/08/31/web-performance-in-seven-steps-step-5-monitor-and-diagnose/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 5: Monitor and diagnose&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/11/02/web-performance-in-seven-steps-step-6-tune-based-on-evidence/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;Step 6: Tune based on evidence&lt;/a&gt;;&lt;/li&gt;&lt;li style="margin-top: 0.15em; margin-right: 0px; margin-bottom: 0.15em; margin-left: 0.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0.2em; padding-left: 1.5em; list-style-type: disc; list-style-image: none; list-style-position: outside; "&gt;&lt;a href="http://blog.xebia.com/2009/11/18/web-performance-in-seven-steps-step-7-share-the-responsibility-for-the-whole-chain/" style="color: rgb(101, 58, 113); text-decoration: underline; font-weight: bold; "&gt;Step 7: Share the responsibility for the whole chain&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;This approach provides a pro-active way of working which my customers appreciate as valuable. It can actually be leveraged to assure high performance all the time, for virtually any on- and off-line application.&lt;/p&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;This blog series has been an interesting journey for me. Some time ago we presented our &lt;a href="http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/" style="color: rgb(101, 58, 113); text-decoration: none; font-weight: bold; "&gt;EJAPP Top 10 of performance problems&lt;/a&gt;. Now we have added this approach of seven steps to help assure your applications performance.&lt;/p&gt;&lt;p style="margin-top: 0.6em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 14px; "&gt;It has worked for us and our customers. How does this all work for you in practice? We’d like to hear your feedback.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-3557590356530441877?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.xebia.com/2010/01/20/web-performance-in-seven-steps-summery-and-conclusions/' title='Web performance in seven steps: Summary and Conclusions'/><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3557590356530441877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3557590356530441877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3557590356530441877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3557590356530441877'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2010/02/web-performance-in-seven-steps-summary.html' title='Web performance in seven steps: Summary and Conclusions'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3975259353155486965</id><published>2009-12-12T07:34:00.000-08:00</published><updated>2009-12-12T11:02:15.720-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Spatial extensions in mySQL'/><title type='text'>Location based DB schema in mySQL</title><content type='html'>&lt;div&gt;&lt;a href="http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html"&gt;http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html&lt;/a&gt;&lt;/div&gt;&lt;a href="http://dev.mysql.com/doc/refman/4.1/en/spatial-extensions.html"&gt;http://dev.mysql.com/doc/refman/4.1/en/spatial-extensions.html&lt;/a&gt;&lt;div&gt;&lt;a href="http://howto-use-mysql-spatial-ext.blogspot.com/"&gt;http://howto-use-mysql-spatial-ext.blogspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://forge.mysql.com/wiki/GIS_Functions#Introduction"&gt;http://forge.mysql.com/wiki/GIS_Functions#Introduction&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://forums.mysql.com/read.php?23,40909,43079#msg-43079"&gt;http://forums.mysql.com/read.php?23,40909,43079#msg-43079&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/7111452516229749637-3975259353155486965?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3975259353155486965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3975259353155486965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3975259353155486965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3975259353155486965'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/12/location-based-db-schema-in-mysql.html' title='Location based DB schema in mySQL'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2727823565182001322</id><published>2009-11-15T23:12:00.000-08:00</published><updated>2009-11-15T23:14:38.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web design'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flex'/><title type='text'>OpenInviter</title><content type='html'>&lt;ul&gt;&lt;li&gt;Easy access to your visitors address book in &lt;strong&gt;all major email providers and social networks&lt;/strong&gt; around the world.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Completely painless and easy way of integrating in your website. It takes virtually not more than &lt;strong&gt;5 minutes&lt;/strong&gt; to have your own &lt;strong&gt;OpenInviter&lt;sup&gt;TM&lt;/sup&gt;&lt;/strong&gt; up and running on your site.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Constant updates&lt;/strong&gt; so that you can sit back and relax and always have access to the latest ways to get your visitor's address book.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;WGET-ready!&lt;/strong&gt; Yes, you read right! OpenInviter&lt;sup&gt;TM&lt;/sup&gt; is the only contacts importer supporting both WGET and cURL as methods of handling requests (since version 1.2) so now you can use it on ANY server you want without the hassle of installing libcurl!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Real time&lt;/strong&gt; access to the service statuses so you can know if there is an email provider that is not working right with OpenInviter&lt;sup&gt;TM&lt;/sup&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://openinviter.com/faq.php"&gt;http://openinviter.com/faq.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2727823565182001322?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2727823565182001322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2727823565182001322' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2727823565182001322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2727823565182001322'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/11/openinviter.html' title='OpenInviter'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2481536688108049418</id><published>2009-11-12T03:12:00.001-08:00</published><updated>2009-11-12T03:12:40.277-08:00</updated><title type='text'>GO: Google Launches Its Own Programming Language</title><content type='html'>&lt;a href=http://mashable.com/2009/11/10/go-google-language/&gt;GO: Google Launches Its Own Programming Language&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Posted using &lt;a href="http://sharethis.com"&gt;ShareThis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2481536688108049418?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2481536688108049418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2481536688108049418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2481536688108049418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2481536688108049418'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/11/go-google-launches-its-own-programming.html' title='GO: Google Launches Its Own Programming Language'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7812294747716390577</id><published>2009-10-26T23:37:00.000-07:00</published><updated>2009-10-27T00:04:31.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Upgrading mySQL from 5.0 to 5.1.on CentOS 5</title><content type='html'>My first attempt was to use yum: &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@linux /] yum info mysql&lt;br /&gt;Loading "fastestmirror" plugin&lt;br /&gt;Loading mirror speeds from cached hostfile&lt;br /&gt;* base: mirror.sanctuaryhost.com&lt;br /&gt;* updates: mirror.fdcservers.net&lt;br /&gt;* addons: mirror.steadfast.net&lt;br /&gt;* extras: mirror.trouble-free.net&lt;br /&gt;Installed Packages&lt;br /&gt;Name   : mysql&lt;br /&gt;Arch   : i386&lt;br /&gt;Version: 5.0.45&lt;br /&gt;Release: 7.el5&lt;br /&gt;Size   : 7.3 M&lt;br /&gt;Repo   : installed&lt;br /&gt;Summary: MySQL client programs and shared libraries.&lt;br /&gt;Description:&lt;br /&gt;MySQL is a multi-user, multi-threaded SQL database server. MySQL is a&lt;br /&gt;client/server implementation consisting of a server daemon (mysqld)&lt;br /&gt;and many different client programs and libraries. The base package&lt;br /&gt;contains the MySQL client programs, the client shared libraries, and&lt;br /&gt;generic MySQL files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Available Packages&lt;br /&gt;Name   : mysql&lt;br /&gt;Arch   : i386&lt;br /&gt;Version: 5.0.77&lt;br /&gt;Release: 3.el5&lt;br /&gt;Size   : 4.8 M&lt;br /&gt;Repo   : base&lt;br /&gt;Summary: MySQL client programs and shared libraries&lt;br /&gt;Description:&lt;br /&gt;MySQL is a multi-user, multi-threaded SQL database server. MySQL is a&lt;br /&gt;client/server implementation consisting of a server daemon (mysqld)&lt;br /&gt;and many different client programs and libraries. The base package&lt;br /&gt;contains the MySQL client programs, the client shared libraries, and&lt;br /&gt;generic MySQL files.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The version 5.0.77 is good, but it not last updated release, which is 5.1.40 up today, which contains an important mysql feature named&lt;br /&gt;Pationing: Enables distributing portions of individual tables across a file system, according to rules which can be set when the table is created. In effect, different portions of a table are stored as separate tables in different locations, but from the user point of view, the partitioned table is still a single table.&lt;br /&gt;&lt;br /&gt;Basically it won’t do an upgrade as the vendor has changed from being MySQL to Sun Microsystems, and as a result I have to do a complete uninstall and re-install manually, first backup your data, stop mysql service and uninstall the current installation( 5.0.45 in my case):&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@16 /]service mysqld stop&lt;br /&gt;[root@16 /]rpm -qa | grep -i '^mysql-'&lt;br /&gt;mysql-server-5.0.45-7.el5&lt;br /&gt;mysql-5.0.45-7.el5&lt;br /&gt;mysql-devel-5.0.45-7.el5&lt;br /&gt;[root@16 /]rpm -e mysql-server-5.0.45-7.el5&lt;br /&gt;[root@16 /]rpm -e mysql-5.0.45-7.el5&lt;br /&gt;[root@16 /]rpm -e mysql-devel-5.0.45-7.el5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now download all the current MySQL packages you need and install all with rpm -i( links from mySQL site):                 &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@linux /usr/local/bin] mkdir mysql_5.1.40&lt;br /&gt;[root@linux /usr/local/bin] cd mysql_5.1.40&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-server-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-client-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-shared-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-shared-compat-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-devel-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-embedded-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-test-community-5.1.40-0.rhel5.i386.rpm/from/http://mirror.mirimar.net/mysql/&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-shared-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-embedded-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-server-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-client-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-test-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] rpm -i MySQL-devel-community-5.1.40-0.rhel5&lt;br /&gt;[root@linux /mysql_5.1.40] mysql_upgrade&lt;br /&gt;[root@linux /mysql_5.1.40] service mysql start&lt;br /&gt;[root@linux /mysql_5.1.40] mysqladmin -V&lt;br /&gt; mysqladmin  Ver 8.42 Distrib 5.1.40, for pc-linux-gnu on i686&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7812294747716390577?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7812294747716390577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7812294747716390577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7812294747716390577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7812294747716390577'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/10/upgrading-mysql-on-centos-5.html' title='Upgrading mySQL from 5.0 to 5.1.on CentOS 5'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-9115912606750624788</id><published>2009-10-19T06:01:00.000-07:00</published><updated>2009-10-19T06:04:26.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='AWS'/><title type='text'>The Cloud Dilemma for Developers( From Tikal Community Event)</title><content type='html'>Introduction to Cloud Computing by Yanai Franchi&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/grVLgaeCUQI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;Google App Engine Intro By Andrew Skiba&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/grVLgab5dAI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;Amazon AWS Case Study by: Dudi Landau , “Thomson Reuters", "ClearForest CTO”&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/grVLgafzKgI" type="application/x-shockwave-flash" width="480" height="380" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-9115912606750624788?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/9115912606750624788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=9115912606750624788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9115912606750624788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9115912606750624788'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/10/cloud-dilemma-for-developers-from-tikal.html' title='The Cloud Dilemma for Developers( From Tikal Community Event)'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5614810041532172522</id><published>2009-10-03T04:13:00.001-07:00</published><updated>2009-10-03T04:13:09.649-07:00</updated><title type='text'>Automated Deployment with Maven - going the whole nine yards</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px;text-align:left" id="__ss_1934771"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/wakaleo/automated-deployment-with-maven-going-the-whole-nine-yards" title="Automated Deployment with Maven - going the whole nine yards"&gt;Automated Deployment with Maven - going the whole nine yards&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automateddeployment-090831204434-phpapp01&amp;stripped_title=automated-deployment-with-maven-going-the-whole-nine-yards" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=automateddeployment-090831204434-phpapp01&amp;stripped_title=automated-deployment-with-maven-going-the-whole-nine-yards" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/wakaleo"&gt;wakaleo&lt;/a&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/7111452516229749637-5614810041532172522?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5614810041532172522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5614810041532172522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5614810041532172522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5614810041532172522'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/10/automated-deployment-with-maven-going.html' title='Automated Deployment with Maven - going the whole nine yards'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-852604314199205575</id><published>2009-09-09T02:07:00.000-07:00</published><updated>2009-09-09T02:08:07.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>A Watercolor Film about the Evolution of Life</title><content type='html'>&lt;object width="400" height="320"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6130123&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6130123&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6130123"&gt;A Record Of Life&lt;/a&gt; from &lt;a href="http://vimeo.com/owengatley"&gt;Owen Gatley and Luke Jinks&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-852604314199205575?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/852604314199205575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=852604314199205575' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/852604314199205575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/852604314199205575'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/09/watercolor-film-about-evolution-of-life.html' title='A Watercolor Film about the Evolution of Life'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2475223404109188276</id><published>2009-08-27T02:51:00.000-07:00</published><updated>2009-08-27T02:52:36.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Real World Web: Performance &amp; Scalability</title><content type='html'>&lt;a title="View Real World Web:  Performance &amp;amp;amp;  Scalability on Scribd" href="http://www.scribd.com/doc/2569319/Real-World-Web-Performance-Scalability" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Real World Web:  Performance &amp;amp;  Scalability&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_334055230172589" name="doc_334055230172589" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%" &gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=2569319&amp;access_key=key-hmtv7al4b6kq08y533b&amp;page=1&amp;version=1&amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=2569319&amp;access_key=key-hmtv7al4b6kq08y533b&amp;page=1&amp;version=1&amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_334055230172589_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle"  height="500" width="100%"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2475223404109188276?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2475223404109188276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2475223404109188276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2475223404109188276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2475223404109188276'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/real-world-web-performance-scalability.html' title='Real World Web: Performance &amp; Scalability'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8797405070176096995</id><published>2009-08-23T02:07:00.000-07:00</published><updated>2009-08-23T02:12:05.475-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>Best GWT widget library(by stackoverflow)</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;a href="http://code.google.com/webtoolkit/"&gt;Default&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://extjs.com/products/gxt/"&gt;EXT-GWT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gwt.components.googlepages.com/"&gt;GWT Components Library&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gwt-ext/"&gt;GWT-EXT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gwt-widget.sourceforge.net/"&gt;GWT Widget Library&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gwtiger.org/"&gt;GWTiger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/rocket-gwt/"&gt;Rocket GWT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/tatami/"&gt;Dojo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/smartgwt/" style="text-decoration: none;"&gt;SmartGWT&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;a href="http://stackoverflow.com/questions/867451/best-gwt-widget-library"&gt;Original post.&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/7111452516229749637-8797405070176096995?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8797405070176096995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8797405070176096995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8797405070176096995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8797405070176096995'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/best-gwt-widget-libraryby-stackoverflow.html' title='Best GWT widget library(by stackoverflow)'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6759145502527786890</id><published>2009-08-19T06:21:00.000-07:00</published><updated>2009-08-19T06:24:17.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java profilers'/><category scheme='http://www.blogger.com/atom/ns#' term='java benchmarks'/><title type='text'>Benchmarks in java</title><content type='html'>&lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp12214/"&gt;First one&lt;/a&gt; deals with all the nasty and important details one has to consider to start benchmarking (compiler optimizations, JVM specifics, etc) and gives an example of how they can bite you in your behind. &lt;a href="http://www.ibm.com/developerworks/java/library/j-jtp02225.html"&gt;Second one&lt;/a&gt; is a real-life example of an attempt of performance analysis that at first glance appears reasonable. After a close look it turns out to have tons of problems and flaws that basically obscure the intended measurements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6759145502527786890?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6759145502527786890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6759145502527786890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6759145502527786890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6759145502527786890'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/benchmarks-in-java.html' title='Benchmarks in java'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5354951489532988401</id><published>2009-08-06T07:10:00.000-07:00</published><updated>2009-08-06T07:11:18.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Approaching Scalability, and Building a Biz on Hadoop, HBase, and Open Source Distributed Computing</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_1778024"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/lusciouspear/building-a-business-on-hadoop-hbase-and-open-source-distributed-computing" title="Building a Business on Hadoop, HBase, and Open Source Distributed Computing"&gt;Building a Business on Hadoop, HBase, and Open Source Distributed Computing&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bradfordstephens-opensourcedistributedcomputingoscon2009-090727231307-phpapp01&amp;stripped_title=building-a-business-on-hadoop-hbase-and-open-source-distributed-computing" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=bradfordstephens-opensourcedistributedcomputingoscon2009-090727231307-phpapp01&amp;stripped_title=building-a-business-on-hadoop-hbase-and-open-source-distributed-computing" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/lusciouspear"&gt;Bradford Stephens&lt;/a&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/7111452516229749637-5354951489532988401?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5354951489532988401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5354951489532988401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5354951489532988401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5354951489532988401'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/approaching-scalability-and-building.html' title='Approaching Scalability, and Building a Biz on Hadoop, HBase, and Open Source Distributed Computing'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7171338555422156586</id><published>2009-08-05T13:23:00.000-07:00</published><updated>2009-08-05T22:57:19.448-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business intellegence'/><title type='text'>The Best of Business Intelligence: Innovation at the Fringe</title><content type='html'>&lt;a href="http://www.juiceanalytics.com/writing/best-business-intelligence/"&gt;http://www.juiceanalytics.com/writing/best-business-intelligence/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7171338555422156586?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7171338555422156586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7171338555422156586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7171338555422156586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7171338555422156586'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/best-of-business-intelligence.html' title='The Best of Business Intelligence: Innovation at the Fringe'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7144056995271553107</id><published>2009-08-05T12:35:00.001-07:00</published><updated>2009-08-05T22:52:29.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='data mining'/><category scheme='http://www.blogger.com/atom/ns#' term='good data'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming concepts'/><title type='text'>Good Data Architecture Overview at Cloud Expo</title><content type='html'>&lt;img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNDk1Mzc2NTYyODAmcHQ9MTI*OTUzNzY2MDcxOCZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89ZjM3MGE2YjlmNWJjNDYzOWEwMjMwNjUyZGQ4ZjNiZDAmb2Y9MA==.gif" /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1459139"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/zsvoboda/good-data" title="Good Data: Collaborative Analytics On Demand"&gt;Good Data: Collaborative Analytics On Demand&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gooddata-cloudexpo2-090519103254-phpapp01&amp;stripped_title=good-data" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gooddata-cloudexpo2-090519103254-phpapp01&amp;stripped_title=good-data" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/zsvoboda"&gt;zsvoboda&lt;/a&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/7111452516229749637-7144056995271553107?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7144056995271553107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7144056995271553107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7144056995271553107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7144056995271553107'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/good-data-architecture-overview-at_05.html' title='Good Data Architecture Overview at Cloud Expo'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6726789969666524427</id><published>2009-08-05T12:28:00.001-07:00</published><updated>2009-08-05T22:55:21.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><title type='text'>Web 20 Business Models</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_704334"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/reynolds/web-20-business-models-presentation" title="Web 20 Business Models"&gt;Web 20 Business Models&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=web-20-business-models-1225341206538880-8&amp;stripped_title=web-20-business-models-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=web-20-business-models-1225341206538880-8&amp;stripped_title=web-20-business-models-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/reynolds"&gt;reynolds&lt;/a&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/7111452516229749637-6726789969666524427?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6726789969666524427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6726789969666524427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6726789969666524427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6726789969666524427'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/08/good-data-architecture-overview-at.html' title='Web 20 Business Models'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6847636822043110677</id><published>2009-07-26T07:38:00.001-07:00</published><updated>2009-07-26T07:38:56.585-07:00</updated><title type='text'>OpenCV + Java + Linux</title><content type='html'>&lt;a href="http://walkintothefuture.blogspot.com/2009/04/opencv-java-linux.html"&gt;OpenCV + Java + Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shared via &lt;a href="http://addthis.com"&gt;AddThis&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6847636822043110677?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6847636822043110677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6847636822043110677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6847636822043110677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6847636822043110677'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/opencv-java-linux.html' title='OpenCV + Java + Linux'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7468975144229891287</id><published>2009-07-25T11:33:00.000-07:00</published><updated>2009-07-25T11:36:31.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java framework review'/><category scheme='http://www.blogger.com/atom/ns#' term='WEB4J'/><title type='text'>WEB4J. Because simple is beautiful.</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana; "&gt;&lt;p&gt;The important things about WEB4J are :&lt;img class="photo" width="300" height="300" src="http://www.web4j.com/images/ovum.jpg" alt="Graphic" style="border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); margin-top: 1em; margin-bottom: 1em; margin-left: 1em; margin-right: 1em; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; float: right; " /&gt;&lt;/p&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li&gt;it's an &lt;b&gt;open source, full-stack Java web app framework&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it let's you build a &lt;b&gt;browser front-end to a relational database&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it's &lt;b&gt;&lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#Small" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;small&lt;/a&gt;&lt;/b&gt;, and has a &lt;b&gt;&lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#Philosophy" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;philosophy&lt;/a&gt; of deep simplicity and minimalism&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it &lt;b&gt;lets you put SQL in &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#SqlFiles" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;plain &lt;tt&gt;.sql&lt;/tt&gt; text files&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it &lt;b&gt;lets you implement forms &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#FormsInHtml" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;with plain old HTML&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it can &lt;b&gt;significantly boost your productivity&lt;/b&gt; compared to other tools&lt;/li&gt;&lt;li&gt;it &lt;b&gt;allows package-by-feature&lt;/b&gt;, where closely related items are placed in &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#SameDirectory" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;the same directory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#HackerProtection" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;protects you from common hacks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it has &lt;b&gt;&lt;em&gt;no&lt;/em&gt; reliance on javascript&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it has &lt;b&gt;&lt;em&gt;no&lt;/em&gt; custom annotations&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it has &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#NoXMLFiles" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;&lt;b&gt;&lt;em&gt;no&lt;/em&gt; custom .xml files&lt;/b&gt;&lt;/a&gt; (only &lt;tt&gt;web.xml&lt;/tt&gt; is used)&lt;/li&gt;&lt;li&gt;it has &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#NoORMMapping" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;&lt;b&gt;&lt;em&gt;no&lt;/em&gt; object-relational mapping&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it can be used with &lt;b&gt;any relational database&lt;/b&gt; that has a JDBC driver&lt;/li&gt;&lt;li&gt;it &lt;b&gt;lets your Model Objects be &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=29" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;immutable&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it &lt;b&gt;lets your Model Objects be &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=209" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;responsible for their own validation&lt;/a&gt;&lt;/b&gt; (as they should be)&lt;/li&gt;&lt;li&gt;it &lt;b&gt;lets your Model Objects avoid the &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=84" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;Java Beans anti-pattern&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it has &lt;b&gt;nice &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#BuildingBlockClasses" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;building block&lt;/a&gt; classes&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it uses a &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#Simple" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;minimal toolset&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it &lt;b&gt;doesn't take you long to learn&lt;/b&gt; (and you don't need to buy a big fat book)&lt;/li&gt;&lt;li&gt;it uses &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#ConventionOverConfiguration" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;convention over configuration&lt;/a&gt; in several important ways&lt;/li&gt;&lt;li&gt;it makes your &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#TypicalClasses" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;application classes simple&lt;/a&gt;, and easy to maintain&lt;/li&gt;&lt;li&gt;it requires &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#MinimalConfiguration" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;minimal configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#ThreadSafety" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;doesn't impose thread-safety constraints&lt;/a&gt; on your classes&lt;/li&gt;&lt;li&gt;it lets multilingual apps have &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#SameAsUnilingual" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;almost the same style as a single language app&lt;/a&gt;&lt;/li&gt;&lt;li&gt;it lets your &lt;b&gt;apps assist in their own &lt;a href="http://www.web4j.com/Java_Web_Application_Framework_Overview.jsp#SelfTranslation" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;translation&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it lets you &lt;b&gt;place translations in the database&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it lets you &lt;b&gt;avoid ResourceBundle and &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=208" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;its defects&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;it allows apps to share a &lt;a href="http://www.web4j.com/UserGuide.jsp#FakeSystemClock" style="color: rgb(0, 100, 26); font-weight: bold; text-decoration: none; "&gt;fake system clock&lt;/a&gt; with the framework, so they remain in sync&lt;/li&gt;&lt;li&gt;it starts up quickly&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-10-2008/jw-10-web4j.html?page=1"&gt;Introduction to WEB4J by JavaWorld&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7468975144229891287?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7468975144229891287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7468975144229891287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7468975144229891287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7468975144229891287'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/web4j-because-simple-is-beautiful.html' title='WEB4J. Because simple is beautiful.'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-762194891452647462</id><published>2009-07-25T11:10:00.000-07:00</published><updated>2009-07-25T11:43:51.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Face recognition in Java'/><title type='text'>faint - The Face Annotation Interface</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:Arial;"&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This project is a flexible Java framework for face detection and face recognition technologies, that is based on different plugin and filter types. A suitable graphical interface can be used to set up pipelines for detection and recognition by combining these plugins and filters. Moreover an integrated photo browser allows users to apply the face detection and recognition process on personal images.&lt;/p&gt;&lt;img class="alignright" src="http://faint.sourceforge.net/screenshot_small.jpg" alt="" style="border-top-width: 0pt; border-right-width: 0pt; border-bottom-width: 0pt; border-left-width: 0pt; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; margin-top: 12pt; margin-right: 12pt; margin-bottom: 12pt; margin-left: 12pt; width: 401px; height: 301px; float: right; " /&gt;&lt;ol id="mozToc"&gt;&lt;li&gt;&lt;a href="http://faint.sourceforge.net/#mozTocId591198"&gt;Project Details&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://faint.sourceforge.net/#mozTocId22682"&gt;Download and Launch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://faint.sourceforge.net/#mozTocId837572"&gt;Demo Videos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://faint.sourceforge.net/#mozTocId461090"&gt;Developer Guide&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&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;br /&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;br /&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;br /&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;a href="http://technoroy.blogspot.com/2008/06/faint-search-for-faces.html"&gt;Usage example&lt;/a&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;br /&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;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-762194891452647462?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/762194891452647462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=762194891452647462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/762194891452647462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/762194891452647462'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/faint-face-annotation-interface.html' title='faint - The Face Annotation Interface'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6546431453873994493</id><published>2009-07-25T11:04:00.000-07:00</published><updated>2009-07-25T11:09:18.839-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nVidia CUDA'/><title type='text'>nVidia CUDA</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: 12px; line-height: 16px; "&gt;&lt;div&gt;&lt;div&gt;NVIDIA® CUDA™ technology leverages the massively parallel processing power of NVIDIA GPUs. The CUDA architecture is a revolutionary parallel computing architecture that delivers the performance of NVIDIA’s world-renowned graphics processor technology to general purpose GPU Computing. Applications that run on the CUDA architecture can take advantage of an installed base of over one hundred million CUDA-enabled GPUs in desktop and notebook computers, professional workstations, and supercomputer clusters.&lt;/div&gt;&lt;div&gt;With the CUDA architecture and tools, developers are achieving dramatic speedups in fields such as medical imaging and natural resource exploration, and creating breakthrough applications in areas such as image recognition and real-time HD video playback and encoding. CUDA enables this unprecedented performance via standard APIs such as the soon to be released OpenCL™ and DirectX® Compute, and high level programming languages such as C/C++, Fortran, Java, Python, and the Microsoft .NET Framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="http://www.nvidia.com/object/cuda_learn.html"&gt;CUDA Developer SDK&lt;/a&gt; provides examples with source code to help you get started with CUDA. Examples include:&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Parallel bitonic sort&lt;/li&gt;&lt;li&gt;Matrix multiplication&lt;/li&gt;&lt;li&gt;Matrix transpose&lt;/li&gt;&lt;li&gt;Performance profiling using timers&lt;/li&gt;&lt;li&gt;Parallel prefix sum (scan) of large arrays&lt;/li&gt;&lt;li&gt;Image convolution&lt;/li&gt;&lt;li&gt;1D DWT using Haar wavelet&lt;/li&gt;&lt;li&gt;OpenGL and Direct3D graphics interoperation examples&lt;/li&gt;&lt;li&gt;CUDA BLAS and FFT library usage examples&lt;/li&gt;&lt;li&gt;CPU-GPU C- and C++-code integration&lt;/li&gt;&lt;li&gt;Binomial Option Pricing&lt;/li&gt;&lt;li&gt;Black-Scholes Option Pricing&lt;/li&gt;&lt;li&gt;Monte-Carlo Option Pricing&lt;/li&gt;&lt;li&gt;Parallel Mersenne Twister (random number generation)&lt;/li&gt;&lt;li&gt;Parallel Histogram&lt;/li&gt;&lt;li&gt;Image Denoising&lt;/li&gt;&lt;li&gt;Sobel Edge Detection Filter&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6546431453873994493?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6546431453873994493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6546431453873994493' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6546431453873994493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6546431453873994493'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/nvidia-cuda.html' title='nVidia CUDA'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2753242120906317645</id><published>2009-07-19T00:16:00.000-07:00</published><updated>2009-07-19T00:19:16.386-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Heap Analysis Tool'/><title type='text'>HAT -- The Java Heap Analysis Tool</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Explanations and examples could found &lt;a href='https://hat.dev.java.net/doc/README.html'&gt;here&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2753242120906317645?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2753242120906317645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2753242120906317645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2753242120906317645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2753242120906317645'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/hat-java-heap-analysis-tool.html' title='HAT -- The Java Heap Analysis Tool'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5869615793069789588</id><published>2009-07-09T05:35:00.000-07:00</published><updated>2009-07-09T05:47:59.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux tunining'/><category scheme='http://www.blogger.com/atom/ns#' term='linux utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux tips'/><title type='text'>Tweaking hard disk on Linux</title><content type='html'>&lt;pre name="code" class="java"&gt; &lt;br /&gt;hdparm -Tt /dev/hda&lt;br /&gt;&lt;br /&gt;/dev/hda:&lt;br /&gt;Timing buffer-cache reads:   128 MB in  1.34 seconds =95.52 MB/sec&lt;br /&gt;Timing buffered disk reads:  64 MB in 17.86 seconds = 3.58 MB/sec&lt;br /&gt;&lt;br /&gt;hdparm /dev/hda&lt;br /&gt;&lt;br /&gt;/dev/hda:&lt;br /&gt;multcount    =  0 (off)&lt;br /&gt;I/O support  =  0 (default 16-bit)&lt;br /&gt;unmaskirq    =  0 (off)&lt;br /&gt;using_dma    =  0 (off)&lt;br /&gt;keepsettings =  0 (off)&lt;br /&gt;nowerr       =  0 (off)&lt;br /&gt;readonly     =  0 (off)&lt;br /&gt;readahead    =  8 (on)&lt;br /&gt;geometry     = 1870/255/63, sectors = 30043440, start = 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    &lt;span style="font-weight: bold;"&gt;multcount&lt;/span&gt;: Short for multiple sector count. This controls how many sectors are fetched from the disk in a single I/O interrupt. Almost all modern IDE drives support this. The man page claims: when this feature is enabled, it typically reduces operating system overhead for disk I/O by 30-50%. On many systems, it also provides increased data throughput of anywhere from 5% to 50%.&lt;/li&gt;&lt;li&gt;     &lt;span style="font-weight: bold;"&gt;I/O support&lt;/span&gt;: This is a big one. This flag controls how data is passed from the PCI bus to the controller. Almost all modern controller chipsets support mode 3, or 32-bit mode w/sync. Some even support 32-bit async. Turning this on will almost certainly double your throughput (see below.)&lt;/li&gt;&lt;li&gt;     &lt;span style="font-weight: bold;"&gt;unmaskirq&lt;/span&gt;: Turning this on will allow Linux to unmask other interrupts while processing a disk interrupt. What does that mean? It lets Linux attend to other interrupt-related tasks (i.e., network traffic) while waiting for your disk to return with the data it asked for. It should improve overall system response time, but be warned: Not all hardware configurations will be able to handle it. See the manpage.&lt;/li&gt;&lt;li&gt;     &lt;span style="font-weight: bold;"&gt;using_dma&lt;/span&gt;: DMA can be a tricky business. If you can get your controller and drive using a DMA mode, do it. But I have seen more than one machine hang while playing with this option.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt; &lt;br /&gt;hdparm -X66 -d1 -u1 -m16 -c3 /dev/hda:&lt;br /&gt;setting 32-bit I/O support flag to 3&lt;br /&gt;setting multcount to 16&lt;br /&gt;setting unmaskirq to 1 (on)&lt;br /&gt;setting using_dma to 1 (on)&lt;br /&gt;setting xfermode to 66 (UltraDMA mode2)&lt;br /&gt;multcount    = 16 (on)&lt;br /&gt;I/O support  =  3 (32-bit w/sync)&lt;br /&gt;unmaskirq    =  1 (on)&lt;br /&gt;using_dma    =  1 (on)&lt;br /&gt;&lt;br /&gt;hdparm -tT /dev/hda&lt;br /&gt;&lt;br /&gt;/dev/hda:&lt;br /&gt;Timing buffer-cache reads:   128 MB in  1.43 seconds = 89.51 MB/sec&lt;br /&gt;Timing buffered disk reads:  64 MB in  3.18 seconds = 20.13 MB/sec&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-5869615793069789588?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5869615793069789588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5869615793069789588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5869615793069789588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5869615793069789588'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/tweaking-hard-disk-on-linux.html' title='Tweaking hard disk on Linux'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8439145610050872112</id><published>2009-07-06T05:00:00.000-07:00</published><updated>2009-07-06T05:01:13.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Semantic web'/><title type='text'>Semantic Applications For Web</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_1601417"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/yuvalgo/alphageeks-meetup-semantic-applications-for-web" title="Alphageeks meetup - Semantic Applications For Web"&gt;Alphageeks meetup - Semantic Applications For Web&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=semanticapplicationsforweb-090618003014-phpapp01&amp;stripped_title=alphageeks-meetup-semantic-applications-for-web" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=semanticapplicationsforweb-090618003014-phpapp01&amp;stripped_title=alphageeks-meetup-semantic-applications-for-web" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/yuvalgo"&gt;yuvalgo&lt;/a&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/7111452516229749637-8439145610050872112?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8439145610050872112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8439145610050872112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8439145610050872112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8439145610050872112'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/semantic-applications-for-web.html' title='Semantic Applications For Web'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1844850864599444382</id><published>2009-07-06T04:09:00.000-07:00</published><updated>2009-07-06T04:15:18.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Scaling Hibernate</title><content type='html'>&lt;a href="http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross"&gt;http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-1844850864599444382?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/1844850864599444382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=1844850864599444382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1844850864599444382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1844850864599444382'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/scaling-hibernate.html' title='Scaling Hibernate'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4214869876783047203</id><published>2009-07-04T11:21:00.000-07:00</published><updated>2009-07-04T12:18:45.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse 3.5'/><title type='text'>An Eclipse 3.5 Galileo is here !</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;h1 style="font-family: arial, sans-serif; font-size: 1.7em; font-weight: normal; height: 33px; list-style-type: none; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;An Eclipse Galileo 3.5&lt;/h1&gt;&lt;p   style="  margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0em; padding-right: 0em; padding-bottom: 1em; padding-left: 4px; font-family:arial, sans-serif;font-size:0.76em;"&gt;&lt;em style="font-family: verdana, sans-serif; font-weight: bold; font-size: 1.1em; font-style: normal; color: rgb(102, 102, 102); "&gt;What's new in the latest version of the open source multipurpose IDE and application platform&lt;/em&gt;&lt;/p&gt;&lt;p face="arial, sans-serif" size="0.76em" style="  margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0em; padding-right: 0em; padding-bottom: 1em; padding-left: 4px; "&gt;&lt;span class="Apple-style-span"    style="font-family:verdana;font-size:100%;color:#666666;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style="color: rgb(0, 0, 0);   font-weight: normal; font-family:'Times New Roman';font-size:16px;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"    style="font-family:verdana;font-size:100%;color:#666666;"&gt;&lt;b&gt;&lt;p style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Galileo is the simultaneous release of 33 major Eclipse projects. The Eclipse Foundation states that the Galileo release train consists of 33 projects. However, some are subprojects that are rolled up into projects, and not all projects are highlighted in the Eclipse Foundation's marketing push. Regardless, Galileo represents the largest single release of new technology to date.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The important thing to remember about Galileo in particular and Eclipse release trains in general is that even though it's a simultaneous release, it doesn't mean these projects are unified. Each project is a separate open source project, operating with its own project leadership, its own committers, and its own development plan. The release train concept is designed to provide a transparent and predictable development cycle.&lt;/span&gt;&lt;/p&gt;&lt;p   style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  font-family:arial, sans-serif;font-size:0.76em;"&gt;&lt;a name="1.Get Galileo|outline"&gt;&lt;span class="atitle" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Get Galileo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p   style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  font-family:arial, sans-serif;font-size:0.76em;"&gt;There are two main ways to get Galileo. The first — and recommended — way is to just grab a package relevant to you. The other way to get Galileo is to use an update site.&lt;/p&gt;&lt;p   style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  font-family:arial, sans-serif;font-size:0.76em;"&gt;&lt;a name="N1006B"&gt;&lt;span class="smalltitle" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Packages&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p   style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  font-family:arial, sans-serif;font-size:0.76em;"&gt;Go to the Eclipse &lt;a href="http://www.eclipse.org/downloads/packages/" style="color: rgb(76, 110, 148); "&gt;Galileo Packages site&lt;/a&gt;. The packages site contains nine pre-bundled versions of Galileo specific for your needs.&lt;/p&gt;&lt;p   style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  font-family:arial, sans-serif;font-size:0.76em;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Times New Roman';font-size:16px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p face="arial, sans-serif" size="0.76em" style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  "&gt;&lt;a name="N10089"&gt;&lt;span class="smalltitle" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Galileo update site&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p face="arial, sans-serif" size="0.76em" style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  "&gt;To get Galileo using an update site, &lt;a href="http://www.eclipse.org/galileo/" style="color: rgb(153, 102, 153); "&gt;download the Eclipse V3.5 SDK&lt;/a&gt;. Once this is done, you can launch Eclipse and access the software-update mechanism via &lt;b  style=" font-weight: bold; font-size:1em;"&gt;Help &gt; Software Updates&lt;/b&gt; (see Figure 2). Enter the proper Galileo update site information, if it isn't already available as the Galileo Discovery Site. Once you are connected to the Galileo update site, you should see the list of available features that are part of the Galileo release train. It's as simple as that. Once you're connected, you can simply choose what features to install into your Eclipse.&lt;/p&gt;&lt;br /&gt;&lt;a name="N1009B"&gt;&lt;b style="font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif; "&gt;Figure 2. Software updates&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;img alt="" height="356" src="http://www.ibm.com/developerworks/opensource/library/os-eclipse-galileo/figure2.jpg" width="570" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; " /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"    style="font-family:verdana;font-size:100%;color:#666666;"&gt;&lt;b&gt;&lt;p&gt;&lt;/p&gt;&lt;p face="arial, sans-serif" size="0.76em" style=" margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;  "&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Times New Roman';font-size:16px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial, sans-serif; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; "&gt;&lt;a name="2.The projects|outline"&gt;&lt;span class="atitle"  style=" font-weight: bold; font-size:1.5em;"&gt;The projects&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-family: arial, sans-serif; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; "&gt;The Eclipse ecosystem is a large and sometimes intimidating place. About 100 projects are being overseen by the Eclipse Foundation, and the Galileo release only represents a snapshot of that. The Galileo release train showcases Eclipse technology and helps adopters integrate Eclipse technology into their products. For more information about the Galileo projects, see the links below.&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;table cellpadding="0" cellspacing="0" class="data-table-1" style="border-top-width: 0px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: initial; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: initial; border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); margin-bottom: 8px; width: 708px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: center; font-family:arial, sans-serif;font-size:0.7em;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" class="data-table-1" style="border-top-width: 0px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: initial; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: initial; border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); margin-bottom: 8px; width: 696px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: center; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;b  style=" font-weight: bold; font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Project&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: center; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;b size="1em" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Synopsis&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: center; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;b style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Web site&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Accessibility Tools Framework (ACTF)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Build applications and content for people with disabilities&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/actf/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/actf/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Business Intelligence and Reporting Tools (BIRT)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Generate reports&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/birt" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/birt&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;C/C++ Development Tooling (CDT)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code C/C++&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/cdt" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/cdt&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Data Tools Platform (DTP)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Extensible frameworks and tools&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/datatools/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/datatools/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Eclipse Modeling Framework (EMF)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Modeling framework and code generation facility&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/modeling/emf/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/modeling/emf/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Eclipse Packaging Project&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Create, download, and install packages&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/epp/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/epp/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Eclipse Platform&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Core frameworks and services&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/platform/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/platform/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Equinox&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Implementation of the OSGi R4 core framework spec&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/equinox/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/equinox/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Graphical Editor Framework (GEF)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Develop graphical applications&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/gef/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/gef/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Graphical Modeling Framework (GMF)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Develop graphical editors&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/gmf/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/gmf/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Java™ Workflow Tooling (JWT)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Toolset for workflows and processes from design to monitoring&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;a href="http://www.eclipse.org/jwt/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/jwt/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Java Development Tools (JDT)&lt;/span&gt;&lt;/td&gt;&lt;td   style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; font-family:arial, sans-serif;font-size:1em;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Develop Java applications&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/jdt/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/jdt/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Java Emitter Templates (M2T JET)&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Generate textual artifacts from models&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/modeling/m2t/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/modeling/m2t/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Memory Analyzer&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Find memory leaks and reduce memory consumption&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/mat/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/mat/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mobile Tools for Java (MTJ)&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Extend Eclipse frameworks to support mobile device Java application development&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/dsdp/mtj/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/dsdp/mtj/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mylyn&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Monitors your work to make the GUI relevant to what you're doing&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/mylyn/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/mylyn/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;PHP Development Tools (PDT)&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code PHP&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;a href="http://www.eclipse.org/pdt/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/pdt/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" size="1em" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top;  text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Rich Ajax Platform (RAP)&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code Ajax&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;a href="http://www.eclipse.org/rap/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/rap/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SCA Tools&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Tools for the Service Component Architecture standard&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;a href="http://www.eclipse.org/stp/sca/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/stp/sca/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SOA Tools&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code Service-Oriented Architecture apps&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;a href="http://www.eclipse.org/stp/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/stp/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Swordfish&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Extensible SOA framework&lt;/span&gt;&lt;/td&gt;&lt;td  style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; font-family:arial, sans-serif;"&gt;&lt;a href="http://www.eclipse.org/swordfish/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/swordfish/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Target Management&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Configure and manage remote systems&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;a href="http://www.eclipse.org/dsdp/tm/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/dsdp/tm/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Test and Performance Tools Platform Project (TPTP)&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Tooling for profiling and testing applications&lt;/span&gt;&lt;/td&gt;&lt;td face="arial, sans-serif" style=" border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;a href="http://www.eclipse.org/tptp/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/tptp/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Textual Modeling Framework (Xtext)&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code external textual DSLs&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;a href="http://www.eclipse.org/modeling/tmf/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/modeling/tmf/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Tools for mobile Linux (TmL)&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code mobile applications&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;a href="http://www.eclipse.org/dsdp/tml/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/dsdp/tml/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Web Tools Platform (WTP)&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Code Web and Java EE applications&lt;/span&gt;&lt;/td&gt;&lt;td style="font-family: arial, sans-serif; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; text-align: left; "&gt;&lt;a href="http://www.eclipse.org/webtools/" style="color: rgb(76, 110, 148); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://www.eclipse.org/webtools/&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="ibm-alternate-rule" style="clear: both; background-image: url(http://www.ibm.com/i/solid.gif); background-repeat: repeat-x; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); height: 1px; background-position: initial initial; "&gt;&lt;/div&gt;&lt;div class="ibm-alternate-rule" style="clear: both; background-image: url(http://www.ibm.com/i/solid.gif); background-repeat: repeat-x; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); height: 1px; background-position: initial initial; "&gt;&lt;span class="Apple-style-span"   style="font-family:arial;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:12px;"&gt;&lt;span class="Apple-style-span"   style="font-family:'Times New Roman';font-size:130%;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/b&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4214869876783047203?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4214869876783047203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4214869876783047203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4214869876783047203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4214869876783047203'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/eclipse-35-galileo-is-here.html' title='An Eclipse 3.5 Galileo is here !'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6183487841679861686</id><published>2009-07-04T00:22:00.000-07:00</published><updated>2009-07-04T00:23:08.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Developer Days Brazil 2009 - Keynote</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_1654720"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/chanezon/google-developer-days-brazil-2009-keynote" title="Google Developer Days Brazil 2009 -  Keynote"&gt;Google Developer Days Brazil 2009 -  Keynote&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gdd-brazil-keynote-2009-1-090629100131-phpapp01&amp;stripped_title=google-developer-days-brazil-2009-keynote" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gdd-brazil-keynote-2009-1-090629100131-phpapp01&amp;stripped_title=google-developer-days-brazil-2009-keynote" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/chanezon"&gt;chanezon&lt;/a&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/7111452516229749637-6183487841679861686?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6183487841679861686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6183487841679861686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6183487841679861686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6183487841679861686'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/07/google-developer-days-brazil-2009.html' title='Google Developer Days Brazil 2009 - Keynote'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5672037819461843318</id><published>2009-06-30T23:41:00.000-07:00</published><updated>2009-06-30T23:52:12.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database technologies'/><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><title type='text'>Neo4j a graph database</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'Times New Roman';font-size:85%;"  &gt;&lt;span class="Apple-style-span" style="color: rgb(52, 52, 52); text-align: left;font-family:'Lucida Sans';" &gt;Neo4j is a&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong&gt;graph database&lt;/strong&gt;. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs rather than in tables. A graph (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development.&lt;br /&gt;&lt;br /&gt;According &lt;a href="http://en.oreilly.com/oscon2009/public/schedule/detail/8364"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-style: italic;"&gt;Emil Eifrem&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'Times New Roman';font-size:85%;"  &gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); font-style: italic; line-height: 19px;font-family:Arial;" &gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); line-height: 19px;font-family:Arial;" &gt;the neo4j database&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); font-style: italic; line-height: 19px;font-family:Arial;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'Times New Roman';font-size:85%;"  &gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); line-height: 21px;font-family:Arial;" &gt;outperforms relational backends with &gt;1000x for many increasingly important use cases.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://farm3.static.flickr.com/2450/3614560130_aaafa37387.jpg?v=0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-5672037819461843318?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5672037819461843318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5672037819461843318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5672037819461843318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5672037819461843318'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/neo4j-graph-database.html' title='Neo4j a graph database'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4077001236090184795</id><published>2009-06-29T22:47:00.000-07:00</published><updated>2009-06-29T22:50:23.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML/XSD/Schema'/><title type='text'>How to generate XSD schema from XML</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;span style='color: rgb(51, 51, 51); font-family: Tahoma; font-size: 13px; line-height: 16px;' class='Apple-style-span'&gt;&lt;ul&gt;&lt;li&gt;xmlbeans:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-style: none; text-decoration: none; color: rgb(65, 110, 144);' href='http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html#inst2xsd'&gt;http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html#inst2xsd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;online tool:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-style: none; text-decoration: none; color: rgb(65, 110, 144);' href='http://www.flame-ware.com/xml2xsd/'&gt;http://www.flame-ware.com/xml2xsd/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;oxygenxml:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-style: none; text-decoration: none; color: rgb(65, 110, 144);' href='http://www.oxygenxml.com/'&gt;http://www.oxygenxml.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;(eclipse plugin:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-style: none; text-decoration: none; color: rgb(65, 110, 144);' href='http://www.oxygenxml.com/eclipse_plugin.html'&gt;http://www.oxygenxml.com/eclipse_plugin.html&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;stylus studio:&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-style: none; text-decoration: none; color: rgb(65, 110, 144);' href='http://www.stylusstudio.com/autogen_xsd.html'&gt;http://www.stylusstudio.com/autogen_xsd.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;span style='color: rgb(51, 51, 51); font-family: Tahoma; font-size: 13px; line-height: 16px;' class='Apple-style-span'/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4077001236090184795?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4077001236090184795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4077001236090184795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4077001236090184795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4077001236090184795'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/how-to-generate-xsd-schema-from-xml.html' title='How to generate XSD schema from XML'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5578048181985090632</id><published>2009-06-28T06:38:00.000-07:00</published><updated>2009-06-28T06:41:24.011-07:00</updated><title type='text'>How to Exploit Multiple Cores</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Times New Roman&amp;apos;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;span style='color: rgb(73, 73, 73); font-family: Verdana; font-size: 12px; line-height: 20px;' class='Apple-style-span'&gt;&lt;h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Helvetica,Arial,sans-serif; font-size: 19px; line-height: 24px;'&gt;How to Exploit Multiple Cores for Better Performance and Scalability( by Todd Hoff)&lt;/h2&gt;&lt;div style='border-bottom: 1px solid rgb(233, 239, 243); margin: -1.5em -26px 1.5em; padding: 1.5em 26px;' class='node' id='node-706'&gt;&lt;span style='font-size: 0.92em; color: rgb(137, 137, 137);' class='submitted'&gt;&lt;a style='color: rgb(2, 122, 198); text-decoration: none;' title='View user profile.' href='/user/todd-hoff'&gt;&lt;br/&gt;&lt;/a&gt;&lt;/span&gt;&lt;div style='margin: 0.6em 0px;' class='content'&gt;&lt;ul style='margin: 0.5em 0px 1em; padding: 0px;' id='links_weblink_list'&gt;&lt;li style='margin: 0.15em 0px 0.15em 0.5em; padding: 0px 0px 0.2em 1.5em; list-style-type: none; list-style-image: none; background-image: url(http://highscalability.com/themes/garland/images/menu-leaf.gif); background-repeat: no-repeat; background-color: transparent; background-position: 1px 0.35em;'&gt;&lt;a style='color: rgb(2, 122, 198); text-decoration: none;' class='outgoing' title='http://www.infoq.com/presentations/brian-goetz-concurrent-parallel' href='/links/goto/706/517/links_weblink'&gt;Learn How to Exploit Multiple Cores for Better Performance and Scalability (350)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style='margin: 0.6em 0px 1.2em; padding: 0px;'&gt;InfoQueue has this excellent talk by Brian Goetz on the new features being added to&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-bottom: 1px dotted rgb(0, 136, 0); text-decoration: none; color: rgb(2, 122, 198); cursor: help;' href='/tags/java' class='glossary-term'&gt;&lt;acronym title='Java: Java is a programming language originally developed by Sun Microsystems and released in 1995. Java applications are typically compiled to bytecode, although compilation to native machine code is also possible. At runtime, bytecode is usually either interpreted or compiled to native code for execution, although direct hardware execution of bytecode by a Java processor is also possible.&amp;lt;br/&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;p&amp;gt;Java is very popular on the server side because it is free, relatively high performing. has a large number of useful libraries, and great development tools. Websites build using Java generally use application servers and are accessed using servelets.&amp;lt;br/&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;p&amp;gt;http://www.java.com/en/'&gt;Java&lt;/acronym&gt;&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;SE 7 that will allow programmers to fully exploit our massively multi-processor future. While the talk is about Java it's really more general than that and there's a lot to learn here for everyone.&lt;/p&gt;&lt;p style='margin: 0.6em 0px 1.2em; padding: 0px;'&gt;Brian starts with a short, coherent, and compelling explanation of why programmers can't expect to be saved by ever faster CPUs and why we must learn to exploit the strengths of multiple core computers to make our software go faster.&lt;/p&gt;&lt;p style='margin: 0.6em 0px 1.2em; padding: 0px;'&gt;Some techniques for exploiting multiple cores are given in an equally short, coherent, and compelling explanation of why divide and conquer as the secret to multi-core bliss, fork-join, how the Java approach differs from map-reduce, and lots of other juicy topics.&lt;/p&gt;&lt;p style='margin: 0.6em 0px 1.2em; padding: 0px;'&gt;The multi-core "problem" is only going to get worse. Tilera founder Anant Agarwal&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='color: rgb(2, 122, 198); text-decoration: none;' href='http://www.eetimes.com/showArticle.jhtml;?articleID=206105179'&gt;estimates by 2017&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;embedded processors could have 4,096 cores, server CPUs might have 512 cores and desktop chips could use 128 cores. Some disagree saying this is too optimistic, but Agarwal maintains the number of cores will double every 18 months.&lt;/p&gt;&lt;p style='margin: 0.6em 0px 1.2em; padding: 0px;'&gt;An abstract of the talk follows though I would highly recommend watching the whole thing. Brian does a great job.&lt;/p&gt;&lt;h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Helvetica,Arial,sans-serif; font-size: 19px; line-height: 24px;'&gt;Why is Parallelism More Important Now?&lt;/h2&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Coarse grain concurrency was all the rage for Java 5. The hardware reality has changed. The number of cores is increasing so applications must now search for fine grain parallelism (fork-join)&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;As hardware becomes more parallel, more and more cores, software has to look for techniques to find more and more parallelism to keep the hardware busy.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Clock rates have been increasing exponentially over the last 30 years or so. Allowed programmers to be lazy because a faster processor would be released that saved your butt. There wasn't a need to tune programs.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;That wait for faster processor game is up. Around 2003 clock rates stopped increasing. Hit the power wall. Faster processors require more power. Thinner chip conductor lines were required and the thinner lines can't dissipate the increased power without causing overheating which effects the resistance characteristics of the conductors. So you can't keep increasing clock rate.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Fastest Intel CPU 4 or 5 years ago was 3.2 Ghz. Today it's about the same or even slower.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Easier to build 2.6 Ghz or 2.8 Ghz chips. Moore's law wasn't repealed so we can cram more transistors on each wafer. So more processing power could be put on a chip which leads to putting more and more processing cores on a chip. This is multicore.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Multicore systems are the trend. The number of cores will grow at exponential rate for the next 10 years. 4 cores at the low end. The high end 256 (&lt;a style='border-bottom: 1px dotted rgb(0, 136, 0); text-decoration: none; color: rgb(2, 122, 198); cursor: help;' href='/tags/sun' class='glossary-term'&gt;&lt;acronym title='Sun: Sun has one of the best OSes on the market and large selection of servers, storage, and other products that are popular in data centers.&amp;lt;br/&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;p&amp;gt;http://www.sun.com/'&gt;Sun&lt;/acronym&gt;&lt;/a&gt;) and 800 (Azul) core systems.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;More cores per chip instead of faster chips. Moore's law has been redirected to multicore.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The problem is it's harder to make a program go faster on a multicore system. A faster chip will run your program faster. If you have a 100 cores you program won't go faster unless you explicitly design it to take advantage of those chips.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;No free lunch anymore. Must now be able to partition your program so it can run faster by running on multiple cores. And you must be able keep doing that as the number of cores keeps improving.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;We need a way to specify programs so they can be made parallel as topologies change by adding more cores.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;As hardware evolves platforms must evolve to take advantage of the new hardware. Started off with course grain tasks which was sufficient given the number of cores. This approach won't work as the number cores increase.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Must find finer-grained parallelism.&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='border-bottom: 1px dotted rgb(0, 136, 0); text-decoration: none; color: rgb(2, 122, 198); cursor: help;' href='/tags/example' class='glossary-term'&gt;&lt;acronym title='Example: An example website architecture that we can learn from.'&gt;Example&lt;/acronym&gt;&lt;/a&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;sorting and searching data. Opportunities around data. The data can for sorting can be chunked and sorted and the brought together with a merge sort. Searching can be done in parallel by searching subregions of the data and merging the results.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Parallel solutions use more CPU in aggregate because of the coordination needed and that data needs to be handled more than once (merge). But the result is faster because it's done in parallel. This adds business value. Faster is better for humans.&lt;h2 style='margin: 0px; padding: 0px; font-weight: normal; font-family: Helvetica,Arial,sans-serif; font-size: 19px; line-height: 24px;'&gt;What has Java 7 Added to Support Parallelism?&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Example problem is to find the max number from a list.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;The course grained threading approach is to use a thread pool, divide up the numbers, and let the task pool compute the sub problems. A shared task pool is slow as the number increases which forces the work to be more course grained. No way to load balance. Code is ugly. Doesn't match the problem well. The runtime is dominated by how long it takes the longest subtask to run. Had to decide up front how many pieces to divide the problem into.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Solution using divide and conquer. Divide set into pieces recursively until the problem is so small the sequential solution is more efficient. Sort the pieces. Merge the results. 0(n log n), but problem is parallelizable. Scales well and can keep many CPUs busy.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Divide and conquer uses fork-join to fork off subtasks and wait for them to complete and then join the results. A typical thread pool solution is not efficient. Creates too many threads and creating threads are expensive and use a lot of memory.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;This approach portable because it's abstract. It doesn't know how many processors are available It's independent of the topology.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The fork-join pool is optimized for fine grained operations whereas the thread pool is optimized for course grained operations. Best used for problems without IO. Just computations using CPU that tend to fork off sub problems. Allows data to be shared read-only and used across different computations without copying.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;This approach scales nearly linearly with the number of hardware threads.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The goal for fork-join: Avoid context switches; Have as many threads as hardware threads and keep them all busy; Minimize queue lock contention for data structures. Avoid common task queue.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Implementation uses Work-Stealing. Each thread has a work queue that is a double ended queue. Each thread pulls work from the head of queue and processes it. When there's nothing do it steals work from the tail of another queue. No contention for the head because only one thread access it. Rare contention on tail because stealing is infrequent as the stolen work is large which takes them time to process. Process starts with one task. It breaks up the work. Other tasks steal work and start the same process. Load balances without central coordination, few context switches, little coordination.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;The same approach also works for graph traversal, matrix operations, linear algebra, modeling, generate moves and evaluate the result. Latent parallelism can be found in a lot of places once you start looking.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;Support higher level operations like ParallelArray. Can specify filtering, transformation, and aggregation options. Not a generalized in-memory database, but has a very transparent cost model. It's clear how many parallel operations are happening. Can look at the code and quickly know what's a parallel operation so you will know the cost.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Looks like map reduce except this is scaling across a multicore system, one single JVM, whereas map reduce is across a cluster. The strategy is the same: divide and conquer.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Idea is to make specifying parallel operations so easy you wouldn't even think of the serial approach.&lt;/li&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-5578048181985090632?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5578048181985090632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5578048181985090632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5578048181985090632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5578048181985090632'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/how-to-exploit-multiple-cores.html' title='How to Exploit Multiple Cores'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4858847045286317648</id><published>2009-06-23T23:39:00.001-07:00</published><updated>2009-06-23T23:48:02.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Shares Its Need For Speed</title><content type='html'>&lt;a href="http://shar.es/tZBZ"&gt;Google Shares Its Need For Speed&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Posted using &lt;a href="http://sharethis.com/"&gt;ShareThis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4858847045286317648?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4858847045286317648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4858847045286317648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4858847045286317648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4858847045286317648'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/google-shares-its-need-for-speed.html' title='Google Shares Its Need For Speed'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1597254126197998685</id><published>2009-06-23T13:16:00.000-07:00</published><updated>2009-06-23T13:25:20.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Restlet'/><title type='text'>Restlet resources</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.restlet.org/documentation/2.0/images/restlets"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 303px; height: 203px;" src="http://www.restlet.org/documentation/2.0/images/restlets" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.restlet.org/books/documentation_book_definition--20081027-003425/publications/html-one-page/output/index.html#dsy69-restlet"&gt;User guide v1.1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.restlet.org/documentation/1.1/faq#10"&gt;FAQ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.restlet.org/docs_1.2/13-restlet/275-restlet/252-restlet.html"&gt;GAE integration&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.restlet.org/documentation/2.0/tutorial"&gt;Tutorial for v2.0&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.restlet.org/documentation/2.0/images/tutorial01"&gt;&lt;img style="cursor: pointer; width: 221px; height: 192px;" src="http://www.restlet.org/documentation/2.0/images/tutorial01" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.restlet.org/documentation/2.0/images/representations"&gt;&lt;img style="cursor: pointer; width: 299px; height: 229px;" src="http://www.restlet.org/documentation/2.0/images/representations" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/vitam/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/vitam/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-1597254126197998685?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/1597254126197998685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=1597254126197998685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1597254126197998685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1597254126197998685'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/restlet-resources.html' title='Restlet resources'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-601124317365340317</id><published>2009-06-23T11:52:00.000-07:00</published><updated>2009-06-23T13:12:59.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flex'/><title type='text'>Creating Adobe Flex 3 widgets in 5 minutes</title><content type='html'>&lt;h4&gt;&lt;a onclick="OpenWindow('/products/flex/media/flexapp/', 900, 720,'scrollbars=no,resizable=no','flexapp');return false" onkeypress="OpenWindow('/products/flex/media/flexapp/', 900, 720,'scrollbars=no,resizable=no','flexapp');return false" href="http://www.adobe.com/products/flex/media/flexapp/" target="_blank"&gt;See a Flex app created with Flex Builder 3&lt;/a&gt;&lt;/h4&gt;                                  &lt;ul class="link-list"&gt;&lt;li&gt;&lt;a href="http://flex.org/showcase/" class="link-more" target="_blank"&gt;View live Flex apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flex/?view=samples" class="link-more"&gt;See sample Flex apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/products/flex/buzz/customers/saying.html" class="link-more"&gt;See what customers are saying&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Flex in a week:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/videotraining/"&gt;&lt;span style="font-weight: bold;"&gt;http://www.adobe.com/devnet/flex/videotraining/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-601124317365340317?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/601124317365340317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=601124317365340317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/601124317365340317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/601124317365340317'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/creating-adobe-flex-3-widjets-in-5.html' title='Creating Adobe Flex 3 widgets in 5 minutes'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3800631608695181130</id><published>2009-06-23T00:23:00.001-07:00</published><updated>2009-06-23T00:23:13.310-07:00</updated><title type='text'>Intro To Media APIs</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px;text-align:left" id="__ss_489616"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/sachmonkey/intro-to-media-apis?type=presentation" title="Intro To Media APIs"&gt;Intro To Media APIs&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=intro-to-media-apis-1214617186861581-9&amp;stripped_title=intro-to-media-apis" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=intro-to-media-apis-1214617186861581-9&amp;stripped_title=intro-to-media-apis" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;OpenOffice presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/sachmonkey"&gt;Sachin Rekhi&lt;/a&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/7111452516229749637-3800631608695181130?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3800631608695181130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3800631608695181130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3800631608695181130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3800631608695181130'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/intro-to-media-apis.html' title='Intro To Media APIs'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8901301045554171909</id><published>2009-06-16T23:18:00.000-07:00</published><updated>2009-06-16T23:35:29.546-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='java as service on linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><title type='text'>How to control services in linux with chkconfig</title><content type='html'>Linux / Unix Command: chkconfig&lt;br /&gt;&lt;br /&gt;chkconfig - updates and queries runlevel information for system services:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;chkconfig&lt;/b&gt; &lt;b&gt;--list&lt;/b&gt; [&lt;i&gt;name&lt;/i&gt;]&lt;br /&gt;&lt;b&gt;chkconfig&lt;/b&gt; &lt;b&gt;--add&lt;/b&gt; &lt;i&gt;name&lt;/i&gt;&lt;br /&gt;&lt;b&gt;chkconfig&lt;/b&gt; &lt;b&gt;--del&lt;/b&gt; &lt;i&gt;name&lt;/i&gt;&lt;br /&gt;&lt;b&gt;chkconfig&lt;/b&gt; [&lt;b&gt;--level&lt;/b&gt; &lt;i&gt;levels&lt;/i&gt;] &lt;i&gt;name&lt;/i&gt; &amp;lt;&lt;b&gt;on&lt;/b&gt;|&lt;b&gt;off&lt;/b&gt;|&lt;b&gt;reset&lt;/b&gt;&amp;gt;&lt;br /&gt;&lt;b&gt;chkconfig&lt;/b&gt; [&lt;b&gt;--level&lt;/b&gt; &lt;i&gt;levels&lt;/i&gt;] &lt;i&gt;name&lt;/i&gt;&lt;br /&gt;&lt;h2&gt;&lt;span style="font-size:100%;"&gt;DESCRIPTION&lt;/span&gt;&lt;/h2&gt;&lt;b&gt;chkconfig&lt;/b&gt; provides a simple command-line tool for maintaining the /etc/rc[0-6].d directory hierarchy by relieving system administrators of the task of directly manipulating the numerous symbolic links in those directories.&lt;br /&gt;&lt;p&gt;This implementation of &lt;b&gt;chkconfig&lt;/b&gt; was inspired by the &lt;b&gt;chkconfig&lt;/b&gt; command present in the IRIX operating system. Rather than maintaining  configuration information outside of the /etc/rc[0-6].d hierarchy, however, this version directly manages the symlinks in /etc/rc[0-6].d. This leaves all of the configuration information regarding what services &lt;i&gt;init&lt;/i&gt;&lt;br /&gt;starts in a single location. &lt;b&gt;chkconfig&lt;/b&gt; has five distinct functions: adding new services for&lt;br /&gt;management, removing services from management, listing the current startup information for services, changing the startup information for services, and checking the startup state of a particular service. When &lt;b&gt;chkconfig&lt;/b&gt; is run without any options, it displays usage&lt;br /&gt;information.  If only a service name is given, it checks to see if the service is configured to be started in the current runlevel. If it is, &lt;b&gt;chkconfig&lt;/b&gt; returns true; otherwise it returns false. The&lt;br /&gt;&lt;b&gt;--level&lt;/b&gt; option may be used to have &lt;b&gt;chkconfig&lt;/b&gt; query an alternative runlevel rather than the current one. If one of &lt;b&gt;on&lt;/b&gt;, &lt;b&gt;off&lt;/b&gt;, or reset is specified after the service name, &lt;b&gt;chkconfig&lt;/b&gt; changes the startup information for the specified service.  The &lt;b&gt;on&lt;/b&gt; and &lt;b&gt;off&lt;/b&gt; flags cause the service&lt;br /&gt;to be started or stopped, respectively, in the runlevels being changed. The &lt;b&gt;reset&lt;/b&gt; flag resets the startup information for the service to whatever is specified in the init script in question.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;By default, the &lt;b&gt;on&lt;/b&gt; and &lt;b&gt;off&lt;/b&gt; options affect only runlevels 2, 3, 4, and 5, while &lt;b&gt;reset&lt;/b&gt; affects all of the runlevels.  The &lt;b&gt;--level &lt;/b&gt;option may be used to specify which runlevels are affected.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Note that for every service, each runlevel has either a start script or a stop script.  When switching runlevels, init will not re-start an already-started service, and will not re-stop a service that is not running.&lt;a name="lbAE"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style="font-size:100%;"&gt;OPTIONS&lt;/span&gt;&lt;/h2&gt;&lt;b&gt;--level &lt;/b&gt;&lt;i&gt;levels&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;Specifies the run levels an operation should pertain to. It is given as a string of numbers from 0 to 7. For example, &lt;b&gt;--level 35&lt;/b&gt; specifies runlevels 3 and 5.&lt;br /&gt;&lt;dl compact="compact"&gt;&lt;dt&gt;&lt;b&gt;--add&lt;/b&gt; &lt;i&gt;name&lt;/i&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;This option adds a new service for management by &lt;b&gt;chkconfig&lt;/b&gt;.When a new service is added, &lt;b&gt;chkconfig&lt;/b&gt; ensures that the servicehas either a start or a kill entry in every runlevel. If any runlevel is missing such an entry, &lt;b&gt;chkconfig&lt;/b&gt; creates the appropriate entryas specified by the default values in the init script. Note thatdefault entries in LSB-delimited 'INIT INFO' sections take precedence over the default runlevels in the initscript.&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;b&gt;--del&lt;/b&gt; &lt;i&gt;name&lt;/i&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;The service is removed from &lt;b&gt;chkconfig&lt;/b&gt; management, and any symboliclinks in /etc/rc[0-6].d which pertain to it are removed.&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;&lt;b&gt;--list&lt;/b&gt; &lt;i&gt;name&lt;/i&gt;&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;This option lists all of the services which &lt;b&gt;chkconfig&lt;/b&gt; knows about, and whether they are stopped or started in each runlevel. If &lt;i&gt;name &lt;/i&gt;is specified, information in only display about service &lt;i&gt;name&lt;/i&gt;.&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;a name="lbAF"&gt;&lt;/a&gt;&lt;h2&gt;&lt;span style="font-size:100%;"&gt;RUNLEVEL FILES&lt;/span&gt;&lt;/h2&gt;Each service which should be manageable by &lt;b&gt;chkconfig&lt;/b&gt; needs two or more commented lines added to its init.d script. The first linetells &lt;b&gt;chkconfig&lt;/b&gt; what runlevels the service should be started in by default, as well as the start and stop priority levels. If the serviceshould not, by default, be started in any runlevels, a &lt;b&gt;-&lt;/b&gt; should be used in place of the runlevels list.  The second line contains a description for the service, and may be extended acrossmultiple lines with backslash continuation.&lt;br /&gt;&lt;p&gt;For example, random.init has these three lines:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# chkconfig: 2345 20 80&lt;br /&gt;# description: Saves and restores system entropy pool for \&lt;br /&gt;#              higher quality random number generation.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This says that the random script should be started in levels 2, 3, 4, and 5, that its start priority should be 20, and that its stop priority should be 80.  You should be able to figure out what the description says; the \ causes the line to be continued.  The&lt;br /&gt;extra space in front of the line is ignored.&lt;br /&gt;&lt;br /&gt;For instance take a look on service configuration to run tomcat:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;#startup script for Jakarta Tomcat&lt;br /&gt;#&lt;br /&gt;# chkconfig: 345 84 16&lt;br /&gt;# description: Jakarta Tomcat Java Servlet/JSP Container&lt;br /&gt;&lt;br /&gt;TOMCAT_HOME=/usr/local/bin/apache-tomcat-6.0.16&lt;br /&gt;TOMCAT_START=/usr/local/bin/apache-tomcat-6.0.16/bin/startup.sh&lt;br /&gt;TOMCAT_STOP=/usr/local/bin/apache-tomcat-6.0.16/bin/shutdown.sh&lt;br /&gt;TOMCAT_RUN=/usr/local/bin/apache-tomcat-6.0.16/bin/catalina.sh&lt;br /&gt;#Necessary environment variables&lt;br /&gt;export CATALINA_HOME=/usr/local/bin/apache-tomcat-6.0.16&lt;br /&gt;&lt;br /&gt;# Source function library.&lt;br /&gt;. /etc/rc.d/init.d/functions&lt;br /&gt;&lt;br /&gt;# Source networking configuration.&lt;br /&gt;. /etc/sysconfig/network&lt;br /&gt;&lt;br /&gt;# Check that networking is up.&lt;br /&gt;[ ${NETWORKING} = "no" ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;&lt;br /&gt;#Check for tomcat script&lt;br /&gt;if [ ! -f $TOMCAT_HOME/bin/catalina.sh ]&lt;br /&gt;then&lt;br /&gt; echo "Tomcat not available..."&lt;br /&gt; exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;start() {&lt;br /&gt; echo -n "Starting Tomcat: "&lt;br /&gt; su - root -c $TOMCAT_START&lt;br /&gt; echo&lt;br /&gt; touch /var/lock/subsys/tomcatd&lt;br /&gt;# We may need to sleep here so it will be up for apache&lt;br /&gt;#    sleep 5&lt;br /&gt;#Instead should check to see if apache is up by looking for http.pid&lt;br /&gt;}&lt;br /&gt;run() {&lt;br /&gt; echo -n "Starting Tomcat: "&lt;br /&gt; su - root -c $TOMCAT_START&lt;br /&gt; echo&lt;br /&gt; touch /var/lock/subsys/tomcatd&lt;br /&gt;# We may need to sleep here so it will be up for apache&lt;br /&gt;#    sleep 5&lt;br /&gt;#Instead should check to see if apache is up by looking for http.pid&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stop() {&lt;br /&gt; echo -n $"Shutting down Tomcat: "&lt;br /&gt; su - root -c $TOMCAT_STOP&lt;br /&gt; rm -f /var/lock/subsys/tomcatd.pid&lt;br /&gt; echo&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;status() {&lt;br /&gt; ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap&lt;br /&gt;start" | awk '{printf $1 " "}' | wc | awk '{print $2}' &gt; /tmp/tomcat_process_count.txt&lt;br /&gt;read line &lt; /tmp/tomcat_process_count.txt if [ $line -gt 0 ]; then     echo -n "tomcatd ( pid "     ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'     echo -n ") is running..." else     echo -n "Tomcat is stopped" fi }  case "$1" in     start)         start         ;;       run)         run         ;;       stop)         stop         ;;      restart)         stop         sleep 3         start         ;;      status)         status         ;;      *)         echo "Usage: tomcatd {start|stop|restart|status}"      exit 1 esac &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-8901301045554171909?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8901301045554171909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8901301045554171909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8901301045554171909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8901301045554171909'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/how-to-control-services-in-linux-with.html' title='How to control services in linux with chkconfig'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4272975454649396479</id><published>2009-06-07T06:53:00.000-07:00</published><updated>2009-06-07T06:55:35.115-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java as service on linux'/><title type='text'>Java service wrapper fro Linux</title><content type='html'>&lt;a href="http://wrapper.tanukisoftware.org/doc/english/introduction.html"&gt;http://wrapper.tanukisoftware.org/doc/english/introduction.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4272975454649396479?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4272975454649396479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4272975454649396479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4272975454649396479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4272975454649396479'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/java-service-wrapper-fro-linux.html' title='Java service wrapper fro Linux'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1315841900195095967</id><published>2009-06-07T04:11:00.000-07:00</published><updated>2009-06-07T06:30:53.997-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='ssmtp'/><title type='text'>How to send e-mail using GMail on CentOS from shell script</title><content type='html'>sSMTP is a very simple and straightforward alternative to big MTAs like sendmail or Exim. Unfortunately CentOS repositories don’t come with it, so you have to fetch it from Fedora’s EPEL repo.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm&lt;br /&gt;yum install ssmtp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Configuration is rather simple. Just change the following values in your /etc/ssmtp/ssmtp.conf:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;root=noreply@youdomain.com&lt;br /&gt;AuthUser=noreply@yourdomain.com&lt;br /&gt;AuthPass=password&lt;br /&gt;FromLineOverride=YES&lt;br /&gt;mailhub=smtp.gmail.com:587&lt;br /&gt;UseSTARTTLS=YES&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To test just run a following command("-v" should be used for debugging):&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;echo "test" | ssmtp -v -s "Test" genadyg@exelate.com&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To use sSmtp in unix script:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;ssmtp myemailaddress@gmail.com &lt; msg.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;msg.txt is a simple text using the proper formatting for sSMTP:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;To: toaddress@gmail.com&lt;br /&gt;From: fromaddress@gmail.com&lt;br /&gt;Subject: alert&lt;br /&gt;Message text&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-1315841900195095967?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/1315841900195095967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=1315841900195095967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1315841900195095967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1315841900195095967'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/how-to-send-e-mail-using-gmail-on.html' title='How to send e-mail using GMail on CentOS from shell script'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2771880917010972219</id><published>2009-06-03T23:54:00.000-07:00</published><updated>2009-06-03T23:57:39.813-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google wave'/><title type='text'>Google wave: implementation notes</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;It's an HTML 5 app, built on&lt;span class='Apple-converted-space'&gt; &lt;/span&gt;&lt;a style='color: rgb(34, 68, 187);' target='_blank' href='http://code.google.com/webtoolkit/'&gt;Google Web Toolkit&lt;/a&gt;. It includes a rich text editor and other functions like desktop drag-and-drop (which, for example, lets you drag a set of photos right into a wave).&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;span style='border-collapse: collapse; font-size: 13px;' class='Apple-style-span'&gt;&lt;p&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;span style='border-collapse: collapse; font-size: 13px;' class='Apple-style-span'&gt;&lt;p&gt;&lt;a style='color: rgb(34, 68, 187);' target='_blank' href='http://googleblog.blogspot.com/2009/05/went-walkabout-brought-back-google-wave.html'&gt;Went Walkabout. Brought back Google Wave&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a style='color: rgb(34, 68, 187);' target='_blank' href='http://www.techcrunch.com/2009/05/28/google-wave-drips-with-ambition-can-it-fulfill-googles-grand-web-vision/'&gt;Google Wave Drips With Ambition. A New Communication Platform For A New Web&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src='http://www.ongwt.com/public/WindowsLiveWriter_GoogleWavepoweredbyGWT_1043B_image_2.png'/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2771880917010972219?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2771880917010972219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2771880917010972219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2771880917010972219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2771880917010972219'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/google-wave-implementation-notes.html' title='Google wave: implementation notes'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8759343621730115716</id><published>2009-06-03T07:40:00.000-07:00</published><updated>2009-06-03T07:41:50.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google wave'/><title type='text'>Google wave is here !</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: 13px; border-collapse: collapse; "&gt;&lt;p&gt;&lt;a href="http://innowave.blogspot.com/2009/05/google-wave-reinvents-e-mail-instant.html" target="_blank" style="color: rgb(34, 68, 187);"&gt;Google Wave&lt;/a&gt; is a new communication and collaboration platform based on hosted XML documents (called waves) supporting concurrent modifications and &lt;a href="http://highscalability.com/glossary/term/33" target="_blank" style="color: rgb(34, 68, 187);"&gt;&lt;acronym title="low-latency: Latency is the amount of time a message takes to traverse a system.  In a computer network, it is an expression of how much time it takes for a packet of data to get from one designated point to another. It is sometimes measured as the time required for a packet to be returned to its sender.  Latency depends on the speed of the transmission medium (e.g., copper wire, optical fiber or radio waves) and the delays in the transmission by devices along the way (e.g., routers and modems). A low latency indicates a high network efficiency.   http://www.bellevuelinux.org/latency.html"&gt;low-latency&lt;/acronym&gt;&lt;/a&gt; updates. This platform enables people to communicate and work together in new, convenient and effective ways. We will offer these benefits to users of &lt;a href="http://wave.google.com/" target="_blank" style="color: rgb(34, 68, 187);"&gt;Google Wave&lt;/a&gt; and we also want to share them with everyone else by making waves an open platform that everybody can share. We welcome others to run wave servers and become wave providers, for themselves or as services for their users, and to "federate" waves, that is, to share waves with each other and with Google Wave. In this way users from different wave providers can communicate and collaborate using shared waves. We are introducing the Google Wave Federation Protocol for federating waves between wave providers on the Internet.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.waveprotocol.org/whitepapers" target="_blank" style="color: rgb(34, 68, 187);"&gt;Here&lt;/a&gt; are the initial white papers that are available to complement the Google Wave Federation Protocol:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Google Wave Federation Architecture&lt;/li&gt;&lt;li&gt;Google Wave Data Model and Client-Server Protocol&lt;/li&gt;&lt;li&gt;Google Wave Operational Transform&lt;/li&gt;&lt;li&gt;General Verifiable Federation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The Google Wave APIs are documented &lt;a href="http://code.google.com/apis/wave/" target="_blank" style="color: rgb(34, 68, 187);"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/span&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/v_UyVmITiYQ&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/v_UyVmITiYQ&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-8759343621730115716?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8759343621730115716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8759343621730115716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8759343621730115716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8759343621730115716'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/google-wave-is-here.html' title='Google wave is here !'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2839440150878611867</id><published>2009-06-02T01:12:00.000-07:00</published><updated>2009-06-02T01:15:47.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Amazon s3'/><title type='text'>Amazon s3 java client</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;h1 style='margin-bottom: 0px; margin-top: 0px;'&gt;&lt;small&gt;&lt;small&gt;&lt;small&gt;J2ME and J2SE Toolkit for Amazon S3&lt;/small&gt;&lt;/small&gt;&lt;/small&gt;&lt;/h1&gt;&lt;br/&gt;&lt;a href='http://developer.amazonwebservices.com/connect/entry.jspa?externalID=816&amp;amp;categoryID=47'&gt;http://developer.amazonwebservices.com/connect/entry.jspa?externalID=816&amp;amp;categoryID=47&lt;/a&gt;&lt;br/&gt;&lt;h2&gt;&lt;small&gt;&lt;small&gt;Introduction to Amazon S3 with Java and REST&lt;/small&gt;&lt;/small&gt;&lt;/h2&gt;&lt;a href='http://www.onjava.com/pub/a/onjava/2007/11/07/introduction-to-amazon-s3-with-java-and-rest.html'&gt;http://www.onjava.com/pub/a/onjava/2007/11/07/introduction-to-amazon-s3-with-java-and-rest.html&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2839440150878611867?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2839440150878611867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2839440150878611867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2839440150878611867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2839440150878611867'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/amazon-s3-java-client.html' title='Amazon s3 java client'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3522852650787812387</id><published>2009-06-02T00:57:00.000-07:00</published><updated>2009-06-02T01:00:37.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>SmartGWT</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;SmartGWT is a GWT based framework that allows you to not only utilize&lt;br /&gt;its comprehensive widget library for your application UI, but also tie&lt;br /&gt;these widgets in with your server-side for data management. SmartGWT is&lt;br /&gt;based on the powerful and mature &lt;a rel='nofollow' href='http://www.smartclient.com/'&gt;SmartClient&lt;/a&gt; library.&lt;br/&gt;&lt;a href='http://code.google.com/p/smartgwt/'&gt;http://code.google.com/p/smartgwt/&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-3522852650787812387?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3522852650787812387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3522852650787812387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3522852650787812387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3522852650787812387'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/smartgwt.html' title='SmartGWT'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3411927788975299447</id><published>2009-06-02T00:04:00.000-07:00</published><updated>2009-06-02T00:39:52.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><title type='text'>Common REST Mistakes</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;h1&gt;&lt;span style="font-size:100%;"&gt;Common REST Mistakes( from Paul Prescod)&lt;/span&gt;&lt;/h1&gt;When designing your first REST system there are a variety of mistakes people often make. I want to summarize them so that you can avoid them. If any are unclear, ask for more information on rest-discuss.&lt;br /&gt;    &lt;ol type="1"&gt;&lt;li&gt; &lt;b&gt;Using HTTP is not enough.&lt;/b&gt; You can use HTTP in a Web service without SOAP or XML-RPC and still do the logical equivalent of SOAP or XML-RPC. If you're going to use HTTP wrong you would actually be better off doing it in a standard way! Most of these other points describe ways in which people abuse HTTP.&lt;br /&gt;           &lt;br /&gt;       &lt;/li&gt;&lt;li&gt; &lt;b&gt;Do not overuse POST.&lt;/b&gt; POST is in some senses the "most flexible" of HTTP's methods. It has a slightly looser definition than the other methods and it supports sending information in and getting information out at the same time. Therefore there is a tendency to want to use POST for everything. In your first REST Web Service, I would say that you should only use POST when you are creating a new URI. Pretend POST means "create new URI as child of the current URI." As you get more sophisticated, you may decide to use POST for other kinds of mutations on a resource. One rule of thumb is to ask yourself whether you are using POST to do something that is really a GET, DELETE or PUT, or could be decomposed into a combination of&lt;br /&gt;              methods.&lt;br /&gt;           &lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Do not depend on URI's internal structure.&lt;/b&gt; Some people think about REST design in terms of setting up a bunch of URIs. "I'll put purchase orders in /purchases and I'll give them all numbers like /purchases/12132 and customer records will be in&lt;br /&gt;              /customers..." That can be a helpful way to think while you are whiteboarding&lt;br /&gt;              and chatting, but should not be your final public interface to the service. According to Web Architectural principles, most URIs are opaque to client software most of the time. In other words, your public API should not depend on the structure of your URIs. Instead there would typically be a single XML file that points to the components of your service. Those components would have hyperlinks that point to other components and so forth. Then you can introduce people to your service with a single URI and you can distribute the actual components across computers and domains however you want. My rule of thumb is that clients only construct URIs when they are building queries (and thus using query strings). Those queries return references to objects with opaque URIs.&lt;br /&gt;           &lt;br /&gt;       &lt;/li&gt;&lt;li&gt; &lt;b&gt;Do not put actions in URIs.&lt;/b&gt;&lt;br /&gt;              This follows naturally from the previous point. But a particularly pernicious abuse of URIs is to have query strings like "someuri?action=delete". First, you are using GET to do something unsafe. Second, there is no formal relationship between this "action URI" and the "object" URI. After all your "action=" convention is something specific to your application. REST is about driving as many "application conventions" out of the protocol as possible.&lt;br /&gt;       &lt;/li&gt;&lt;li&gt; &lt;b&gt;Services are seldom resources.&lt;/b&gt; In a REST design, a "stock quote service" is not very&lt;br /&gt;              interesting. In a REST design you would instead have a "stock" resources and a&lt;br /&gt;              service would just be an index of stock resources.&lt;br /&gt;           &lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;Sessions are irrelevant.&lt;/b&gt;&lt;br /&gt;              There should be no need for a client to "login" or "start a connection." HTTP authentication is done automatically on every message. Client applications are consumers of resources, not services. Therefore there is nothing to log in to! Let's say that you are booking a flight on a REST web service. You don't create a new "session" connection to the service. Rather you ask the "itinerary creator object" to create you a new itinerary. You can start filling in the blanks but then get some totally different component elsewhere on the web to fill in some other blanks. There is no session so there is no problem of migrating session state between clients. There is also no issue of "session affinity" in the server (though there are still load balancing issues to continue).&lt;br /&gt;           &lt;br /&gt;       &lt;/li&gt;&lt;li&gt; &lt;b&gt;Do not invent proprietary object identifiers.&lt;/b&gt; Use URIs. URIs are important because you can always associate information with them in two ways. The simplest way is to put data on a web server so that the URI can be dereferenced in order to get the data. Note that this technique only works with URIs that can be dereferenced so these URIs (http URIs!) are strongly preferred to URN or UUID-based URIs. Another way is to use RDF and other techniques that allow you to project metadata onto a URI&lt;br /&gt;              that may not be under your control. If you use URI syntax with UUIDs or something like that then you get half of the benefit of URIs. You get a standardized syntax but have no standardized dereferencing capability. If you use an HTTP URI then you get the other half of the benefit because you then also have a standardized&lt;br /&gt;              derferencing mechanism.&lt;br /&gt;           &lt;br /&gt;       &lt;/li&gt;&lt;li&gt;&lt;b&gt;Do not worry about protocol independence.&lt;/b&gt; There exists only one protocol whichsupports the proper resource manipulation semantics. If another one arises in the future, it will be easy to keep your same design and merely support the alternate&lt;br /&gt;              protocol's interface. On the other hand, what people usually mean by "protocol&lt;br /&gt;              independence" is to abandon resource modelling and therefore abandon both REST&lt;br /&gt;              and the Web.&lt;br /&gt;       &lt;/li&gt;&lt;/ol&gt;Overall, the thing to keep in mind is that REST is about exposing resources through URIs, not services through messaging interfaces.       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-3411927788975299447?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3411927788975299447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3411927788975299447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3411927788975299447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3411927788975299447'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/common-rest-mistakes.html' title='Common REST Mistakes'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8755232477699087877</id><published>2009-06-01T23:45:00.000-07:00</published><updated>2009-06-02T00:02:58.941-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><title type='text'>PHP/Java Rest frameworks finalists</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;h2&gt;&lt;small&gt;&lt;small&gt;A RESTful Web App Development PHP Library&lt;/small&gt;&lt;/small&gt;&lt;br/&gt;&lt;/h2&gt;&lt;a href='http://tonic.sourceforge.net/docs.html'&gt;http://tonic.sourceforge.net/docs.html&lt;/a&gt;&lt;br/&gt;&lt;h1&gt;&lt;small&gt;&lt;small&gt;Lightweight REST framework&lt;/small&gt;&lt;/small&gt;&lt;/h1&gt;The mission of this open source project is to bring the simplicity and&lt;br /&gt;efficiency of the REST architectural style to Java developers.&lt;br /&gt;Concretely, it is composed of two parts:&lt;br/&gt;&lt;br/&gt;1) Restlet API&lt;br/&gt;&lt;ol&gt;&lt;li&gt;    Supports all REST concepts (resource, representation, data, connector, components, etc.)&lt;/li&gt;&lt;li&gt;    Suitable for both client and server REST applications&lt;/li&gt;&lt;li&gt;    Maplets support the concept of URIs as UI with advanced pattern matching features&lt;/li&gt;&lt;li&gt;    Chainlets filter calls to implement features like logging, authentication or compression&lt;/li&gt;&lt;li&gt;    Complete alternative to Servlet API with no external dependency (JAR &amp;lt; 50kb)&lt;/li&gt;&lt;li&gt;    Supports blocking and non-blocking NIO modes&lt;/li&gt;&lt;/ol&gt;2) Noelios Restlet Engine (NRE)&lt;br/&gt;&lt;ol&gt;&lt;li&gt;  Reference implementation of the Restlet API provided by Noelios Consulting (core JAR &amp;lt; 60kb)&lt;/li&gt;&lt;li&gt;  Server connector provided: HTTP (via Jetty connectors)&lt;/li&gt;&lt;li&gt;  Client connectors provided: HTTP, JDBC, SMTP (via JavaMail)&lt;/li&gt;&lt;li&gt;  Support for logging (LoggerChainlet) and cool URIs rewriting (RedirectRestlet)&lt;/li&gt;&lt;li&gt;  Static files serving (DirectoryRestlet) with metadata association based on file extensions&lt;/li&gt;&lt;li&gt;   FreeMarker template representations as an alternative to JSP pages&lt;/li&gt;&lt;li&gt;   Automatic server-side content negotiation based on media type and language&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;Also, an &lt;a target='_blank' href='http://www.restlet.org/introduction'&gt;introduction&lt;/a&gt; paper as well as a &lt;a target='_blank' href='http://www.restlet.org/tutorial'&gt;detailled tutorial&lt;/a&gt; are available.&lt;br/&gt;&lt;br/&gt;&lt;a href='Lightweight%20REST%20framework'&gt;http://www.restlet.org/&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-8755232477699087877?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8755232477699087877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8755232477699087877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8755232477699087877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8755232477699087877'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/06/phpjava-rest-frameworks-finalists.html' title='PHP/Java Rest frameworks finalists'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2583186088445481698</id><published>2009-05-24T11:15:00.000-07:00</published><updated>2009-05-24T11:18:44.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>How reset the auto_increment propertie in mysql table.</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Recently encountered on a 'odd' behaviour of mySQL table with primary key that defined as auto-increment, in a first look the table had only 5 records, which was far away from limit(256), then I've remebered that the table was used by junit runs for inserting/deleting records and apparently the limit was reached, I think that most expected behavior would be to generate an id for primary key that most close to maximum value of primary key.&lt;br/&gt;Anyway in order to reset the auto_increment, in a situation where some of the most recently added rows were deleted, use:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;ALTER TABLE theStuckedTable AUTO_INCREMENT=1234&lt;/b&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/7111452516229749637-2583186088445481698?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2583186088445481698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2583186088445481698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2583186088445481698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2583186088445481698'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/how-reset-autoincrement-propertie-in.html' title='How reset the auto_increment propertie in mysql table.'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6684475677681184503</id><published>2009-05-23T06:34:00.000-07:00</published><updated>2009-05-23T06:27:58.401-07:00</updated><title type='text'>Use command-line tools in PHP</title><content type='html'>Gennady recommends this from developerWorks(TM)&lt;br&gt;---------------------------------------------------------------------&lt;p&gt;Title: Use command-line tools in PHP&lt;p&gt;Learn how to better integrate scripts with command-line tools. Emphasis is placed on using shell_exec(), exec(), passthru(), and system(); safely passing information to the command line; and safely retrieving information from it.&lt;p&gt;Learn more:&lt;br&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-php-commandline/index.html?ca=drs-"&gt;http://www.ibm.com/developerworks/opensource/library/os-php-commandline/index.html?ca=drs-&lt;/a&gt; &lt;p&gt;developerWorks&lt;br&gt;IBM&amp;#39;s resource for developers.&lt;br&gt;&lt;a href="http://www.ibm.com/developerworks/"&gt;http://www.ibm.com/developerworks/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6684475677681184503?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6684475677681184503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6684475677681184503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6684475677681184503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6684475677681184503'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/use-command-line-tools-in-php.html' title='Use command-line tools in PHP'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4824908279321018706</id><published>2009-05-20T06:08:00.000-07:00</published><updated>2009-05-20T06:11:08.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>100 Tips and Tools to Research the Social Web</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://www.linkedin.com/news?actionBar=&amp;amp;sik=1242824767100&amp;amp;aIdx=0&amp;amp;articleID=34853642'&gt;http://www.linkedin.com/news?actionBar=&amp;amp;sik=1242824767100&amp;amp;aIdx=0&amp;amp;articleID=34853642&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4824908279321018706?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4824908279321018706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4824908279321018706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4824908279321018706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4824908279321018706'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/100-tips-and-tools-to-research-social.html' title='100 Tips and Tools to Research the Social Web'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1759762488850654162</id><published>2009-05-20T05:58:00.000-07:00</published><updated>2009-05-20T06:01:15.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>50 Useful JavaScript Tools</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://www.smashingmagazine.com/2009/02/08/50-extremely-useful-javascript-tools/'&gt;http://www.smashingmagazine.com/2009/02/08/50-extremely-useful-javascript-tools/&lt;/a&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/7111452516229749637-1759762488850654162?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/1759762488850654162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=1759762488850654162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1759762488850654162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/1759762488850654162'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/50-useful-javascript-tools.html' title='50 Useful JavaScript Tools'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-486480904903213380</id><published>2009-05-19T00:20:00.000-07:00</published><updated>2009-05-19T00:23:11.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Downfall of Agile Hitler</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div class='youtube-video'&gt;&lt;object height='355' width='425'&gt;&lt;param value='http://www.youtube.com/v/l1wKO3rID9g' name='movie'&gt; &lt;/param&gt;&lt;param value='transparent' name='wmode'&gt; &lt;/param&gt;&lt;embed height='355' width='425' wmode='transparent' type='application/x-shockwave-flash' src='http://www.youtube.com/v/l1wKO3rID9g'&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;The Downfall of Agile Hitler&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-486480904903213380?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/486480904903213380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=486480904903213380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/486480904903213380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/486480904903213380'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/downfall-of-agile-hitler.html' title='The Downfall of Agile Hitler'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3714600153442788418</id><published>2009-05-17T05:42:00.000-07:00</published><updated>2009-05-17T05:45:02.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lucene'/><title type='text'>Luke - Lucene Index Toolbox</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://lucene.apache.org/'&gt;Lucene&lt;/a&gt; is an Open Source, mature and high-performance Java search engine. It is highly flexible, and scalable from hundreds to millions of documents.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Luke&lt;/b&gt; is a handy development and diagnostic tool, which accesses already existing Lucene indexes and allows you to display and modify their content in several ways: &lt;ul&gt;&lt;li&gt;browse by document number, or by term &lt;/li&gt;&lt;li&gt;view documents / copy to clipboard &lt;/li&gt;&lt;li&gt;retrieve a ranked list of most frequent terms&lt;/li&gt;&lt;li&gt;execute a search, and browse the results&lt;/li&gt;&lt;li&gt;analyze search results&lt;/li&gt;&lt;li&gt;selectively delete documents from the index &lt;/li&gt;&lt;li&gt;reconstruct the original document fields, edit them and re-insert to the index &lt;/li&gt;&lt;li&gt;optimize indexes&lt;/li&gt;&lt;li&gt;and much more...&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=0acf1911-0266-8352-a45c-03e34b9fa39b' class='zemanta-pixie-img'/&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/7111452516229749637-3714600153442788418?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3714600153442788418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3714600153442788418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3714600153442788418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3714600153442788418'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/luke-lucene-index-toolbox.html' title='Luke - Lucene Index Toolbox'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-9138176653273061549</id><published>2009-05-16T23:23:00.000-07:00</published><updated>2009-05-16T23:26:25.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wolfram'/><title type='text'></title><content type='html'>Finally was launched alpha of computational knowledge engine Wolfram, that did a lot of 'noise' recently, it's has a lot of useful features and expose API for external use:&lt;br /&gt;&lt;a href="http://www61.wolframalpha.com/developers.html"&gt;http://www61.wolframalpha.com/developers.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-9138176653273061549?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/9138176653273061549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=9138176653273061549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9138176653273061549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9138176653273061549'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/finally-was-launched-alpha-of.html' title=''/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7901687954723524035</id><published>2009-05-06T01:29:00.000-07:00</published><updated>2009-05-06T01:31:26.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regular expression'/><title type='text'>The Regex Coach - interactive regular expressions</title><content type='html'>An open source tool to check and write regular expressions:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.weitz.de/regex-coach/#install"&gt;http://www.weitz.de/regex-coach&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7901687954723524035?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7901687954723524035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7901687954723524035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7901687954723524035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7901687954723524035'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/regex-coach-interactive-regular.html' title='The Regex Coach - interactive regular expressions'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5670213568619860687</id><published>2009-05-05T00:53:00.001-07:00</published><updated>2009-05-05T00:53:22.199-07:00</updated><title type='text'>High Performance Kick Ass Web Apps (JavaScript edition)</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px;text-align:left" id="__ss_1358647"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/stoyan/high-performance-kick-ass-web-apps-javascript-edition?type=presentation" title="High Performance Kick Ass Web Apps (JavaScript edition)"&gt;High Performance Kick Ass Web Apps (JavaScript edition)&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hiperf2-090428133045-phpapp02&amp;stripped_title=high-performance-kick-ass-web-apps-javascript-edition" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hiperf2-090428133045-phpapp02&amp;stripped_title=high-performance-kick-ass-web-apps-javascript-edition" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/stoyan"&gt;Stoyan Stefanov&lt;/a&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/7111452516229749637-5670213568619860687?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5670213568619860687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5670213568619860687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5670213568619860687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5670213568619860687'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/high-performance-kick-ass-web-apps.html' title='High Performance Kick Ass Web Apps (JavaScript edition)'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3109991284148472908</id><published>2009-05-04T22:54:00.000-07:00</published><updated>2009-05-04T22:56:52.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memcashed'/><category scheme='http://www.blogger.com/atom/ns#' term='PartitionedHashMap'/><title type='text'>A memcached implementation in JGroups - PartitionedHashMap</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p style="margin-bottom: 0.08in;"&gt;&lt;a class="western" href="http://downloads.sourceforge.net/javagroups/memcached-jgroups.jar"&gt;PartitionedHashMap&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is an implementation of memcached on top of JGroups, written completely in Java. It has a couple of advantages over memcached:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;Java clients and PartitionedHashMap can run in the same address space and therefore don't need to use the memcached protocol to communicate. The latter is text based&lt;a class="sdfootnoteanc" name="sdfootnote2anc" href="#sdfootnote2sym" style="font-size: 9px;"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;and slow, due to serialization. This allows servlets to access the cache directly, without serialization overhead.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;All PartitionedHashMap processes know about each other, and can therefore make intelligent decisions as to what to do when a cluster membership change occurs. For example, a server to be stopped can migrate all of the keys it manages to the next server. With memcached, the entries hosted by a server S are lost when S goes down. Of course, this doesn't work when S crashes.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;Similat to the above point, when a cluster membership change occurs (e.g. a new server S is started), then all servers check whether an entry hosted by them should actually be hosted by S. They will move all entries to be hosted by S to S. This has the advantage that entries don't have to be re-read from the DB (for example) and inserted into the cache (as in memcached's case), but the cache rebalances itself automatically.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;PartitionedHashMap has a level 1 cache (L1 cache). This allows for caching of data near to where it is really needed. For example, if we have servers A, B, C, D and E and a client adds a (to be heavily accessed) news article to C, then memcached would always redirect every single request for the article to C. So, a client accessing D would always trigger a GET request from D to C and then return the article. JGroups caches the article in D's L1 cache on the first access, so all other clients accessing the article from D would get the cached article, and we can avoid a round trip to C. Note that each entry has an expiration time, which will cause the entry to be removed from the L1 cache on expiry, and the next access would have to fetch it again from C and place it in D's L1 cache. The expiration time is defined by the submitter of the article.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;Since the RPCs for GETs, SETs and REMOVEs use JGroups as transport, the type of transport and the quality of service can be controlled and customized through the underlying XML file defining the transport. For example, we could add compression, or decide to encrypt all RPC traffic. It also allows for use of either UDP (IP multicasting and/or UDP datagrams) or TCP.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;The connector (org.jgroups.blocks.MemcachedConnector) which is responsible for parsing the memcached protocol and invoking requests on PartitionedHashMap, PartitionedHashMap (org.jgroups.blocks.PartitionedHashMap) which represents the memcached implementation, the server (org.jgroups.demos.MemcachedServer) and the L1 and L2 caches (org.jgroups.blocks.Cache) can be assembled or replaced at will. Therefore it is simple to customize the JGroups memcached implementation; for example to use a different MemcachedConnector which parses a binary protocol (requiring matching client code of course).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0.08in;"&gt;All management information and operations are exposed via JMX.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;a href="http://www.jgroups.org/memcached/memcached.html"&gt;http://www.jgroups.org/memcached/memcached.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-3109991284148472908?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3109991284148472908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3109991284148472908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3109991284148472908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3109991284148472908'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/memcached-implementation-in-jgroups.html' title='A memcached implementation in JGroups - PartitionedHashMap'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5440157006904484150</id><published>2009-05-04T22:43:00.000-07:00</published><updated>2009-05-04T22:45:26.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Want SEO Results? Implement These 8 Important Techniques(from LinkedIn forum)</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: 10px; line-height: 12px; font-family: Arial;"&gt;&lt;p class="q-details" style="border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; vertical-align: baseline; color: rgb(51, 51, 51); font-family: inherit;"&gt;Implementing more than a handful of the Search Engine&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="q-details" style="border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; vertical-align: baseline; color: rgb(51, 51, 51); font-family: inherit;"&gt;Optimization methods we encounter can be a never-ending&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="q-details" style="border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; vertical-align: baseline; color: rgb(51, 51, 51); font-family: inherit;"&gt;struggle, hence the reason for this list. Included below are&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="q-details" style="border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; vertical-align: baseline; color: rgb(51, 51, 51); font-family: inherit;"&gt;the methods that will get you the most favor in the eyes of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;the search engines. When you implement these SEO methods,&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;you will be able to see a noticable difference in your&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;traffic and wonder why you didn't impletment them sooner.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Use your 'title' tag effectively by including your&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;keywords. Each page should have a specific theme and be&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;optimized for a certain key phrase anyway, so including your&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;keywords in the page title should be natural. It just so&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;happens that search engines eat it up.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Get your keywords in your inbound links. If another&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;page is pointing at you, whatever text is part of that link&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;goes to your credit in the eyes of the search engines. If&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;your blogger friend has a link to your website on his, it&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;probably says "check out Joes business." Try to get him to&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;put "auto mechanic" or "car repair" as the link, or at least&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;"Joes Auto Repair" - your business name.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Have Unique Content and Update Often. Add something to&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;the Internet. Become a resource for potential clients and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;those in your industry. If you get more page views and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;clicks through a search engine, the search engine will value&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;your site higher. As a side benefit, you are seen as an&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;expert in the community, which never hurts business.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Put your Keywords in your Filenames. Instead of titling&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;your Auto Repair Services page "arserv.html" or another&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;shorthand title, use long, descriptive filenames like&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;"car-auto-repair-services.html." This is a great technique&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;that is easy to implement and yields great results.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. Create an XML Sitemap. If you're not used to writing&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;code, this can seem daunting, but you can always hire&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;someone. Creating and submitting the sitemap will help&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;Google find your site and all its content much faster. You&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;can find the protocol here&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;(&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="/redirect?url=https%3A%2F%2Fwww%2Egoogle%2Ecom%2Fwebmasters%2Ftools%2Fdocs%2Fen%2Fprotocol%2Ehtml&amp;amp;urlhash=Dx0W&amp;amp;_t=disc_detail_link" target="_blank" style="border-width: 0px; margin: 0px; padding: 0px; outline-style: none; font-weight: inherit; font-style: inherit; font-size: 13px; vertical-align: baseline; text-decoration: none; color: rgb(0, 51, 153); font-family: inherit;"&gt;https://www.google.com/webmasters/tools/docs/en/protocol.html&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;).&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;Save it as 'sitemap.xml' in the root of your website (the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;same directory as your index page).&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6. Build a Large Number of Backlinks. There are entire&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;companies that do nothing but provide backlink generation&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;services, which should tell you how important this process&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;is. Simply put, search engines favor sites that are&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;referenced by other well-referenced sites (the basis of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;Google's PageRank). There are countless ways to get&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;backlinks, but arguably the best way is to use the content&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;you generated in Step 3. Submit your articles to&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;directories and content libraries using special programs or&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;manual submissions. You can even delegate this a&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;knowledgeable employee (or one that knows how to use Google)&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;for their downtime. Additionally, search engines favor links&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;from .gov and .edu domains, so use your connections if you&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;have them!&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;7. Keep your Keyword Density Between 3-7%. When youre&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;writing all that great, unique content, make sure to seed&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;your keywords and phrases in there so that they comprise&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;3-7% of the text on a page. Any more, and you look like&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;youre keyword stuffing (whether youre trying to or not), any&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;less, and the page doesnt seem relevant.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8. Use your Keywords in your Headings. Many times a section&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;heading can be seen as irrelevant for a search engine, so&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;always make sure to fill your 'h1' and 'h2' tags with&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;important keywords. Dont leave them out or treat them as&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;'implied' - thats the worst thing you can do.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you follow these 8 tips, you will rank high for your&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;target keyword. If your keyword is very competitive, add&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;more backlinks with your keyword phrase by creating&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;articles like this, submitting them to article directories,&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;and placing your link in the 'About' box below. Well, what&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;are you waiting for?&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-5440157006904484150?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5440157006904484150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5440157006904484150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5440157006904484150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5440157006904484150'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/want-seo-results-implement-these-8.html' title='Want SEO Results? Implement These 8 Important Techniques(from LinkedIn forum)'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7039197530667714165</id><published>2009-05-04T22:34:00.001-07:00</published><updated>2009-05-04T22:36:17.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0 tools for project management'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Choosing the Right Scrum Management Tool</title><content type='html'>Just read a two interesting articles about choosing a scrum management tools:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tommynorman.blogspot.com/2009/05/choosing-right-scrum-management-tool_04.html"&gt;http://tommynorman.blogspot.com/2009/05/choosing-right-scrum-management-tool_04.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tommynorman.blogspot.com/2009/05/choosing-right-scrum-management-tool.html"&gt;http://tommynorman.blogspot.com/2009/05/choosing-right-scrum-management-tool.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7039197530667714165?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7039197530667714165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7039197530667714165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7039197530667714165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7039197530667714165'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/05/choosing-right-scrum-management-tool.html' title='Choosing the Right Scrum Management Tool'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8073745932354551949</id><published>2009-03-31T23:37:00.001-07:00</published><updated>2009-03-31T23:49:26.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo technologies'/><title type='text'>Yahoo development session notes: YQL, Flickr, OAuth, YAP</title><content type='html'>A few notes regarding Yahoo session:&lt;br /&gt;YQL - very nice API, successor of the Yahoo pipes. With you could read and parse user social data, parse RSS or Twiter feeds. Feature that I most liked is possibility to parse recent &lt;span style="font-weight: bold;"&gt;multiple &lt;/span&gt;RSS feeds and extract information you need with a simple query like this:&lt;br /&gt;&lt;br /&gt;select title from rss where url="http://rss.news.yahoo.com/rss/topstories" and title like '%GM%'&lt;br /&gt; Currently it's limited up to 10000 requests a day from a single IP address.&lt;br /&gt;&lt;br /&gt;OAth - yahoo platform for authentication, standard that all big web guys( Facebook, Google, etc. ) are going to adopt. Very nice feature for web sites that don't want to 'outsource' authentication.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1228287"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/erikeldridge/yql-flickr-oauth-yap?type=powerpoint" title="YQL, Flickr, OAuth, YAP"&gt;YQL, Flickr, OAuth, YAP&lt;/a&gt;&lt;object style="margin: 0px;" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=idccompletev2-090331112736-phpapp01&amp;amp;stripped_title=yql-flickr-oauth-yap"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=idccompletev2-090331112736-phpapp01&amp;amp;stripped_title=yql-flickr-oauth-yap" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/erikeldridge"&gt;Erik Eldridge&lt;/a&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/7111452516229749637-8073745932354551949?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8073745932354551949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8073745932354551949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8073745932354551949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8073745932354551949'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/yahoo-development-session-notes-yql.html' title='Yahoo development session notes: YQL, Flickr, OAuth, YAP'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7054398371900200966</id><published>2009-03-29T22:51:00.000-07:00</published><updated>2009-03-29T22:52:32.906-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMTP properties'/><category scheme='http://www.blogger.com/atom/ns#' term='java mail settins'/><title type='text'>SMTP properties</title><content type='html'>&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt; &lt;th&gt;Type&lt;/th&gt; &lt;th&gt;Description&lt;/th&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.user&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;Default user name for SMTP.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.host&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;The SMTP server to connect to.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.port&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt;The SMTP server port to connect to, if the connect() method doesn't explicitly specify one. Defaults to 25.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.connectiontimeout&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt;Socket connection timeout value in milliseconds. Default is infinite timeout.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.timeout&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt;Socket I/O timeout value in milliseconds.  Default is infinite timeout.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.from&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; Email address to use for SMTP MAIL command.  This sets the envelope return address.  Defaults to msg.getFrom() or InternetAddress.getLocalAddress().  NOTE: mail.smtp.user was previously used for this. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.localhost&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; Local host name used in the SMTP HELO or EHLO command. Defaults to &lt;code&gt;InetAddress.getLocalHost().getHostName()&lt;/code&gt;. Should not normally need to be set if your JDK and your name service are configured properly. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.localaddress&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; Local address (host name) to bind to when creating the SMTP socket. Defaults to the address picked by the Socket class. Should not normally need to be set, but useful with multi-homed hosts where it's important to pick a particular local address to bind to. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.localport&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt; Local port number to bind to when creating the SMTP socket. Defaults to the port number picked by the Socket class. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ehlo&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If false, do not attempt to sign on with the EHLO command.  Defaults to true.  Normally failure of the EHLO command will fallback to the HELO command; this property exists only for servers that don't fail EHLO properly or don't implement EHLO properly. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.auth&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt;If true, attempt to authenticate the user using the AUTH command. Defaults to false.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.auth.mechanisms&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; If set, lists the authentication mechanisms to consider, and the order in which to consider them.  Only mechanisms supported by the server and supported by the current implementation will be used. The default is &lt;code&gt;"LOGIN PLAIN DIGEST-MD5"&lt;/code&gt;, which includes all the authentication mechanisms supported by the current implementation. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.submitter&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;The submitter to use in the AUTH tag in the MAIL FROM command. Typically used by a mail relay to pass along information about the original submitter of the message. See also the &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPMessage.html#setSubmitter%28java.lang.String%29"&gt;&lt;code&gt;setSubmitter&lt;/code&gt;&lt;/a&gt; method of &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPMessage.html" title="class in com.sun.mail.smtp"&gt;&lt;code&gt;SMTPMessage&lt;/code&gt;&lt;/a&gt;. Mail clients typically do not use this. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.dsn.notify&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;The NOTIFY option to the RCPT command.  Either NEVER, or some combination of SUCCESS, FAILURE, and DELAY (separated by commas).&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.dsn.ret&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;The RET option to the MAIL command.  Either FULL or HDRS.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.allow8bitmime&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, and the server supports the 8BITMIME extension, text parts of messages that use the "quoted-printable" or "base64" encodings are converted to use "8bit" encoding if they follow the RFC2045 rules for 8bit text. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.sendpartial&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a SendFailedException.  If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.sasl.realm&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt;The realm to use with DIGEST-MD5 authentication.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.quitwait&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to false, the QUIT command is sent and the connection is immediately closed. If set to true (the default), causes the transport to wait for the response to the QUIT command. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.reportsuccess&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, causes the transport to include an &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPAddressSucceededException.html" title="class in com.sun.mail.smtp"&gt;&lt;code&gt;SMTPAddressSucceededException&lt;/code&gt;&lt;/a&gt; for each address that is successful. Note also that this will cause a &lt;a href="http://java.sun.com/products/javamail/javadocs/javax/mail/SendFailedException.html" title="class in javax.mail"&gt;&lt;code&gt;SendFailedException&lt;/code&gt;&lt;/a&gt; to be thrown from the &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPTransport.html#sendMessage%28javax.mail.Message,%20javax.mail.Address%5B%5D%29"&gt;&lt;code&gt;sendMessage&lt;/code&gt;&lt;/a&gt; method of &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPTransport.html" title="class in com.sun.mail.smtp"&gt;&lt;code&gt;SMTPTransport&lt;/code&gt;&lt;/a&gt; even if all addresses were correct and the message was sent successfully. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.socketFactory&lt;/td&gt; &lt;td&gt;SocketFactory&lt;/td&gt; &lt;td&gt; If set to a class that implements the &lt;code&gt;javax.net.SocketFactory&lt;/code&gt; interface, this class will be used to create SMTP sockets.  Note that this is an instance of a class, not a name, and must be set using the &lt;code&gt;put&lt;/code&gt; method, not the &lt;code&gt;setProperty&lt;/code&gt; method. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.socketFactory.class&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; If set, specifies the name of a class that implements the &lt;code&gt;javax.net.SocketFactory&lt;/code&gt; interface.  This class will be used to create SMTP sockets. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.socketFactory.fallback&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, failure to create a socket using the specified socket factory class will cause the socket to be created using the &lt;code&gt;java.net.Socket&lt;/code&gt; class. Defaults to true. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.socketFactory.port&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt; Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.enable&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, use SSL to connect and use the SSL port by default. Defaults to false for the "smtp" protocol and true for the "smtps" protocol. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.checkserveridentity&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, check the server identity as specified by &lt;a href="http://www.ietf.org/rfc/rfc2595.txt" target="_top"&gt;RFC 2595&lt;/a&gt;. These additional checks based on the content of the server's certificate are intended to prevent man-in-the-middle attacks. Defaults to false. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.socketFactory&lt;/td&gt; &lt;td&gt;SSLSocketFactory&lt;/td&gt; &lt;td&gt; If set to a class that extends the &lt;code&gt;javax.net.ssl.SSLSocketFactory&lt;/code&gt; class, this class will be used to create SMTP SSL sockets.  Note that this is an instance of a class, not a name, and must be set using the &lt;code&gt;put&lt;/code&gt; method, not the &lt;code&gt;setProperty&lt;/code&gt; method. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.socketFactory.class&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; If set, specifies the name of a class that extends the &lt;code&gt;javax.net.ssl.SSLSocketFactory&lt;/code&gt; class.  This class will be used to create SMTP SSL sockets. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.socketFactory.port&lt;/td&gt; &lt;td&gt;int&lt;/td&gt; &lt;td&gt; Specifies the port to connect to when using the specified socket factory. If not set, the default port will be used. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.protocols&lt;/td&gt; &lt;td&gt;string&lt;/td&gt; &lt;td&gt; Specifies the SSL protocols that will be enabled for SSL connections. The property value is a whitespace separated list of tokens acceptable to the &lt;code&gt;javax.net.ssl.SSLSocket.setEnabledProtocols&lt;/code&gt; method. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.ssl.ciphersuites&lt;/td&gt; &lt;td&gt;string&lt;/td&gt; &lt;td&gt; Specifies the SSL cipher suites that will be enabled for SSL connections. The property value is a whitespace separated list of tokens acceptable to the &lt;code&gt;javax.net.ssl.SSLSocket.setEnabledCipherSuites&lt;/code&gt; method. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.mailextension&lt;/td&gt; &lt;td&gt;String&lt;/td&gt; &lt;td&gt; Extension string to append to the MAIL command. The extension string can be used to specify standard SMTP service extensions as well as vendor-specific extensions. Typically the application should use the &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPTransport.html" title="class in com.sun.mail.smtp"&gt;&lt;code&gt;SMTPTransport&lt;/code&gt;&lt;/a&gt; method &lt;a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/SMTPTransport.html#supportsExtension%28java.lang.String%29"&gt;&lt;code&gt;supportsExtension&lt;/code&gt;&lt;/a&gt; to verify that the server supports the desired service extension. See &lt;a href="http://www.ietf.org/rfc/rfc1869.txt" target="_top"&gt;RFC 1869&lt;/a&gt; and other RFCs that define specific extensions. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.starttls.enable&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If true, enables the use of the &lt;code&gt;STARTTLS&lt;/code&gt; command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands.  Note that an appropriate trust store must configured so that the client will trust the server's certificate. Defaults to false. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.starttls.required&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If true, requires the use of the &lt;code&gt;STARTTLS&lt;/code&gt; command. If the server doesn't support the STARTTLS command, or the command fails, the connect method will fail. Defaults to false. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;mail.smtp.userset&lt;/td&gt; &lt;td&gt;boolean&lt;/td&gt; &lt;td&gt; If set to true, use the RSET command instead of the NOOP command in the &lt;a href="http://java.sun.com/products/javamail/javadocs/javax/mail/Service.html#isConnected%28%29"&gt;&lt;code&gt;isConnected&lt;/code&gt;&lt;/a&gt; method. In some cases sendmail will respond slowly after many NOOP commands; use of RSET avoids this sendmail issue. Defaults to false. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7054398371900200966?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7054398371900200966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7054398371900200966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7054398371900200966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7054398371900200966'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/smtp-properties.html' title='SMTP properties'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-338106660837588206</id><published>2009-03-19T07:28:00.001-07:00</published><updated>2009-03-19T07:28:30.937-07:00</updated><title type='text'>Disk-Based Parallel Computation, Rubik's Cube, and Checkpointing</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;object height='350' width='425'&gt;&lt;param value='http://youtube.com/v/WQw7c-PliB4' name='movie'/&gt;&lt;embed height='350' width='425' type='application/x-shockwave-flash' src='http://youtube.com/v/WQw7c-PliB4'/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;Nice one.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-338106660837588206?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/338106660837588206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=338106660837588206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/338106660837588206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/338106660837588206'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/disk-based-parallel-computation-rubik.html' title='Disk-Based Parallel Computation, Rubik&amp;#39;s Cube, and Checkpointing'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-763141491833049554</id><published>2009-03-19T01:54:00.000-07:00</published><updated>2009-03-19T01:57:58.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAN performance tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Network performance'/><title type='text'>The Promise and Peril of Jumbo Frames</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin;} h2 	{mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:"Heading 2 Char"; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	mso-outline-level:2; 	font-size:18.0pt; 	font-family:"Times New Roman","serif"; 	font-weight:bold;} a:link, span.MsoHyperlink 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} p 	{mso-style-noshow:yes; 	mso-style-priority:99; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin;} span.Heading2Char 	{mso-style-name:"Heading 2 Char"; 	mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:"Heading 2"; 	mso-ansi-font-size:18.0pt; 	mso-bidi-font-size:18.0pt; 	font-family:"Times New Roman","serif"; 	mso-ascii-font-family:"Times New Roman"; 	mso-hansi-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	font-weight:bold;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:70397512; 	mso-list-template-ids:-1951617784;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="background: rgb(195, 217, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/p&gt;  &lt;h2 style="margin: 3pt 0in 0.0001pt;"&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 style="margin: 3pt 0in 0.0001pt;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;a href="http://www.codinghorror.com/blog/archives/001232.html"&gt;The Promise and Peril of Jumbo Frames&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;via &lt;a href="http://www.codinghorror.com/blog/"&gt;Coding Horror&lt;/a&gt; by Jeff Atwood on 3/1/09&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;We sit at the intersection of two trends: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Most home networking gear, including routers, has      safely &lt;b&gt;transitioned to gigabit ethernet&lt;/b&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The generation, storage, and transmission of large      high definition video files is &lt;a href="http://www.codinghorror.com/blog/archives/001197.html"&gt;becoming      commonplace&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;If that sounds like you, or someone you know, there's one tweak you should know about that can potentally improve your local network throughput quite a bit -- enabling &lt;a href="http://en.wikipedia.org/wiki/Jumbo_frame"&gt;Jumbo Frames&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The typical UDP packet looks something like this: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1025" src="http://www.codinghorror.com/blog/images/udp-packet-diagram-3.png" alt="udp packet diagram" border="0" width="436" height="385" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;But the default size of that data payload was established years ago. In the context of gigabit ethernet and the amount of data we transfer today, it does seem a bit.. anemic. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The original 1,518-byte MTU for Ethernet was chosen because of the high error rates and low speed of communications. If a corrupted packet is sent, only 1,518 bytes must be re-sent to correct the error. However, each frame requires that the network hardware and software process it. If the frame size is increased, the same amount of data can be transferred with less effort. This reduces CPU utilization (mostly due to interrupt reduction) and increases throughput by allowing the system to concentrate on the data in the frames, instead of the frames around the data. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;I use &lt;a href="http://www.codinghorror.com/blog/archives/001107.html"&gt;my beloved energy efficient home theater PC&lt;/a&gt; as an always-on media server, and I'm constantly transferring gigabytes of video, music, and photos to it. Let's try enabling jumbo frames for my little network. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The first thing you'll need to do is &lt;b&gt;update your network hardware drivers to the latest versions&lt;/b&gt;. I &lt;a href="http://blog.stackoverflow.com/2009/02/server-speed-tests/"&gt;learned this the hard way&lt;/a&gt;, but if you want to play with advanced networking features like Jumbo Frames, you need the latest and greatest network hardware drivers. What was included with the OS is unlikely to cut it. Check on the network chipset manufacturer's website. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Once you've got those drivers up to date, look for &lt;b&gt;the Jumbo Frames setting in the advanced properties of the network card&lt;/b&gt;. Here's what it looks like on two different ethernet chipsets: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1026" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-marvell-yukon-settings.png" alt="gigabit jumbo marvell yukon advanced settings" border="0" width="410" height="330" /&gt;  &lt;img id="_x0000_i1027" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-realtek-settings.png" alt="gigabit jumbo realtek advanced settings" border="0" width="419" height="353" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;That's my computer, and the HTPC, respectively. I was a little disturbed to notice that neither driver recognizes exactly the same data payload size. It's named "Jumbo Frame" with 2KB - 9KB settings in 1KB increments on the Realtek, and "Jumbo Packet" with 4088 or 9014 settings on the Marvell. I know that &lt;b&gt;technically, for jumbo frames to work, all the networking devices on the subnet have to agree on the data payload size&lt;/b&gt;. I couldn't tell quite &lt;i&gt;what&lt;/i&gt; to do, so I set them as you see above. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;(I didn't change anything on my router / switch, which at the moment is the &lt;a href="http://www.codinghorror.com/blog/archives/001010.html"&gt;D-Link DGL-4500&lt;/a&gt;; note that &lt;i&gt;most&lt;/i&gt; gigabit switches support jumbo frames, but you should always verify with the manufacturer's website to be sure.) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;I then ran a few tests to see if there was any difference. I started with a simple file copy. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Default network settings&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1028" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-disabled-file-copy.png" alt="gigabit jumbo frames disabled file copy results" border="0" width="442" height="271" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Jumbo Frames enabled&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1029" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-enabled-file-copy.png" alt="gigabit jumbo frames enabled file copy results" border="0" width="443" height="274" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;My file copy went from 47.6 MB/sec to 60.0 MB/sec. Not too shabby! But this is a very ad hoc sort of testing. Let's see what the &lt;a href="http://www.passmark.com/products/pt_advnet.htm"&gt;PassMark Network Benchmark&lt;/a&gt; has to say. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Default network settings&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1030" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-disabled-throughput-graph.png" alt="gigabit jumbo frames disabled, throughput graph" border="0" width="680" height="390" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Jumbo Frames enabled&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;img id="_x0000_i1031" src="http://www.codinghorror.com/blog/images/gigabit-jumbo-enabled-throughput-graph.png" alt="gigabit jumbo frames enabled, throughput graph" border="0" width="676" height="391" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This confirms what I saw with the file copy. With jumbo frames enabled, we go from &lt;b&gt;390,638 kilobits/sec to 477,927 kilobits/sec average&lt;/b&gt;. A solid 20% improvement. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Now, jumbo frames aren't a silver bullet. &lt;b&gt;There's a reason jumbo frames are never enabled by default&lt;/b&gt;: some networking equipment can't deal with the non-standard frame sizes. Like all deviations from default settings, it is absolutely possible to make your networking &lt;i&gt;worse&lt;/i&gt; by enabling jumbo frames, so proceed with caution. This SmallNetBuilder article &lt;a href="http://www.smallnetbuilder.com/content/view/30201/54/1/2/"&gt;outlines some of the pitfalls&lt;/a&gt;: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;1) For a large frame to be transmitted intact from end to end, every component on the path must support that frame size. &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The switch(es), router(s), and NIC(s) from one end to the other must &lt;i&gt;all&lt;/i&gt; support the same size of jumbo frame transmission for a successful jumbo frame communication session. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;2) Switches that don't support jumbo frames will &lt;i&gt;drop&lt;/i&gt; jumbo frames.&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;In the event that both ends agree to jumbo frame transmission, there still needs to be end-to-end support for jumbo frames, meaning all the switches and routers must be jumbo frame enabled. At Layer 2, not all gigabit switches support jumbo frames. Those that do will forward the jumbo frames. Those that don't will drop the frames. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;3) For a jumbo packet to pass through a router, both the ingress and egress interfaces must support the larger packet size. Otherwise, the packets will be dropped or fragmented.&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;If the size of the data payload can't be negotiated (this is known as &lt;a href="http://en.wikipedia.org/wiki/Pmtud"&gt;PMTUD&lt;/a&gt;, packet MTU discovery) due to firewalls, the data will be dropped with no warning, or "blackholed". And if the MTU isn't supported, the data will have to be fragmented to a supported size and retransmitted, reducing throughput. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;In addition to these issues, large packets can also hurt latency for gaming and voice-over-IP applications. Bigger isn't always better. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Still, if you regularly transfer large files, jumbo frames are &lt;a href="http://www.smallnetbuilder.com/content/view/30201/54/1/3/"&gt;definitely worth looking into&lt;/a&gt;. My tests showed a solid 20% gain in throughput, and for the type of activity on my little network, I can't think of any downside. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-763141491833049554?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/763141491833049554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=763141491833049554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/763141491833049554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/763141491833049554'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/promise-and-peril-of-jumbo-frames.html' title='The Promise and Peril of Jumbo Frames'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7866099978986335469</id><published>2009-03-05T03:35:00.000-08:00</published><updated>2009-03-05T03:45:20.076-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New technologies'/><title type='text'>280 North’s Atlas Bridges The Gap Between Web Apps And Native iPhone Applications</title><content type='html'>&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3478275&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3478275&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3478275"&gt;FOWA: Atlas&lt;/a&gt; from &lt;a href="http://vimeo.com/user823884"&gt;mobilecrunch&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;http://cappuccino.org/learn/&lt;br /&gt;http://280atlas.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7866099978986335469?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7866099978986335469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7866099978986335469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7866099978986335469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7866099978986335469'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/280-norths-atlas-bridges-gap-between.html' title='280 North’s Atlas Bridges The Gap Between Web Apps And Native iPhone Applications'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-498319637483450942</id><published>2009-03-03T07:07:00.000-08:00</published><updated>2009-03-03T07:11:28.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux tunining'/><category scheme='http://www.blogger.com/atom/ns#' term='linux utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux tips'/><title type='text'>System calls analysys tool</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;strace -cp 18875&lt;br/&gt;&lt;br/&gt;% time     seconds  usecs/call     calls    errors syscall&lt;br/&gt;------ ----------- ----------- --------- --------- ----------------&lt;br/&gt; 77.61    0.019695           0    782458       read&lt;br/&gt; 12.31    0.003123           0      9456        write&lt;br/&gt;  3.60    0.000913           0     47291        fcntl64&lt;br/&gt;  3.32    0.000843           0      9463         open&lt;br/&gt;  1.34    0.000341           0     18920        close&lt;br/&gt;  1.27    0.000323           0     18914        dup2&lt;br/&gt;  0.55    0.000140           0      9457         rt_sigprocmask&lt;br/&gt;  0.00    0.000000           0         6           fstat64&lt;br/&gt;  0.00    0.000000           0        12          getdents64&lt;br/&gt;------ ----------- ----------- --------- --------- ----------------&lt;br/&gt;100.00    0.025378                895977           total&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=b1a972be-20f5-438c-bbf1-61115bd5862d' class='zemanta-pixie-img'/&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/7111452516229749637-498319637483450942?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/498319637483450942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=498319637483450942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/498319637483450942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/498319637483450942'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/system-calls-analysys.html' title='System calls analysys tool'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6115914156450389960</id><published>2009-03-03T06:43:00.000-08:00</published><updated>2009-03-03T06:45:30.157-08:00</updated><title type='text'>Numbers Everyone Should Know</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;h2&gt;Google AppEngine Numbers &lt;/h2&gt; &lt;p&gt;This group of numbers is from Brett Slatkin in &lt;a href='http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine'&gt;Building Scalable Web Apps with Google App Engine&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt; Writes are expensive! &lt;/h3&gt; &lt;div class='content'&gt;&lt;li&gt;Datastore is transactional: writes require disk access&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Disk access means disk seeks&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Rule of thumb: 10ms for a disk seek&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Simple math: 1s / 10ms = 100 seeks/sec maximum&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Depends on:&lt;br/&gt;* The size and shape of your data&lt;br/&gt;* Doing work in batches (batch puts and gets) &lt;h3&gt; Reads are cheap! &lt;/h3&gt; &lt;/li&gt;&lt;li&gt;Reads do not need to be transactional, just consistent&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Data is read from disk once, then it's easily cached&lt;br/&gt;&lt;/li&gt;&lt;li&gt;All subsequent reads come straight from memory&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Rule of thumb: 250usec for 1MB of data from memory&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Simple math: 1s / 250usec = 4GB/sec maximum&lt;br/&gt;* For a 1MB entity, that's 4000 fetches/sec &lt;h2&gt; Numbers Miscellaneous &lt;/h2&gt; &lt;p&gt;This group of numbers is from a presentation &lt;a href='http://moderator.appspot.com/#9/e=c9&amp;amp;t=Numbers+everyone+should+know'&gt;Jeff Dean&lt;/a&gt; gave at a Engineering All-Hands Meeting at Google.&lt;/p&gt; &lt;/li&gt;&lt;li&gt;  L1 cache reference 0.5 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Branch mispredict 5 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; L2 cache reference 7 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Mutex lock/unlock 100 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Main memory reference 100 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Compress 1K bytes with Zippy 10,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Send 2K bytes over 1 Gbps network 20,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Read 1 MB sequentially from memory 250,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Round trip within same datacenter 500,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Disk seek 10,000,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Read 1 MB sequentially from network 10,000,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Read 1 MB sequentially from disk 30,000,000 ns&lt;br/&gt;&lt;/li&gt;&lt;li&gt; Send packet CA-&amp;gt;Netherlands-&amp;gt;CA 150,000,000 ns  &lt;h2&gt; The Lessons &lt;/h2&gt; &lt;/li&gt;&lt;li&gt;Writes are 40 times more expensive than reads.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Global shared data is expensive. This is a fundamental limitation of distributed systems. The lock contention in shared heavily written objects kills performance as transactions become serialized and slow.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Architect for scaling writes.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Optimize for low write contention.&lt;br/&gt;&lt;/li&gt;&lt;li&gt;Optimize wide. Make writes as parallel as you can. &lt;/li&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=c1c7fedf-f309-4c2b-aad3-b81d87f4479f' class='zemanta-pixie-img'/&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/7111452516229749637-6115914156450389960?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6115914156450389960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6115914156450389960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6115914156450389960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6115914156450389960'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/numbers-everyone-should-know.html' title='Numbers Everyone Should Know'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3423215921506666962</id><published>2009-03-03T05:46:00.001-08:00</published><updated>2009-03-03T05:59:33.026-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0 tools for project management'/><title type='text'>Web 2.0 Tools For Project Management</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_1034819"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/douglastokuno/web-20-tools-for-project-management?type=presentation" title="Web 2.0 Tools For Project Management"&gt;Web 2.0 Tools For Project Management&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=web-20-tools-for-project-management-1234811974116287-3&amp;stripped_title=web-20-tools-for-project-management" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=web-20-tools-for-project-management-1234811974116287-3&amp;stripped_title=web-20-tools-for-project-management" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/douglastokuno"&gt;Douglas Tokuno&lt;/a&gt;. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/productivity"&gt;productivity&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/2-0"&gt;2.0&lt;/a&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/7111452516229749637-3423215921506666962?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3423215921506666962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3423215921506666962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3423215921506666962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3423215921506666962'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/web-20-tools-for-project-management.html' title='Web 2.0 Tools For Project Management'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8704917767980863411</id><published>2009-03-01T22:34:00.000-08:00</published><updated>2009-03-01T22:36:07.119-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming concepts'/><title type='text'>10 Papers Every Programmer Should Read</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;a href="http://sunnyday.mit.edu/16.355/parnas-criteria.html"&gt;On the criteria to be used in decomposing systems into modules&lt;/a&gt; – David Parnas&lt;/li&gt;&lt;li&gt;&lt;a href="http://research.sun.com/techrep/1994/abstract-29.html"&gt;A Note On Distributed Computing&lt;/a&gt; – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall&lt;/li&gt;&lt;li&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=365257"&gt;The Next 700 Programming Languages&lt;/a&gt; – P. J. Landin&lt;/li&gt;&lt;li&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=359579"&gt;Can Programming Be Liberated from the von Neumann Style?&lt;/a&gt; – John Backus&lt;/li&gt;&lt;li&gt;&lt;a href="http://cm.bell-labs.com/who/ken/trust.html"&gt;Reflections on Trusting Trust&lt;/a&gt; – Ken Thompson&lt;/li&gt;&lt;li&gt;&lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.6083"&gt;Lisp: Good News, Bad News, How to Win Big&lt;/a&gt; – Richard Gabriel&lt;/li&gt;&lt;li&gt;&lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.363"&gt;An experimental evaluation of the assumption of independence in multiversion programming&lt;/a&gt; – John Knight and Nancy Leveson&lt;/li&gt;&lt;li&gt;&lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.7565"&gt;Arguments and Results&lt;/a&gt; – James Noble&lt;/li&gt;&lt;li&gt;&lt;a href="http://c2.com/doc/oopsla89/paper.html"&gt;A Laboratory For Teaching Object-Oriented Thinking&lt;/a&gt; – Kent Beck, Ward Cunningham&lt;/li&gt;&lt;li&gt;&lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.562"&gt;Programming as an Experience: the inspiration for Self&lt;/a&gt; – David Ungar, Randall B. Smith&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/7111452516229749637-8704917767980863411?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8704917767980863411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8704917767980863411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8704917767980863411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8704917767980863411'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/03/10-papers-every-programmer-should-read.html' title='10 Papers Every Programmer Should Read'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-5981363239413132225</id><published>2009-02-17T04:30:00.000-08:00</published><updated>2009-02-17T04:33:02.050-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LDAP'/><title type='text'>How LDAP Error Codes Map to JNDI Exceptions</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div id='PageTitle'&gt;How LDAP Error Codes Map to JNDI Exceptions&lt;/div&gt;             The LDAP defines a set of status codes that are returned with LDAP responses sent by the LDAP server (see &lt;a href='http://ietf.org/rfc/rfc2251.txt'&gt;RFC 2251&lt;/a&gt;). In the JNDI, error conditions are indicated as checked exceptions that are subclasses of &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;. See the	  &lt;a href='http://java.sun.com/docs/books/tutorial/jndi/ops/exception.html' target='_top'&gt;Naming Exceptions&lt;/a&gt; 	section for an overview of the JNDI exception classes. &lt;p&gt; The LDAP service provider translates the LDAP status code it receives from the LDAP server to the appropriate subclass of &lt;tt&gt;NamingException&lt;/tt&gt;. The following table shows the mapping between LDAP status codes and JNDI exceptions. &lt;/p&gt;   &lt;table width='80%' cellpadding='3' border='1'&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;LDAP Status Code&lt;/th&gt;  &lt;th&gt;Meaning&lt;/th&gt;  &lt;th&gt;Exception or Action&lt;/th&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;0&lt;/td&gt;  &lt;td&gt;Success&lt;/td&gt;  &lt;td&gt;Report success.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;1&lt;/td&gt;  &lt;td&gt;Operations error&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;2&lt;/td&gt;  &lt;td&gt;Protocol error&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/CommunicationException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;CommunicationException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;3&lt;/td&gt;  &lt;td&gt;Time limit exceeded.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/TimeLimitExceededException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;TimeLimitExceededException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;4&lt;/td&gt;  &lt;td&gt;Size limit exceeded.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/SizeLimitExceededException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;SizeLimitExceededException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;5&lt;/td&gt;  &lt;td&gt;Compared false.&lt;/td&gt;  &lt;td&gt;Used by  &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/DirContext.html#search%28javax.naming.Name,%20javax.naming.directory.Attributes%29' target='_blank' class='APILink'&gt;&lt;tt&gt;DirContext.search()&lt;/tt&gt;&lt;/a&gt;. Does not generate an exception.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;6&lt;/td&gt;  &lt;td&gt;Compared true.&lt;/td&gt;  &lt;td&gt; Used by &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/DirContext.html#search%28javax.naming.Name,%20javax.naming.directory.Attributes%29' target='_blank' class='APILink'&gt;&lt;tt&gt;DirContext.search()&lt;/tt&gt;&lt;/a&gt;. Does not generate an exception.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;7&lt;/td&gt;  &lt;td&gt;Authentication method not supported.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/AuthenticationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AuthenticationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;8&lt;/td&gt;  &lt;td&gt;Strong authentication required.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/AuthenticationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AuthenticationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;9&lt;/td&gt;  &lt;td&gt;Partial results being returned.&lt;/td&gt;  &lt;td&gt;If the environment property &lt;tt&gt;"java.naming.referral"&lt;/tt&gt; is  set to &lt;tt&gt;"ignore"&lt;/tt&gt; or the contents of the error do not contain a referral, throw a &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/PartialResultException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;PartialResultException&lt;/tt&gt;&lt;/a&gt;.  Otherwise, use contents to build a referral.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;10&lt;/td&gt;  &lt;td&gt;Referral encountered.&lt;/td&gt;  &lt;td&gt;If the environment property &lt;tt&gt;"java.naming.referral"&lt;/tt&gt; is  set to &lt;tt&gt;"ignore"&lt;/tt&gt;, then ignore. If the property is set to &lt;tt&gt;"throw"&lt;/tt&gt;, throw &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/ReferralException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;ReferralException&lt;/tt&gt;&lt;/a&gt;.  If the property is set to &lt;tt&gt;"follow"&lt;/tt&gt;, then the LDAP provider processes the referral.  If the &lt;tt&gt;"java.naming.ldap.referral.limit"&lt;/tt&gt; property has been exceeded, throw  &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/LimitExceededException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;LimitExceededException&lt;/tt&gt;&lt;/a&gt;. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;11&lt;/td&gt;  &lt;td&gt;Administrative limit exceeded.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/LimitExceededException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;LimitExceededException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;12&lt;/td&gt;  &lt;td&gt;Unavailable critical extension requested.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/OperationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;OperationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;13&lt;/td&gt;  &lt;td&gt;Confidentiality required.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/AuthenticationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AuthenticationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;14&lt;/td&gt;  &lt;td&gt;SASL bind in progress.&lt;/td&gt;  &lt;td&gt; Used internally by the LDAP provider during authentication. &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;16&lt;/td&gt;  &lt;td&gt;No such attribute exists.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/NoSuchAttributeException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NoSuchAttributeException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;17&lt;/td&gt;  &lt;td&gt;An undefined attribute type.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/InvalidAttributeIdentifierException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidAttributeIdentifierException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;18&lt;/td&gt;  &lt;td&gt;Inappropriate matching&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/InvalidSearchFilterException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidSearchFilterException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;19&lt;/td&gt;  &lt;td&gt;A constraint violation.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/InvalidAttributeValueException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidAttributeValueException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;20&lt;/td&gt;  &lt;td&gt;An attribute or value already in use.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/AttributeInUseException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AttributeInUseException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;21&lt;/td&gt;  &lt;td&gt;An invalid attribute syntax.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/InvalidAttributeValueException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidAttributeValueException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;32&lt;/td&gt;  &lt;td&gt;No such object exists.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NameNotFoundException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NameNotFoundException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;33&lt;/td&gt;  &lt;td&gt;Alias problem&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;34&lt;/td&gt;  &lt;td&gt;An invalid DN syntax.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/InvalidNameException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidNameException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;35&lt;/td&gt;  &lt;td&gt;Is a leaf.&lt;/td&gt;  &lt;td&gt;Used by the LDAP provider; usually doesn't generate an exception.&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;36&lt;/td&gt;  &lt;td&gt;Alias dereferencing problem&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;48&lt;/td&gt;  &lt;td&gt;Inappropriate authentication&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/AuthenticationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AuthenticationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;49&lt;/td&gt;  &lt;td&gt;Invalid credentials&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/AuthenticationException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;AuthenticationException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;50&lt;/td&gt;  &lt;td&gt;Insufficient access rights&lt;/td&gt; &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NoPermissionException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NoPermissionException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;51&lt;/td&gt;  &lt;td&gt;Busy&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/ServiceUnavailableException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;ServiceUnavailableException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;52&lt;/td&gt;  &lt;td&gt;Unavailable&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/ServiceUnavailableException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;ServiceUnavailableException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;53&lt;/td&gt;  &lt;td&gt;Unwilling to perform&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/OperationNotSupportedException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;OperationNotSupportedException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;54&lt;/td&gt;  &lt;td&gt;Loop detected.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;64&lt;/td&gt;  &lt;td&gt;Naming violation&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/InvalidNameException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;InvalidNameException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;65&lt;/td&gt;  &lt;td&gt;Object class violation&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/SchemaViolationException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;SchemaViolationException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;66&lt;/td&gt;  &lt;td&gt;Not allowed on non-leaf.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/ContextNotEmptyException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;ContextNotEmptyException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;67&lt;/td&gt;  &lt;td&gt;Not allowed on RDN.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/SchemaViolationException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;SchemaViolationException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;68&lt;/td&gt;  &lt;td&gt;Entry already exists.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NameAlreadyBoundException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NameAlreadyBoundException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;69&lt;/td&gt;  &lt;td&gt;Object class modifications prohibited.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/directory/SchemaViolationException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;SchemaViolationException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;71&lt;/td&gt;  &lt;td&gt;Affects multiple DSAs.&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt;80&lt;/td&gt;  &lt;td&gt;Other&lt;/td&gt;  &lt;td&gt; &lt;a href='http://java.sun.com/javase/6/docs/api/javax/naming/NamingException.html' target='_blank' class='APILink'&gt;&lt;tt&gt;NamingException&lt;/tt&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=d1d4bce3-70b7-47c9-ac88-9752a0168b8d' class='zemanta-pixie-img'/&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/7111452516229749637-5981363239413132225?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/5981363239413132225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=5981363239413132225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5981363239413132225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/5981363239413132225'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/02/how-ldap-error-codes-map-to-jndi.html' title='How LDAP Error Codes Map to JNDI Exceptions'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6841599948595257422</id><published>2009-01-19T23:05:00.000-08:00</published><updated>2009-01-19T23:32:21.760-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='distributed databases'/><category scheme='http://www.blogger.com/atom/ns#' term='RDMS'/><title type='text'>Distributed databases are going to replace RDMS?</title><content type='html'>&lt;strong&gt;Richard Jones of Last.fm just posted an overview with a great deal of engineering insight:&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/"&gt;http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;br /&gt;&lt;strong&gt;Swaroop CH of Yahoo wrote an overview of distributed DBs:&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;a href="http://www.swaroopch.com/notes/Distributed_Storage_Systems"&gt;http://www.swaroopch.com/notes/Distributed_Storage_Systems&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;strong&gt;The End of an Architectural Era(It’s Time for a Complete Rewrite)&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.vldb.org/conf/2007/papers/industrial/p1150-stonebraker.pdf"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.vldb.org/conf/2007/papers/industrial/p1150-stonebraker.pdf"&gt;http://www.vldb.org/conf/2007/papers/industrial/p1150-stonebraker.pdf&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;br /&gt;&lt;strong&gt;The HBase performance&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mail-archive.com/hadoop-user@lucene.apache.org/msg02540.html"&gt;http://www.mail-archive.com/hadoop-user@lucene.apache.org/msg02540.html&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6841599948595257422?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6841599948595257422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6841599948595257422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6841599948595257422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6841599948595257422'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/01/distributed-databases-are-going-to.html' title='Distributed databases are going to replace RDMS?'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7849341621071729964</id><published>2009-01-15T02:13:00.000-08:00</published><updated>2009-01-15T02:14:43.860-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><title type='text'>Another HBase clone: Voldermort project</title><content type='html'>&lt;a href="http://project-voldemort.com/"&gt;http://project-voldemort.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7849341621071729964?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7849341621071729964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7849341621071729964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7849341621071729964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7849341621071729964'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/01/another-hbase-clone-voldermort-project.html' title='Another HBase clone: Voldermort project'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7596347412397935424</id><published>2009-01-15T01:28:00.000-08:00</published><updated>2009-01-15T01:31:57.465-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBoss tools'/><title type='text'>JBoss tools 3 release candidate</title><content type='html'>JBoss tools 3 release candidate was released, could be taken from &lt;a href="http://in.relation.to/Bloggers/JBossTools3CRFromAllOfUsToAllOfYou"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://in.relation.to/service/File/10241"&gt;&lt;img style="cursor: pointer; width: 510px; height: 359px;" src="http://in.relation.to/service/File/10241" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot-4.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7596347412397935424?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7596347412397935424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7596347412397935424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7596347412397935424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7596347412397935424'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/01/jboss-tools-3-release-candidate.html' title='JBoss tools 3 release candidate'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4573265216243747730</id><published>2009-01-08T01:16:00.000-08:00</published><updated>2009-01-13T00:56:04.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mount new disk on linux'/><title type='text'>Mount new disk on CentOS linux</title><content type='html'>&lt;ol&gt;&lt;li&gt;Check what is the new hard disk device name with "fdisk -l", it should be something like /dev/sdb. You can easily identify which is the new drive by running "mount" and finding the drive that exists in "fdisk -l" but is not mounted.&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;mount; fdisk -l;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt;Create a partition on the new drive, (the sample code assumes the disk is /dev/sdb) &lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;echo -ne "n\np\n1\n\n\nw\n" | fdisk /dev/sdb1&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt;Create a filesystem on the new partition, we use ext3 file system.&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt; mkfs.ext3 /dev/sdb1&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt;Create a directory where to mount the partition&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;mkdir /mount/data2&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt;Edit /etc/fstab an add a record for the new drive at the end of the file. This will make the server mount the drive automatically after reboot. Mount options (like noatime and nodiratime) can be added as a comma separated list of values after "defaults": "defaults,noatime,nodiratime"&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;echo "/dev/sdb1  /mount/data2  ext3  defaults 0 0" &gt;&gt; /etc/fstab&lt;span style="font-family: Georgia,serif;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;Linux records information about when files were created and last modified as well as when it was last accessed. There is a cost associated with recording the last access time. Linux has a special mount option for file systems called noatime that can be added to each line that addresses one file system in the /etc/fstab file. If a file system has been mounted with this option, reading accesses to the file system will no longer result in an update to the atime information associated with the file. The importance of the noatime setting is that it eliminates the need by the system to make writes to the file system for files which are simply being read. Since writes can be somewhat expensive, this can result in measurable performance gains."&lt;br /&gt;&lt;br /&gt;nodiratime does the same thing but for directories. I know the beginners guide says to use both mount options on filesystems, but from others I've talked to and places I've read it seems noatime implies nodiratime because noatime is a superset and nodiratime is a subset used specifically to disable it for directories but leave it on for files, and when you use noatime, it does it for everything, files/dirs  &lt;br /&gt;&lt;pre class="codelisting"&gt;   &lt;span style="font-weight: bold;"&gt;echo "/dev/sdb1  /mount/data2  ext3  rw,noatime,nodiratime 0 0" &gt;&gt; /etc/fstab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia,serif;"&gt;&lt;/span&gt;&lt;/pre&gt;      Mount the drive. "mount -a" just mounts everything according to /etc/fstab.&lt;ol&gt;&lt;li&gt;&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;mount -a&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt;&lt;li&gt;Restart the server to make sure it starts ok with the new drive mounted.&lt;div dir="ltr"&gt;&lt;pre class="codelisting"&gt;shutdown -r now&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; &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/7111452516229749637-4573265216243747730?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4573265216243747730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4573265216243747730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4573265216243747730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4573265216243747730'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/01/mount-new-disk-on-centos-linux.html' title='Mount new disk on CentOS linux'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-6593942577442709899</id><published>2009-01-08T00:45:00.000-08:00</published><updated>2009-01-08T00:48:49.592-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZooKeeper'/><title type='text'>An Introduction to ZooKeeper from Yahoo DN</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://developer.yahoo.net/blogs/hadoop/2008/03/intro-to-zookeeper-video.html'&gt;An introduction to ZooKeeper from YDN&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-6593942577442709899?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/6593942577442709899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=6593942577442709899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6593942577442709899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/6593942577442709899'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2009/01/introduction-to-zookeeper-from-yahoo-dn.html' title='An Introduction to ZooKeeper from Yahoo DN'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-8826255483573246700</id><published>2008-12-28T05:01:00.000-08:00</published><updated>2008-12-28T05:40:54.481-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='crontab'/><title type='text'>Tasks management on Linux using crontab</title><content type='html'>Crontab&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;The crontab (cron derives from&lt;em style="margin: 0px; padding: 0px;"&gt;chronos&lt;/em&gt;, Greek for time; tab stands for&lt;em style="margin: 0px; padding: 0px;"&gt;table&lt;/em&gt;) command, found in Unix and Unix-like operating systems, is used to schedule commands to be executed periodically. To see what crontabs are currently running on your system, you can open a terminal and run:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;crontab -l&lt;/pre&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;To edit the list of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em style="margin: 0px; padding: 0px;"&gt;cronjobs&lt;/em&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;you can run:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;crontab -e&lt;/pre&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;This will open a the default editor ( vi or pico) to manipulate the crontab settings. If you save and exit the editor, all your cronjobs are saved into crontab. Cronjobs are written in the following format:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;* * * * * /bin/execute/this/script.sh&lt;/pre&gt;&lt;h2 style="border-bottom: 1px dotted orange; margin: 22px 18px 10px 0px; padding: 10px 0px 0px; font-family: Georgia,'Times New Roman',Times,serif; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; letter-spacing: -1px; font-size: 1.7em; color: rgb(57, 14, 2); clear: both;"&gt;Scheduling explained&lt;/h2&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;As you can see there are 5 stars. The stars represent different date parts in the following order:&lt;/p&gt;&lt;ol style="margin: 10px 30px; padding: 0px 15px;"&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;minute (from 0 to 59)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;hour (from 0 to 23)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;day of month (from 1 to 31)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;month (from 1 to 12)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;day of week (from 0 to 6) (0=Sunday)&lt;/li&gt;&lt;/ol&gt;&lt;h3 style="margin: 8px 15px -8px 0px; padding: 0px; font-family: Georgia,'Times New Roman',Times,serif; font-style: normal; font-variant: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; font-size: 1.5em; color: rgb(195, 78, 35); font-weight: normal; letter-spacing: 0px; clear: both;"&gt;Execute every minute&lt;/h3&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;If you leave the star, or asterisk, it means&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;/strong&gt;. Maybe that's a bit unclear. Let's use the the previous example again:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;* * * * * /bin/execute/this/script.sh&lt;/pre&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;They are all still asterisks! So this means execute&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em style="margin: 0px; padding: 0px;"&gt;/bin/execute/this/script.sh:&lt;/em&gt;&lt;/p&gt;&lt;ol style="margin: 10px 30px; padding: 0px 15px;"&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;minute&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;hour&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/strong&gt;day of the month&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/strong&gt;month&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;every&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/strong&gt;day in the week.&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;In short: This script is being executed every minute. Without exception.&lt;/p&gt;&lt;h3 style="margin: 8px 15px -8px 0px; padding: 0px; font-family: Georgia,'Times New Roman',Times,serif; font-style: normal; font-variant: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; font-size: 1.5em; color: rgb(195, 78, 35); font-weight: normal; letter-spacing: 0px; clear: both;"&gt;Execute every Friday 1AM&lt;/h3&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;So if we want to schedule the script to run at 1AM every Friday, we would need the following cronjob:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;0 1 * * 5 /bin/execute/this/script.sh&lt;/pre&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;Get it? The script is now being executed when the system clock hits:&lt;/p&gt;&lt;ol style="margin: 10px 30px; padding: 0px 15px;"&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;minute: 0&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of hour: 1&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of day of month: * (every day of month)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;of month: * (every month)&lt;/li&gt;&lt;li style="margin: 0px; padding: 0px;"&gt;and weekday: 5 (=Friday)&lt;/li&gt;&lt;/ol&gt;&lt;h3 style="margin: 8px 15px -8px 0px; padding: 0px; font-family: Georgia,'Times New Roman',Times,serif; font-style: normal; font-variant: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; font-size: 1.5em; color: rgb(195, 78, 35); font-weight: normal; letter-spacing: 0px; clear: both;"&gt;Execute 10 past after every hour on the 1st of every month&lt;/h3&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;Here's another one, just for practicing&lt;/p&gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;10 * 1 * * /bin/execute/this/script.sh&lt;/pre&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;Fair enough, it takes some getting used to, but it offers great flexibility.&lt;/p&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(102, 102, 102); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Verdana;font-size:12;"  &gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style="margin: 8px 15px -8px 0px; padding: 0px; font-family: Georgia,'Times New Roman',Times,serif; font-style: normal; font-variant: normal; line-height: normal; font-size-adjust: none; font-stretch: normal; font-size: 1.5em; color: rgb(195, 78, 35); font-weight: normal; letter-spacing: 0px; clear: both;"&gt;If you want to run something every 10 minutes&lt;br /&gt;&lt;/h3&gt;&lt;p style="margin: 10px 15px 10px 0px; padding: 0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(82, 82, 82); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:Verdana;font-size:12;"  &gt;&lt;pre style="border: 1px solid rgb(239, 239, 239); margin: 5px 0px; padding: 10px; text-align: left; display: block; overflow-x: auto; overflow-y: visible; font-family: 'Lucida Console','courier new',monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; font-size-adjust: none; font-stretch: normal; line-height: 12px; white-space: pre; background-color: rgb(252, 252, 249); width: 550px; color: rgb(66, 66, 66);"&gt;0,10,20,30,40,50 * * * * /bin/execute/this/script.sh&lt;br /&gt;&lt;br /&gt;Mailing the crontab output of just one cronjob&lt;br /&gt;&lt;br /&gt;And change the cronjob like this:*/10 * * * * /bin/execute/this/script.sh 2&gt;&amp;amp;1 | mail -s "Cronjob ouput" yourname@&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-8826255483573246700?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/8826255483573246700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=8826255483573246700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8826255483573246700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/8826255483573246700'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/tasks-management-on-linux-using-crontab.html' title='Tasks management on Linux using crontab'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-4498679016882417712</id><published>2008-12-25T02:41:00.000-08:00</published><updated>2009-03-23T03:26:02.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Map-Reduce example'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop installation and configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Running Hadoop with HBase On CentOS Linux (Multi-Node Cluster)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_48al5BONCn4/SVN15FUdDnI/AAAAAAAAAhM/Cl9A0t0SnNc/s1600-h/mapreduce-process.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 259px;" src="http://3.bp.blogspot.com/_48al5BONCn4/SVN15FUdDnI/AAAAAAAAAhM/Cl9A0t0SnNc/s400/mapreduce-process.png" alt="" id="BLOGGER_PHOTO_ID_5283696411376684658" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-family:verdana;"&gt;1.Prerequisites&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;1.1 Configure single nodes&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Use&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt;my tutorial "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://javadialog.blogspot.com/2008/12/running-hadoop-with-hbase-on-centos.html"&gt;Running Hadoop with HBase On CentOS Linux (Single-Node Cluster)&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt;" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;1.2 SSH public access&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Add &lt;/span&gt;&lt;span style="font-size:130%;"&gt;mapping &lt;/span&gt;&lt;span style="font-size:130%;"&gt;to&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;/etc/hosts for each your nodes:&lt;br /&gt;&lt;br /&gt;10.1.0.55     master&lt;br /&gt;10.1.0.56     slave&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To do that you need to add public key from master to slave ~/.ssh/authorized_keys and via verse, so eventually tou should be able to do the following:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@37 /usr/local/bin/hbase]ssh master&lt;br /&gt;The authenticity of host 'master (10.1.0.55)' can't be established.&lt;br /&gt;RSA key fingerprint is 09:e2:73:ac:6f:42:d1:da:13:20:76:10:36:29:c4:62.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;Warning: Permanently added 'master,10.1.0.55' (RSA) to the list of known hosts.&lt;br /&gt;Last login: Thu Dec 25 07:19:16 2008 from slave&lt;br /&gt;[root@37 ~]exit&lt;br /&gt;logout&lt;br /&gt;Connection to master closed.&lt;br /&gt;[root@37 /usr/local/bin/hbase]ssh slave&lt;br /&gt;The authenticity of host 'slave (10.1.0.56)' can't be established.&lt;br /&gt;RSA key fingerprint is 5c:4f:81:19:ad:f3:78:02:ce:64:f1:67:10:ca:c5:b8.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;Warning: Permanently added 'slave,10.1.0.56' (RSA) to the list of known hosts.&lt;br /&gt;Last login: Thu Dec 25 07:16:47 2008 from 38.d.de.static.xlhost.com&lt;br /&gt;[root@38 ~]exit&lt;br /&gt;logout&lt;br /&gt;Connection to slave closed.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt; &lt;span class="mw-headline"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt; 2.Cluster Overview&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;The master node will also act as a slave because we only have two machines available in our cluster but still want to spread data storage and processing to multiple machines. &lt;img id="ft_1230213104083" style="border: 1px solid transparent; padding: 0px; cursor: pointer; display: block; visibility: visible; position: absolute; z-index: 100; width: 30px; height: 20px; opacity: 1; margin-bottom: 5px; margin-right: 7px; left: 692px; top: 242px;" title="Insert current track Signatune" src="chrome://foxytunes-public/content/signatures/signature-button.png" class="foxytunes-signature-button" /&gt;&lt;/p&gt; &lt;center&gt; &lt;p&gt;&lt;a href="http://www.michael-noll.com/wiki/Image:Hadoop-multi-node-cluster-overview.png" class="image" title="Image:Hadoop-multi-node-cluster-overview.png"&gt;&lt;img alt="Image:Hadoop-multi-node-cluster-overview.png" src="http://www.michael-noll.com/w/images/Hadoop-multi-node-cluster-overview.png" border="0" width="520" height="404" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;/center&gt; &lt;p&gt;The master node will run the "master" daemons for each layer: namenode for the HDFS storage layer, and jobtracker for the MapReduce processing layer. Both machines will run the "slave" daemons: datanode for the HDFS layer, and tasktracker for MapReduce processing layer. Basically, the "master" daemons are responsible for coordination and management of the "slave" daemons while the latter will do the actual data storage and data processing work.&lt;br /&gt;&lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:130%;"&gt;3. Hadoop core Configuration&lt;/span&gt;&lt;/p&gt;&lt;h3&gt; &lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt; &lt;span style="font-family:verdana;"&gt;3.1 conf/masters (master only) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;The &lt;tt&gt;conf/masters&lt;/tt&gt; file defines the master nodes of our multi-node cluster. &lt;/p&gt;&lt;p&gt;On &lt;tt&gt;master&lt;/tt&gt;, update &lt;tt&gt;&lt;span style="font-family:Georgia,serif;"&gt;$&lt;/span&gt;HADOOP_HOME/conf/masters&lt;/tt&gt; that it looks like this: &lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;master&lt;br /&gt;&lt;/pre&gt; &lt;a name="conf.2Fslaves_.28master_only.29"&gt;&lt;/a&gt;&lt;h3&gt; &lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"  style="font-family:verdana;"&gt; 3.2 conf/slaves (master only) &lt;/span&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;This &lt;tt&gt;conf/slaves&lt;/tt&gt; file lists the hosts, one per line, where the Hadoop slave daemons (datanodes and tasktrackers) will run. We want both the &lt;tt&gt;master&lt;/tt&gt; box and the &lt;tt&gt;slave&lt;/tt&gt; box to act as Hadoop slaves because we want both of them to store and process data. &lt;/p&gt;&lt;p&gt;On &lt;tt&gt;master&lt;/tt&gt;, update &lt;tt&gt;$HADOOP_HOME/conf/slaves&lt;/tt&gt; that it looks like this: &lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;master&lt;br /&gt;slave&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;If you have additional slave nodes, just add them to the &lt;tt&gt;conf/slaves&lt;/tt&gt; file, one per line (do this on all machines in the cluster). &lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt; master&lt;br /&gt;slave&lt;br /&gt;slave01&lt;br /&gt;slave02&lt;br /&gt;slave03&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3  style="font-weight: bold;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt;3.3 conf/hadoop-site.xml (all machines)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;Following a sample configuration for all hosts, explanation of all parameters &lt;a href="http://hadoop.apache.org/core/docs/current/hadoop-default.html"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;!-- Put site-specific property overrides in this file. --&gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;hadoop.tmp.dir&lt;/name&gt;&lt;br /&gt;&lt;value&gt;/usr/local/bin/hadoop/datastore/hadoop-${user.name}&lt;/value&gt;&lt;br /&gt;&lt;description&gt;A base for other temporary directories.&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;fs.default.name&lt;/name&gt;&lt;br /&gt;&lt;value&gt;hdfs://master:54310&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The name of the default file system.  A URI whose&lt;br /&gt;scheme and authority determine the FileSystem implementation.  The&lt;br /&gt;uri's scheme determines the config property (fs.SCHEME.impl) naming&lt;br /&gt;the FileSystem implementation class.  The uri's authority is used to&lt;br /&gt;determine the host, port, etc. for a filesystem.&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.job.tracker&lt;/name&gt;&lt;br /&gt;&lt;value&gt;master:54311&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The host and port that the MapReduce job tracker runs&lt;br /&gt;at.  If "local", then jobs are run in-process as a single map&lt;br /&gt;and reduce task.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;dfs.replication&lt;/name&gt;&lt;br /&gt;&lt;value&gt;1&lt;/value&gt;&lt;br /&gt;&lt;description&gt;Default block replication.&lt;br /&gt;The actual number of replications can be specified when the file is created.&lt;br /&gt;The default is used if replication is not specified in create time.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.reduce.tasks&lt;/name&gt;&lt;br /&gt;&lt;value&gt;8&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The default number of reduce tasks per job.  Typically set&lt;br /&gt;to a prime close to the number of available hosts.  Ignored when&lt;br /&gt;mapred.job.tracker is "local".&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.tasktracker.reduce.tasks.maximum&lt;/name&gt;&lt;br /&gt;&lt;value&gt;8&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The maximum number of reduce tasks that will be run&lt;br /&gt;simultaneously by a task tracker.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.child.java.opts&lt;/name&gt;&lt;br /&gt;&lt;value&gt;-Xmx500m&lt;/value&gt;&lt;br /&gt;&lt;description&gt;Java opts for the task tracker child processes.&lt;br /&gt;The following symbol, if present, will be interpolated: @taskid@ is replaced&lt;br /&gt;by current TaskID. Any other occurrences of '@' will go unchanged.&lt;br /&gt;For example, to enable verbose gc logging to a file named for the taskid in&lt;br /&gt;/tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:&lt;br /&gt;-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc&lt;br /&gt;&lt;br /&gt;The configuration variable mapred.child.ulimit can be used to control the&lt;br /&gt;maximum virtual memory of the child processes.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Very important: now format each node data storage before proceeding.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;3.4 Start/Stop Hadoop cluster&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;HDFS daemons&lt;/span&gt;: start/stop namenode command  &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;bin/start-dfs.sh&lt;/span&gt; or &lt;span style=";font-family:verdana;font-size:100%;"  &gt;bin/stop-dfs.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;MapReduce daemons&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;: &lt;/span&gt;&lt;span style="font-weight: normal;font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-weight: normal;"&gt;r&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-weight: normal;"&gt;un the command &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;$HADOOP_HOME/bin/start-mapred.sh&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; on the machine you want the jobtracker to run on. This will bring up the MapReduce cluster with the jobtracker running on the machine you ran the previous command on, and tasktrackers on the machines listed in the &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;conf/slaves&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; file. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;[root@37 /usr/local/bin/hadoop]bin/start-dfs.sh&lt;br /&gt;starting namenode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-namenode-37.c3.33.static.xlhost.com.out&lt;br /&gt;master: starting datanode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-datanode-37.c3.33.static.xlhost.com.out&lt;br /&gt;slave: starting datanode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-datanode-38.c3.33.static.xlhost.com.out&lt;br /&gt;master: starting secondarynamenode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-secondarynamenode-37.c3.33.static.xlhost.com.out&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/start-mapred.sh&lt;br /&gt;starting jobtracker, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-jobtracker-37.c3.33.static.xlhost.com.out&lt;br /&gt;master: starting tasktracker, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-tasktracker-37.c3.33.static.xlhost.com.out&lt;br /&gt;slave: starting tasktracker, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-tasktracker-38.c3.33.static.xlhost.com.out&lt;br /&gt;[root@37 /usr/local/bin/hadoop]jps]&lt;br /&gt;-bash: jps]: command not found&lt;br /&gt;[root@37 /usr/local/bin/hadoop]jps&lt;br /&gt;28638 DataNode&lt;br /&gt;29052 Jps&lt;br /&gt;28527 NameNode&lt;br /&gt;28764 SecondaryNameNode&lt;br /&gt;28847 JobTracker&lt;br /&gt;28962 TaskTracker&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/hadoop dfs -copyFromLocal LICENSE.txt testWordCount&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/hadoop dfs -ls&lt;br /&gt;Found 1 items&lt;br /&gt;-rw-r--r--   1 root supergroup      11358 2008-12-25 08:20 /user/root/testWordCount&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/hadoop jar hadoop-0.18.2-examples.jar wordcount testWordCount testWordCount-out&lt;br /&gt;08/12/25 08:21:46 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 08:21:46 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 08:21:47 INFO mapred.JobClient: Running job: job_200812250818_0001&lt;br /&gt;08/12/25 08:21:48 INFO mapred.JobClient:  map 0% reduce 0%&lt;br /&gt;08/12/25 08:21:53 INFO mapred.JobClient:  map 50% reduce 0%&lt;br /&gt;08/12/25 08:21:55 INFO mapred.JobClient:  map 100% reduce 0%&lt;br /&gt;08/12/25 08:22:01 INFO mapred.JobClient:  map 100% reduce 12%&lt;br /&gt;08/12/25 08:22:02 INFO mapred.JobClient:  map 100% reduce 25%&lt;br /&gt;08/12/25 08:22:05 INFO mapred.JobClient:  map 100% reduce 41%&lt;br /&gt;08/12/25 08:22:09 INFO mapred.JobClient:  map 100% reduce 52%&lt;br /&gt;08/12/25 08:22:14 INFO mapred.JobClient:  map 100% reduce 64%&lt;br /&gt;08/12/25 08:22:19 INFO mapred.JobClient:  map 100% reduce 66%&lt;br /&gt;08/12/25 08:22:24 INFO mapred.JobClient:  map 100% reduce 77%&lt;br /&gt;08/12/25 08:22:29 INFO mapred.JobClient:  map 100% reduce 79%&lt;br /&gt;08/12/25 08:25:30 INFO mapred.JobClient:  map 100% reduce 89%&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient: Job complete: job_200812250818_0001&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient: Counters: 17&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:   Job Counters&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Data-local map tasks=1&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Launched reduce tasks=9&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Launched map tasks=2&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Rack-local map tasks=1&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:   Map-Reduce Framework&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Map output records=1581&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Reduce input records=593&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Map output bytes=16546&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Map input records=202&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Combine output records=1292&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Map input bytes=11358&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Combine input records=2280&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Reduce input groups=593&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Reduce output records=593&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:   File Systems&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     HDFS bytes written=6117&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Local bytes written=19010&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     HDFS bytes read=13872&lt;br /&gt;08/12/25 08:26:12 INFO mapred.JobClient:     Local bytes read=8620&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;4. HBase configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4.1 $HBASE_HOME/hbase-site.sh&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;hbase.rootdir&lt;/name&gt;&lt;br /&gt;&lt;value&gt;hdfs://master:54310/hbase&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The directory shared by region servers.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;hbase.master&lt;/name&gt;&lt;br /&gt;&lt;value&gt;master:60000&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The host and port that the HBase master runs at.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4.2 $HBASE_HOME/conf/regionservers&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;master&lt;br /&gt;slave&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4.3 Start HBase on master&lt;br /&gt;&lt;br /&gt;Use command $HBASE_HOME/bin/hbase-start.sh&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@37 /usr/local/bin/hbase]bin/start-hbase.sh&lt;br /&gt;starting master, logging to /usr/local/bin/hbase/bin/../logs/hbase-root-master-37.c3.33.static.xlhost.com.out&lt;br /&gt;slave: starting regionserver, logging to /usr/local/bin/hbase/bin/../logs/hbase-root-regionserver-38.c3.33.static.xlhost.com.out&lt;br /&gt;master: starting regionserver, logging to /usr/local/bin/hbase/bin/../logs/hbase-root-regionserver-37.c3.33.static.xlhost.com.out&lt;br /&gt;[root@37 /usr/local/bin/hbase]jps&lt;br /&gt;30362 SecondaryNameNode&lt;br /&gt;30455 JobTracker&lt;br /&gt;30570 TaskTracker&lt;br /&gt;30231 DataNode&lt;br /&gt;32003 Jps&lt;br /&gt;31772 HMaster&lt;br /&gt;30115 NameNode&lt;br /&gt;31919 HRegionServer&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On slave you suppose to see the following output:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@38 /usr/local/bin/hbase]jps&lt;br /&gt;513 DataNode&lt;br /&gt;6360 Jps&lt;br /&gt;6214 HRegionServer&lt;br /&gt;628 TaskTracker&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-4498679016882417712?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/4498679016882417712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=4498679016882417712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4498679016882417712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/4498679016882417712'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/running-hadoop-with-hbase-on-centos_25.html' title='Running Hadoop with HBase On CentOS Linux (Multi-Node Cluster)'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_48al5BONCn4/SVN15FUdDnI/AAAAAAAAAhM/Cl9A0t0SnNc/s72-c/mapreduce-process.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-2490755809940141832</id><published>2008-12-24T06:41:00.000-08:00</published><updated>2008-12-24T07:43:46.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogspot tips'/><title type='text'>Code highlighting in blogspot</title><content type='html'>Adding syntax highlight to blogger is very simple, first of all you need to download &lt;a href="http://code.google.com/p/syntaxhighlighter/downloads/list"&gt;SyntaxHighlighter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now extract the contents of the package and upload the Scripts and Styles folder to any host or website which can be linked from your blog.&lt;br /&gt;&lt;br /&gt;To make it work, you will need to edit your blog's template and add the following code after the -- end outer-wrapper -- tag:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="JScript"&gt;&lt;br /&gt;&lt;link href="http://YOUR_HOST_URL/shBrushJava.js" rel="'stylesheet'" type="'text/css'/"&gt;&lt;br /&gt;&lt;script language="'javascript'" src="%27http://%5BYOUR"&gt;&lt;br /&gt;&lt;script language="'javascript'"&gt;&lt;br /&gt;dp.SyntaxHighlighter.BloggerMode();&lt;br /&gt;dp.SyntaxHighlighter.HighlightAll('code');&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To add some java code to your blog use:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The list of supported languages and their aliases can be found at the syntaxhighlighter &lt;a href="http://code.google.com/p/syntaxhighlighter/w/list"&gt;wiki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-2490755809940141832?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/2490755809940141832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=2490755809940141832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2490755809940141832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/2490755809940141832'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/code-highlighting-in-blogspot.html' title='Code highlighting in blogspot'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-7851518615210587228</id><published>2008-12-24T00:06:00.000-08:00</published><updated>2009-03-23T23:25:12.665-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop installation and configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop single node'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><title type='text'>Running Hadoop with HBase on CentOS Linux (Single-Node Cluster)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_48al5BONCn4/SVdOfXfKETI/AAAAAAAAAhU/vdDl8bNqA4g/s1600-h/architecture.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 199px;" src="http://1.bp.blogspot.com/_48al5BONCn4/SVdOfXfKETI/AAAAAAAAAhU/vdDl8bNqA4g/s400/architecture.gif" alt="" id="BLOGGER_PHOTO_ID_5284778988530176306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4  style="font-weight: bold;font-family:verdana;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;1.Purpose of this tutorial:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;br /&gt;In this tutorial, I will describe the required steps for setting up a single-node &lt;a href="http://hadoop.apache.org/core/" class="external text" title="http://hadoop.apache.org/core/" rel="nofollow"&gt;Hadoop/Hbase&lt;/a&gt; cluster using the &lt;a href="http://hadoop.apache.org/core/docs/current/hdfs_design.html" class="external text" title="http://hadoop.apache.org/core/docs/current/hdfs_design.html" rel="nofollow"&gt;Hadoop Distributed File System (HDFS)&lt;/a&gt; on &lt;a href="http://www.google.co.il/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.centos.org%2F&amp;amp;ei=2_JRSYj-FuHAtgeNl_S9Dg&amp;amp;usg=AFQjCNGZFCAPfILZrXE1htT5B1NQ-Wr4-A&amp;amp;sig2=3YVUiQ9DK01F3gxywA5zbw"&gt;&lt;span style="text-decoration: underline;"&gt;CentOS&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.google.co.il/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.centos.org%2F&amp;amp;ei=2_JRSYj-FuHAtgeNl_S9Dg&amp;amp;usg=AFQjCNGZFCAPfILZrXE1htT5B1NQ-Wr4-A&amp;amp;sig2=3YVUiQ9DK01F3gxywA5zbw" class="external text" title="http://www.ubuntu.com/" rel="nofollow"&gt; Linux&lt;/a&gt;.&lt;p&gt;&lt;a href="http://hadoop.apache.org/core/" class="external text" title="http://hadoop.apache.org/core/" rel="nofollow"&gt;Hadoop&lt;/a&gt; is a framework written in Java for running applications on large clusters of commodity hardware and incorporates features similar to those of the &lt;a href="http://en.wikipedia.org/wiki/Google_File_System" class="external text" title="http://en.wikipedia.org/wiki/Google_File_System" rel="nofollow"&gt;Google File System&lt;/a&gt; and of &lt;a href="http://en.wikipedia.org/wiki/MapReduce" class="external text" title="http://en.wikipedia.org/wiki/MapReduce" rel="nofollow"&gt;MapReduce&lt;/a&gt;. &lt;a href="http://hadoop.apache.org/core/docs/current/hdfs_design.html" class="external text" title="http://hadoop.apache.org/core/docs/current/hdfs_design.html" rel="nofollow"&gt;HDFS&lt;/a&gt; is a highly fault-tolerant distributed file system and like Hadoop designed to be deployed on low-cost hardware. It provides high throughput access to application data and is suitable for applications that have large data sets.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;HBase is the Hadoop database.  Its an open-source, distributed, column-oriented store modeled after the Google paper,   &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;Bigtable: A Distributed Storeage System for Structured Data&lt;/a&gt; by Chang et al.  Just as Bigtable leverages the distributed data storage provided by the Google File System, HBase provides  Bigtable-like capabilities on top of Hadoop.&lt;/p&gt;     &lt;p&gt;&lt;a href="http://hadoop.apache.org/hbase/"&gt;HBase&lt;/a&gt;'s goal is the hosting of very large tables -- billions of rows X millions of columns  -- atop clusters of commodity hardware. &lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;2.&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;Prerequisites&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;a href="http://www.ubuntu.com/" class="external text" title="http://www.ubuntu.com/" rel="nofollow"&gt; &lt;/a&gt;&lt;a href="http://www.google.co.il/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.centos.org%2F&amp;amp;ei=2_JRSYj-FuHAtgeNl_S9Dg&amp;amp;usg=AFQjCNGZFCAPfILZrXE1htT5B1NQ-Wr4-A&amp;amp;sig2=3YVUiQ9DK01F3gxywA5zbw"&gt;&lt;span style="text-decoration: underline;"&gt;CentOS&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.google.co.il/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.centos.org%2F&amp;amp;ei=2_JRSYj-FuHAtgeNl_S9Dg&amp;amp;usg=AFQjCNGZFCAPfILZrXE1htT5B1NQ-Wr4-A&amp;amp;sig2=3YVUiQ9DK01F3gxywA5zbw" class="external text" title="http://www.ubuntu.com/" rel="nofollow"&gt; Linux&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://hadoop.apache.org/core/" class="external text" title="http://hadoop.apache.org/core/" rel="nofollow"&gt;Hadoop&lt;/a&gt; &lt;span style="font-family:verdana;"&gt;0.18.2&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@localhost bin]# wget 'http://mirror.mirimar.net/apache/hadoop/core/hadoop-0.18.2/hadoop-0.18.2.tar.gz'&lt;br /&gt;--02:49:53--  http://mirror.mirimar.net/apache/hadoop/core/hadoop-0.18.2/hadoop-0.18.2.tar.gz&lt;br /&gt;Resolving mirror.mirimar.net... 194.90.150.47&lt;br /&gt;Connecting to mirror.mirimar.net|194.90.150.47|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 16836495 (16M) [application/x-gzip]&lt;br /&gt;Saving to: `hadoop-0.18.2.tar.gz'&lt;br /&gt;&lt;br /&gt;100%[=========================================================================================================================================&gt;] 16,836,495   471K/s   in 36s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li style="font-family: verdana;"&gt;HBase 0.18.1&lt;/li&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@localhost bin]# wget 'http://mirror.mirimar.net/apache/hadoop/hbase/hbase-0.18.1/hbase-0.18.1.tar.gz'&lt;br /&gt;--02:51:42--  http://mirror.mirimar.net/apache/hadoop/hbase/hbase-0.18.1/hbase-0.18.1.tar.gz&lt;br /&gt;Resolving mirror.mirimar.net... 194.90.150.47&lt;br /&gt;Connecting to mirror.mirimar.net|194.90.150.47|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 16295734 (16M) [application/x-gzip]&lt;br /&gt;Saving to: `hbase-0.18.1.tar.gz'&lt;br /&gt;&lt;br /&gt;100%[=========================================================================================================================================&gt;] 16,295,734   496K/s   in 34s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;JDK1.5.14&lt;/span&gt; from Sun&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SSH&lt;/li&gt;&lt;li&gt;Edit environment sessings&lt;/li&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@34 ~]# vi ~/.bash_profile&lt;br /&gt;// JDK installation directory&lt;br /&gt;export JAVA_HOME=/usr/local/bin/jdk1.5.0_14&lt;br /&gt;PATH=$JAVA_HOME/bin:$PATH:$HOME/bin&lt;br /&gt;export HADOOP_HOME=/usr/local/bin/hadoop&lt;br /&gt;export HBASE_HOME=/usr/local/bin/hbase&lt;br /&gt;//optional&lt;br /&gt;export PS1="[\u@\h \w]"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/ul&gt; &lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;&lt;span style="font-weight: normal;font-size:85%;"&gt;Please don't forget to add all environment variables to ~/.bash_profile, otherwise all exports will be deleted after you disconnect your SSH session.  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt;2.1 Java&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;&lt;span style="font-weight: normal;font-size:85%;"&gt;For now we'll use HBase 0.18.1 which was compiled with JDK1.5 and Hadoop 0.18.2 which supports jdk1.5.x, today Hadoop 0.19.0 is available, but it requires jdk1.6, HBase suppose to support jdk1.6 only in version 0.19&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;Install&lt;/span&gt; JDK1.5.14,&lt;br /&gt;&lt;/p&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@localhost /usr/local/bin]wget 'http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_14-linux-i586.bin?BundledLineItemUUID=PspIBe.oQkIAAAEeWNw8f4HX&amp;amp;OrderID=na1IBe.ouqIAAAEePNw8f4HX&amp;amp;ProductID=YOzACUFBuXAAAAEYlak5AXuQ&amp;amp;FileName=/jdk-1_5_0_14-linux-i586.bin' -O jdk-1_5_0_14-linux-i586.bin&lt;br /&gt;--03:25:00--  http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_14-linux-i586.bin?BundledLineItemUUID=PspIBe.oQkIAAAEeWNw8f4HX&amp;amp;OrderID=na1IBe.ouqIAAAEePNw8f4HX&amp;amp;ProductID=YOzACUFBuXAAAAEYlak5AXuQ&amp;amp;FileName=/jdk-1_5_0_14-linux-i586.bin&lt;br /&gt;Resolving cds.sun.com... 72.5.239.134&lt;br /&gt;Connecting to cds.sun.com|72.5.239.134|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 302 Found&lt;br /&gt;Location: http://cds-esd.sun.com/ESD37/JSCDL/jdk/1.5.0_14/jdk-1_5_0_14-linux-i586.bin?AuthParam=1230539222_7e7c419133c9fb57c076e8e08293fd8c&amp;amp;TicketId=B%2Fw5lxuBTFhPQB1LOFJTnQTr&amp;amp;GroupName=CDS&amp;amp;FilePath=/ESD37/JSCDL/jdk/1.5.0_14/jdk-1_5_0_14-linux-i586.bin&amp;amp;File=jdk-1_5_0_14-linux-i586.bin [following]&lt;br /&gt;--03:25:01--  http://cds-esd.sun.com/ESD37/JSCDL/jdk/1.5.0_14/jdk-1_5_0_14-linux-i586.bin?AuthParam=1230539222_7e7c419133c9fb57c076e8e08293fd8c&amp;amp;TicketId=B%2Fw5lxuBTFhPQB1LOFJTnQTr&amp;amp;GroupName=CDS&amp;amp;FilePath=/ESD37/JSCDL/jdk/1.5.0_14/jdk-1_5_0_14-linux-i586.bin&amp;amp;File=jdk-1_5_0_14-linux-i586.bin&lt;br /&gt;Resolving cds-esd.sun.com... 98.27.88.9, 98.27.88.39&lt;br /&gt;Connecting to cds-esd.sun.com|98.27.88.9|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 49649265 (47M) [application/x-sdlc]&lt;br /&gt;Saving to: `jdk-1_5_0_14-linux-i586.bin'&lt;br /&gt;&lt;br /&gt;100%[=========================================================================================================================================&gt;] 49,649,265  5.36M/s   in 9.0s&lt;br /&gt;&lt;br /&gt;03:25:11 (5.25 MB/s) - `jdk-1_5_0_14-linux-i586.bin' saved [49649265/49649265]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;define JAVA_HOME and add $JAVA_HOME/bin&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;to $PATH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;2.2 &lt;/span&gt;SSH public key authentication&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="mw-headline"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal;"&gt;H&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;adoop requires SSH public access to manage its nodes, i.e. remote machines plus your local machine if you want to use Hadoop on it, so&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); margin: 20px 0pt; padding: 0pt 10px; background: rgb(238, 238, 238) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;pre&gt;[root@rt ~/.ssh] &lt;span style="font-weight: bold;"&gt;ssh-keygen -t rsa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;//This will create two files in your &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt;~/.ssh &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;directory &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;//&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt;id_rsa: &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;your&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;private key&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;//&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 153, 153);"&gt;id_rsa.pub: &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 153, 153);"&gt;is your public key.&lt;/span&gt;&lt;br /&gt;[root@rt ~/.ssh]&lt;span style="font-weight: bold;"&gt; cat ~/.ssh/id_rsa.pub&lt;/span&gt; &gt;&gt; ~/.ssh/authorized_keys&lt;br /&gt;[root@rt ~/.ssh] &lt;span style="font-weight: bold;"&gt;ssh localhost&lt;/span&gt;&lt;br /&gt;The authenticity of host 'localhost (127.0.0.1)' can't be established.&lt;br /&gt;RSA key fingerprint is 55:d7:91:86:ea:86:8f:51:89:9f:68:b0:75:88:52:72.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)? yes&lt;br /&gt;Warning: Permanently added 'localhost' (RSA) to the list of known hosts.&lt;br /&gt;[root@rt ~]&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p style="font-style: italic; color: rgb(51, 153, 153);"&gt;&lt;/p&gt; &lt;/div&gt;&lt;p&gt;As you see the final test is to see if you able to make ssh public authentication connection to the localhost&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If the SSH connection fails, these general tips might help: &lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;span style="font-size:100%;"&gt;Enable debugging with &lt;tt&gt;ssh -vvv localhost&lt;/tt&gt; and investigate the error in detail. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; Check the SSH server configuration in &lt;tt&gt;/etc/ssh/sshd_config&lt;/tt&gt;, in particular the options &lt;tt style="font-weight: bold;"&gt;PubkeyAuthentication&lt;/tt&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;(which should be set to &lt;tt&gt;yes&lt;/tt&gt;) and &lt;tt style="font-weight: bold;"&gt;AllowUsers&lt;/tt&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;(if this option is active, add the &lt;tt&gt;hadoop&lt;/tt&gt; user to it). If you made any changes to the SSH server configuration file, you can force a configuration reload with &lt;tt&gt;sudo &lt;span style="font-weight: bold;"&gt;/etc/init.d/ssh reload&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt;2.3 Disabling IPv6 &lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;To disable IPv6 on CentOS Linux, open &lt;tt&gt;/etc/modprobe.d/blacklist&lt;/tt&gt; in the editor of your choice and add the following lines to the end of the file:  &lt;pre&gt;&lt;span style="font-weight: bold;"&gt; # disable IPv6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; blacklist ipv6&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;You have to reboot your machine in order to make the changes take effect.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2.4 Edit open files limit.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Edit file /etc/security/limits.conf, add the following lines:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;root             -       nofile          100000&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;root             -       locks           100000&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Run ulimit -n 1000000 in shell.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;&lt;span style=";font-family:verdana;font-size:130%;"&gt;3.Hadoop&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;3.1 Installation&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;- Unpack hadoop archive to &lt;/span&gt;&lt;span style="font-size:100%;"&gt;/usr/local/bin (could any directory)&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;- Move unpacked directory to &lt;/span&gt;&lt;span style="font-size:100%;"&gt;/usr/local/bin/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;hadoop: mv hadoop.18.2 hadoop&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;- Set HADOOP_HOME: export &lt;/span&gt;&lt;span style="font-size:100%;"&gt;HADOOP_HOME=&lt;/span&gt;&lt;span style="font-size:100%;"&gt;/usr/local/bin/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;hadoop&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"&gt;3.2 Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Set up JAVA_HOME in  &lt;span style="font-size:100%;"&gt;$HADOOP_HOME/&lt;span style="font-weight: bold;"&gt;conf/hadoop-env.sh&lt;/span&gt; to point to your java location:&lt;br /&gt;&lt;/span&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;//The java implementation to use.  Required.&lt;br /&gt;export JAVA_HOME=/usr/local/bin/jdk1.5.0_14&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Set up &lt;span style="font-size:100%;"&gt;$HADOOP_HOME/conf/hadoop-site.sh&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Any site-specific configuration of Hadoop is configured in &lt;tt&gt;$HADOOP_HOME/conf/hadoop-site.xml&lt;/tt&gt;. Here we will configure the directory where Hadoop will store its data files, the ports it listens to, etc. Our setup will use Hadoop's Distributed File System, &lt;a href="http://hadoop.apache.org/core/docs/current/hdfs_design.html" class="external text" title="http://hadoop.apache.org/core/docs/current/hdfs_design.html" rel="nofollow"&gt;HDFS&lt;/a&gt;, even though our little "cluster" only contains our single local machine. &lt;p&gt;You can leave the settings below as is with the exception of the &lt;tt&gt;hadoop.tmp.dir&lt;/tt&gt; variable which you have to change to the directory of your choice, for example:&lt;/p&gt;&lt;p&gt; &lt;tt style="font-weight: bold;"&gt;/usr/local/hadoop-datastore/hadoop-${user.name}&lt;/tt&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hadoop will expand &lt;tt&gt;${user.name}&lt;/tt&gt; to the system user which is running Hadoop, so in our case this will be &lt;tt&gt;hadoop&lt;/tt&gt; and thus the final path will be &lt;tt&gt;/usr/local/hadoop-datastore/hadoop-hadoop&lt;/tt&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;hadoop.tmp.dir&lt;/name&gt;&lt;br /&gt;&lt;value&gt;/usr/local/bin/hadoop/datastore/hadoop-${user.name}&lt;/value&gt;&lt;br /&gt;&lt;description&gt;A base for other temporary directories.&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;fs.default.name&lt;/name&gt;&lt;br /&gt;&lt;value&gt;hdfs://master:54310&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The name of the default file system.  A URI whose&lt;br /&gt;scheme and authority determine the FileSystem implementation.  The&lt;br /&gt;uri's scheme determines the config property (fs.SCHEME.impl) naming&lt;br /&gt;the FileSystem implementation class.  The uri's authority is used to&lt;br /&gt;determine the host, port, etc. for a filesystem.&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.job.tracker&lt;/name&gt;&lt;br /&gt;&lt;value&gt;master:54311&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The host and port that the MapReduce job tracker runs&lt;br /&gt;at.  If "local", then jobs are run in-process as a single map&lt;br /&gt;and reduce task.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.reduce.tasks&lt;/name&gt;&lt;br /&gt;&lt;value&gt;4&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The default number of reduce tasks per job.  Typically set&lt;br /&gt;to a prime close to the number of available hosts.  Ignored when&lt;br /&gt;mapred.job.tracker is "local".&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;mapred.tasktracker.reduce.tasks.maximum&lt;/name&gt;&lt;br /&gt;&lt;value&gt;4&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The maximum number of reduce tasks that will be run&lt;br /&gt;simultaneously by a task tracker.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;dfs.replication&lt;/name&gt;&lt;br /&gt;&lt;value&gt;2&lt;/value&gt;&lt;br /&gt;&lt;description&gt;Default block replication.&lt;br /&gt;The actual number of replications can be specified when the file is created.&lt;br /&gt;The default is used if replication is not specified in create time.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt; &lt;span style="font-size:100%;"&gt;&lt;span class="mw-headline"&gt; 2.2 Formatting the name node &lt;/span&gt;&lt;/span&gt;&lt;/h4&gt; &lt;p&gt;The first step to starting up your Hadoop installation is formatting the Hadoop filesystem which is implemented on top of the local filesystem of your "cluster" (which includes only your local machine if you followed this tutorial). You need to do this the first time you set up a Hadoop cluster. Do not format a running Hadoop filesystem, this will cause all your data to be erased. &lt;/p&gt;&lt;p&gt;To format the filesystem (which simply initializes the directory specified by the &lt;tt&gt;dfs.name.dir&lt;/tt&gt; variable), run the command&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;[root@cc hadoop]# bin/hadoop namenode -format&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The output suppose to be like this:&lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@cc hadoop]# bin/hadoop namenode -format&lt;br /&gt;08/12/24 10:56:34 INFO dfs.NameNode: STARTUP_MSG:&lt;br /&gt;/************************************************************&lt;br /&gt;STARTUP_MSG: Starting NameNode&lt;br /&gt;STARTUP_MSG:   host = cc.d.de.static.xlhost.com/206.222.13.204&lt;br /&gt;STARTUP_MSG:   args = [-format]&lt;br /&gt;STARTUP_MSG:   version = 0.18.2&lt;br /&gt;STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.18 -r 709042; compiled by 'ndaley' on Thu Oct 30 01:07:18 UTC 2008&lt;br /&gt;************************************************************/&lt;br /&gt;Re-format filesystem in /usr/local/bin/hadoop/datastore/hadoop-root/dfs/name ? (Y or N) Y&lt;br /&gt;08/12/24 10:57:40 INFO fs.FSNamesystem: fsOwner=root,root,bin,daemon,sys,adm,disk,wheel&lt;br /&gt;08/12/24 10:57:40 INFO fs.FSNamesystem: supergroup=supergroup&lt;br /&gt;08/12/24 10:57:40 INFO fs.FSNamesystem: isPermissionEnabled=true&lt;br /&gt;08/12/24 10:57:40 INFO dfs.Storage: Image file of size 78 saved in 0 seconds.&lt;br /&gt;08/12/24 10:57:40 INFO dfs.Storage: Storage directory /usr/local/bin/hadoop/datastore/hadoop-root/dfs/name has been successfully formatted.&lt;br /&gt;08/12/24 10:57:40 INFO dfs.NameNode: SHUTDOWN_MSG:&lt;br /&gt;/************************************************************&lt;br /&gt;SHUTDOWN_MSG: Shutting down NameNode at cc.d.de.static.xlhost.com/206.222.13.204&lt;br /&gt;************************************************************/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:130%;"&gt;&lt;span class="mw-headline"&gt;2.3 Starting/Stopping your single-node cluster &lt;/span&gt;&lt;/span&gt; &lt;p&gt;Run the command: &lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@cc hadoop]# $HADOOP_HOME/bin/start-all.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You suppose to see the following output:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;starting namenode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-namenode-cc.com.out&lt;br /&gt;localhost: starting datanode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-datanode-cc.out&lt;br /&gt;localhost: starting secondarynamenode, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-secondarynamenode-cc.out&lt;br /&gt;starting jobtracker, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-jobtracker-cc.com.out&lt;br /&gt;localhost: starting tasktracker, logging to /usr/local/bin/hadoop/bin/../logs/hadoop-root-tasktracker-cc.com.out&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Run example map-reduce job&lt;/span&gt; that comes with hadoop installation:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@38 /usr/local/bin/hadoop]bin/hadoop dfs -copyFromLocal LICENSE.txt testWordCount&lt;br /&gt;[root@38 /usr/local/bin/hadoop]bin/hadoop dfs -ls&lt;br /&gt;Found 1 items&lt;br /&gt;-rw-r--r--   1 root supergroup      11358 2008-12-25 04:54 /user/root/testWordCount&lt;br /&gt;[root@38 /usr/local/bin/hadoop]bin/hadoop jar hadoop-0.18.2-examples.jar wordcount testWordCount testWordCount-output&lt;br /&gt;08/12/25 04:55:47 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 04:55:47 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 04:55:48 INFO mapred.JobClient: Running job: job_200812250447_0001&lt;br /&gt;08/12/25 04:55:49 INFO mapred.JobClient:  map 0% reduce 0%&lt;br /&gt;08/12/25 04:55:51 INFO mapred.JobClient:  map 100% reduce 0%&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient: Job complete: job_200812250447_0001&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient: Counters: 16&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:   Job Counters&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Data-local map tasks=2&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Launched reduce tasks=1&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Launched map tasks=2&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:   Map-Reduce Framework&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Map output records=1581&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Reduce input records=593&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Map output bytes=16546&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Map input records=202&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Combine output records=1292&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Map input bytes=11358&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Combine input records=2280&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Reduce input groups=593&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Reduce output records=593&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:   File Systems&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     HDFS bytes written=6117&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Local bytes written=18568&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     HDFS bytes read=13872&lt;br /&gt;08/12/25 04:55:56 INFO mapred.JobClient:     Local bytes read=8542&lt;br /&gt;[root@38 /usr/local/bin/hadoop]bin/hadoop dfs -ls testWordCount-output&lt;br /&gt;Found 2 items&lt;br /&gt;drwxr-xr-x   - root supergroup          0 2008-12-25 04:55 /user/root/testWordCount-output/_logs&lt;br /&gt;-rw-r--r--   1 root supergroup       6117 2008-12-25 04:55 /user/root/testWordCount-output/part-00000&lt;br /&gt;[root@38 /usr/local/bin/hadoop]bin/hadoop dfs -cat testWordCount-output/part-00000&lt;br /&gt;// suppose to see something like this&lt;br /&gt;...&lt;br /&gt;tracking        1&lt;br /&gt;trade   1&lt;br /&gt;trademark,      1&lt;br /&gt;trademarks,     1&lt;br /&gt;transfer        1&lt;br /&gt;transformation  1&lt;br /&gt;translation     1&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To stop Hadoop cluster run the following:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/stop-all.sh&lt;br /&gt;no jobtracker to stop&lt;br /&gt;localhost: no tasktracker to stop&lt;br /&gt;no namenode to stop&lt;br /&gt;localhost: no datanode to stop&lt;br /&gt;localhost: no secondarynamenode to stop&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;2.4 Hadoop monitoring&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt; and debugging&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Please see hadoop tips of &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://wiki.apache.org/hadoop/HowToDebugMapReducePrograms"&gt;how to debug Map-Reduce programs&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. Worth to mention that hadoop logs are providing the most information &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;from $HADOOP_HOME/logs&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;or there are links from hadoop web interfaces.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Hadoop comes with several web interfaces which are by default (see conf/hadoop-default.xml) available at these locations:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;The job tracker web UI provides information about general job statistics of the Hadoop cluster, running/completed/failed jobs and a job history log file&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt; &lt;ul  style="font-family:verdana;"&gt;&lt;li&gt; &lt;span style="font-size:85%;"&gt;&lt;a href="http://localhost:50030/" class="external free" title="http://localhost:50030/" rel="nofollow"&gt;http://localhost:50030/&lt;/a&gt; - web UI for MapReduce job tracker(s) &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;The task tracker web UI shows you running and non-running tasks.&lt;/span&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt; &lt;span style="font-size:85%;"&gt;&lt;a href="http://localhost:50060/" class="external free" title="http://localhost:50060/" rel="nofollow"&gt;http://localhost:50060/&lt;/a&gt; - web UI for task tracker(s) &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:verdana;font-size:85%;"&gt;The name node web UI shows you a cluster summary including information about total/remaining capacity, live and dead nodes. Additionally, it allows you to browse the HDFS namespace and view the contents of its files in the web browser.&lt;/span&gt;&lt;ul  style="font-family:verdana;"&gt;&lt;li&gt; &lt;span style="font-size:85%;"&gt;&lt;a href="http://localhost:50070/" class="external free" title="http://localhost:50070/" rel="nofollow"&gt;http://localhost:50070/&lt;/a&gt; - web UI for HDFS name node(s) &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;If everything &lt;span style="font-family:monospace;"&gt;work fine you suppose to see the following output after running jps utility:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@cc hadoop]# jps&lt;br /&gt;3060 SecondaryNameNode&lt;br /&gt;3136 JobTracker&lt;br /&gt;2814 NameNode&lt;br /&gt;3270 TaskTracker&lt;br /&gt;3458 Jps&lt;br /&gt;&lt;br /&gt;[root@38 /usr/local/bin/hadoop]netstat -plten | grep java&lt;br /&gt;tcp        0      0 :::50020                    :::*                        LISTEN      0          1248347094 5131/java&lt;br /&gt;tcp        0      0 ::ffff:127.0.0.1:54310      :::*                        LISTEN      0          1248346675 5032/java&lt;br /&gt;tcp        0      0 ::ffff:127.0.0.1:54311      :::*                        LISTEN      0          1248347128 5351/java&lt;br /&gt;tcp        0      0 :::50090                    :::*                        LISTEN      0          1248347119 5272/java&lt;br /&gt;tcp        0      0 :::50060                    :::*                        LISTEN      0          1248347327 5467/java&lt;br /&gt;tcp        0      0 :::50030                    :::*                        LISTEN      0          1248347293 5351/java&lt;br /&gt;tcp        0      0 :::48498                    :::*                        LISTEN      0          1248347011 5272/java&lt;br /&gt;tcp        0      0 :::50070                    :::*                        LISTEN      0          1248346888 5032/java&lt;br /&gt;tcp        0      0 :::53210                    :::*                        LISTEN      0          1248347103 5351/java&lt;br /&gt;tcp        0      0 :::50010                    :::*                        LISTEN      0          1248347000 5131/java&lt;br /&gt;tcp        0      0 :::50075                    :::*                        LISTEN      0          1248347020 5131/java&lt;br /&gt;tcp        0      0 :::40315                    :::*                        LISTEN      0          1248346669 5032/java&lt;br /&gt;tcp        0      0 ::ffff:127.0.0.1:47198      :::*                        LISTEN      0          1248347345 5467/java&lt;br /&gt;tcp        0      0 :::56575                    :::*                        LISTEN      0          1248346834 5131/java&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;&lt;span style="font-family:verdana;"&gt;3.HBase&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:100%;"&gt;3.1 Configuration&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt; - Unpack&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; HBase archive to /usr/local/bin&lt;br /&gt;- Move hbase.18.1 to hbase&lt;br /&gt;- Define HBASE_HOME point to /usr/local/bin/hbase( don't forget to edit ~/.bash_profile )&lt;br /&gt;- Define JAVA_HOME in $HBASE_HOME/conf/hbase-env.sh&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;export HADOOP_CLASSPATH=/usr/local/bin/hbase/conf:/usr/local/bin/hbase/hbase-0.18.1.jar:/usr/local/bin/hbase/hbase-0.18.1-test.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;- Edit $HADOOP_HOME/conf/hadoop-env.sh, add this(for instance):&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;export JAVA_HOME=/usr/local/bin/jdk1.5.0_14/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.2  &lt;/span&gt;&lt;a style="font-weight: bold;" name="pseudo-distrib"&gt;Pseudo-Distributed Operation&lt;/a&gt; &lt;p&gt;A pseudo-distributed operation is simply a distributed operation run on a single host.   Once you have confirmed your DFS setup, configuring HBase for use on one host requires modification of  &lt;code style="font-weight: bold;"&gt;${HBASE_HOME}/conf/hbase-site.xml&lt;/code&gt;, which needs to be pointed at the running Hadoop DFS instance.   Use &lt;code style="font-weight: bold;"&gt;hbase-site.xml&lt;/code&gt; to override the properties defined in  &lt;code style="font-weight: bold;"&gt;${HBASE_HOME}/conf/hbase-default.xml&lt;/code&gt; (&lt;code&gt;hbase-default.xml&lt;/code&gt; itself  should never be modified).  At a minimum the &lt;code&gt;hbase.rootdir&lt;/code&gt; property should be redefined  in &lt;code style="font-weight: bold;"&gt;hbase-site.xml&lt;/code&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;to point HBase at the Hadoop filesystem to use.  For example, adding the property  below to your &lt;code&gt;hbase-site.xml&lt;/code&gt; says that HBase should use the &lt;code&gt;/hbase&lt;/code&gt; directory in the  HDFS whose namenode is at port 54310 on your local machine: &lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;&lt;property&gt;&lt;br /&gt;&lt;name&gt;hbase.rootdir&lt;/name&gt;&lt;br /&gt;&lt;value&gt;hdfs://localhost:54310/hbase&lt;/value&gt;&lt;br /&gt;&lt;description&gt;The directory shared by region servers.&lt;br /&gt;&lt;/description&gt;&lt;br /&gt;&lt;/property&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;3.3&lt;a name="client_example"&gt;   Example API Usage&lt;/a&gt;&lt;/span&gt; &lt;p&gt;Once you have a running HBase, you probably want a way to hook your application up to it.If your application is in Java, then you should use the Java API. The following example takes as input excel formatted file and name of already existed table in HTable, process records and writes them to HBase. You could look at client example &lt;a href="http://hadoop.apache.org/hbase/docs/r0.18.1/api/overview-summary.html#overview_description"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.examples;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.regex.Pattern;&lt;br /&gt;&lt;br /&gt;import org.apache.hadoop.conf.Configuration;&lt;br /&gt;import org.apache.hadoop.fs.Path;&lt;br /&gt;import org.apache.hadoop.hbase.io.BatchUpdate;&lt;br /&gt;import org.apache.hadoop.hbase.io.ImmutableBytesWritable;&lt;br /&gt;import org.apache.hadoop.hbase.mapred.TableReduce;&lt;br /&gt;import org.apache.hadoop.io.LongWritable;&lt;br /&gt;import org.apache.hadoop.io.Text;&lt;br /&gt;import org.apache.hadoop.io.WritableComparator;&lt;br /&gt;import org.apache.hadoop.io.WritableUtils;&lt;br /&gt;import org.apache.hadoop.mapred.FileInputFormat;&lt;br /&gt;import org.apache.hadoop.mapred.JobClient;&lt;br /&gt;import org.apache.hadoop.mapred.JobConf;&lt;br /&gt;import org.apache.hadoop.mapred.MapReduceBase;&lt;br /&gt;import org.apache.hadoop.mapred.Mapper;&lt;br /&gt;import org.apache.hadoop.mapred.OutputCollector;&lt;br /&gt;import org.apache.hadoop.mapred.Reporter;&lt;br /&gt;import org.apache.hadoop.mapred.TextInputFormat;&lt;br /&gt;import org.apache.hadoop.util.Tool;&lt;br /&gt;import org.apache.hadoop.util.ToolRunner;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Sample uploader Map-Reduce example class. Takes excel format file as input and write output to HBase&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;public class SampleUploader extends MapReduceBase implements Mapper&lt;longwritable,&gt;, Tool&lt;br /&gt;{&lt;br /&gt;static enum Counters { MAP_LINES,REDUCE_LINES }&lt;br /&gt;private static final String NAME = "SampleUploader";&lt;br /&gt;private Configuration conf;&lt;br /&gt;static final String OUTPUT_COLUMN = "value:";&lt;br /&gt;static final String OUTPUT_KEY = "key:";&lt;br /&gt;long numRecords;&lt;br /&gt;private Text idText = new Text();&lt;br /&gt;private Text recordText = new Text();&lt;br /&gt;private String inputFile;&lt;br /&gt;&lt;br /&gt;/** A WritableComparator optimized for Text keys. */&lt;br /&gt;public static class Comparator extends WritableComparator&lt;br /&gt;{&lt;br /&gt;public Comparator()&lt;br /&gt;{&lt;br /&gt;super(Text.class);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int compare(byte[] b1, int s1, int l1,&lt;br /&gt;byte[] b2, int s2, int l2)&lt;br /&gt;{&lt;br /&gt;int n1 = WritableUtils.decodeVIntSize(b1[s1]);&lt;br /&gt;int n2 = WritableUtils.decodeVIntSize(b2[s2]);&lt;br /&gt;return compareBytes(b1, s1+n1, l1-n1, b2, s2+n2, l2-n2);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public JobConf createSubmittableJob(String[] args)&lt;br /&gt;{&lt;br /&gt;JobConf c = new JobConf(getConf(), SampleUploader.class);&lt;br /&gt;c.setJobName(NAME);&lt;br /&gt;c.setInputFormat(TextInputFormat.class);&lt;br /&gt;FileInputFormat.setInputPaths(c, new Path(args[0]));&lt;br /&gt;//c.setInputPaths(new Path(args[0]));&lt;br /&gt;c.setMapperClass(this.getClass());&lt;br /&gt;c.setMapOutputKeyClass(Text.class);&lt;br /&gt;c.setMapOutputValueClass(Text.class);&lt;br /&gt;c.setReducerClass(TableUploader.class);&lt;br /&gt;TableReduce.initJob(args[1], TableUploader.class, c);&lt;br /&gt;return c;&lt;br /&gt;}&lt;br /&gt;public void configure(JobConf job)&lt;br /&gt;{&lt;br /&gt;inputFile = job.get("map.input.file");&lt;br /&gt;}&lt;br /&gt;public void map(LongWritable k, Text v,OutputCollector&lt;text,&gt; output, Reporter r) throws IOException&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;String lineWithoutURLs = Pattern.compile("\"[^\"]* "").matcher(v.toString()).replaceAll("");&lt;br /&gt;String userID = lineWithoutURLs.substring(22, 54);&lt;br /&gt;&lt;br /&gt;r.incrCounter(Counters.MAP_LINES, 1);&lt;br /&gt;if ((++numRecords % 10000) == 0)&lt;br /&gt;{&lt;br /&gt;System.out.println("Finished mapping of " + numRecords + " records " + "from the input file: " + inputFile);&lt;br /&gt;}&lt;br /&gt;idText.set(userID);&lt;br /&gt;recordText.set(lineWithoutURLs);&lt;br /&gt;output.collect( idText,recordText );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static class TableUploader  extends TableReduce&lt;text,&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void reduce( Text k, Iterator&lt;text&gt; v,&lt;br /&gt;OutputCollector&lt;immutablebyteswritable,&gt; output,&lt;br /&gt;Reporter r) throws IOException&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;BatchUpdate outval = new BatchUpdate(k.toString());&lt;br /&gt;while (v.hasNext())&lt;br /&gt;{&lt;br /&gt;String value = v.next().toString();&lt;br /&gt;String dateStamp = value.substring(0, 20).replaceAll("[-:,]", "");&lt;br /&gt;outval.put( OUTPUT_COLUMN + dateStamp, value.getBytes());&lt;br /&gt;r.incrCounter(Counters.REDUCE_LINES, 1);&lt;br /&gt;}&lt;br /&gt;output.collect( new ImmutableBytesWritable( k.getBytes()), outval);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static int printUsage()&lt;br /&gt;{&lt;br /&gt;System.out.println(NAME + " &lt;input&gt; &lt;table_name&gt;");&lt;br /&gt;return -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int run( String[] args) throws Exception&lt;br /&gt;{&lt;br /&gt;// Make sure there are exactly 2 parameters left.&lt;br /&gt;if (args.length != 2) {&lt;br /&gt;System.out.println("ERROR: Wrong number of parameters: " +&lt;br /&gt;args.length + " instead of 2.");&lt;br /&gt;return printUsage();&lt;br /&gt;}&lt;br /&gt;JobClient.runJob(createSubmittableJob(args));&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Configuration getConf() {&lt;br /&gt;return this.conf;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setConf(final Configuration c) {&lt;br /&gt;this.conf = c;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) throws Exception&lt;br /&gt;{&lt;br /&gt;int errCode = ToolRunner.run(new Configuration(), new SampleUploader(),&lt;br /&gt;args);&lt;br /&gt;System.exit(errCode);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/table_name&gt;&lt;/immutablebyteswritable,&gt;&lt;/text&gt;&lt;/text,&gt;&lt;/text,&gt;&lt;/longwritable,&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.4  Running HBase and using HBase shell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Start HBase with the following command:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;${HBASE_HOME}/bin/start-hbase.sh&lt;br /&gt;&lt;/pre&gt; If HBase is started succesfully you suppose to see a following output after running jps:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@37 /usr/local/bin/hadoop]jps&lt;br /&gt;10379 DataNode&lt;br /&gt;18303 Jps&lt;br /&gt;10637 TaskTracker&lt;br /&gt;10536 JobTracker&lt;br /&gt;10286 NameNode&lt;br /&gt;17512 HMaster&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Check if HBase is running with web interface: &lt;a href="http://localhost:60030/"&gt;http://localhost:60030&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once HBase has started, run HBase Shell with&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;code style="font-weight: bold;"&gt;&lt;span style="font-family:Georgia,serif;"&gt;$&lt;/span&gt;{HBASE_HOME}/bin/hbase shell&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;Create a sample table for our tests:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;create 'table_keyInMemory', {NAME =&gt; 'key',IN_MEMORY =&gt; true, VERSIONS =&gt; 1,BLOCKCACHE =&gt; true},{NAME =&gt; 'value',VERSIONS =&gt; 1}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To stop HBase, exit the HBase shell and enter:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;${HBASE_HOME}/bin/stop-hbase.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;"&gt;3.5 Finally: Rinning Map-Reduce jobs:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First copy an input file from local filesystem:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/hadoop dfs -copyFromLocal /localFile fileNameInHadoopDFS&lt;br /&gt;[root@37 /usr/local/bin/hadoop] bin/hadoop dfs -ls&lt;br /&gt;Found 1 items -rw-r--r-- 1 root supergroup 27325 2008-12-25 03:26 /user/root fileNameInHadoopDFS&lt;br /&gt;// Run Map-Reduce script&lt;br /&gt;[root@37 /usr/local/bin/hadoop]bin/hadoop jar Test.jar org.exelate.Uploader 100 sampleTable&lt;br /&gt;08/12/25 03:55:40 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 03:55:40 INFO mapred.FileInputFormat: Total input paths to process : 1&lt;br /&gt;08/12/25 03:55:40 INFO mapred.JobClient: Running job: job_200812250352_0002&lt;br /&gt;08/12/25 03:55:41 INFO mapred.JobClient:  map 0% reduce 0%&lt;br /&gt;08/12/25 03:55:44 INFO mapred.JobClient:  map 100% reduce 0%&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient: Job complete: job_200812250352_0002&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient: Counters: 17&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:   Job Counters&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Data-local map tasks=2&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Launched reduce tasks=1&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Launched map tasks=2&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:   Map-Reduce Framework&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Map output records=100&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Reduce input records=100&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Map output bytes=16516&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Map input records=100&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Combine output records=0&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Map input bytes=27325&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Combine input records=0&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Reduce input groups=44&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Reduce output records=44&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:   File Systems&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Local bytes written=33928&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     HDFS bytes read=30048&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     Local bytes read=16921&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:   org.exelate.SampleUploader$Counters&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     MAP_LINES=100&lt;br /&gt;08/12/25 03:55:50 INFO mapred.JobClient:     REDUCE_LINES=100&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="commandref"&gt;HDFS Command Reference&lt;/a&gt;&lt;/h3&gt;  &lt;a name="commandref"&gt;  &lt;/a&gt;&lt;p&gt;&lt;a name="commandref"&gt;There are many more commands in &lt;tt&gt;bin/hadoop dfs&lt;/tt&gt; than   were demonstrated here, although these basic operations will   get you started. Running &lt;tt&gt;bin/hadoop dfs&lt;/tt&gt; with no additional   arguments will list all commands which can be run with the   FsShell system. Furthermore, &lt;tt&gt;bin/hadoop dfs -help   &lt;i&gt;commandName&lt;/i&gt;&lt;/tt&gt; will display a short usage summary for   the operation in question, if you are stuck.&lt;/a&gt;&lt;/p&gt;  &lt;a name="commandref"&gt;  &lt;/a&gt;&lt;p&gt;&lt;a name="commandref"&gt;A table of all operations is reproduced below. The   following conventions are used for parameters:&lt;/a&gt;&lt;/p&gt;  &lt;a name="commandref"&gt;  &lt;/a&gt;&lt;ul&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;&lt;i&gt;italics&lt;/i&gt; denote variables to be filled out by the user.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;"path" means any file or directory name.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;"path..." means one or more file or directory names.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;"file" means any filename.&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a name="commandref"&gt;    &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a name="commandref"&gt;"src" and "dest" are path names in a        directed operation.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;"localSrc" and "localDest" are paths as     above, but on the local file system. All other file and path names     refer to objects inside HDFS.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;    &lt;/a&gt;&lt;li&gt;&lt;a name="commandref"&gt;Parameters in [brackets] are optional.&lt;/a&gt;&lt;/li&gt;&lt;a name="commandref"&gt;  &lt;/a&gt;&lt;/ul&gt;  &lt;a name="commandref"&gt;  &lt;/a&gt;&lt;table&gt;   &lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Operation&lt;/th&gt;&lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-ls &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Lists the contents of the directory specified by &lt;i&gt;path&lt;/i&gt;,       showing the names, permissions, owner, size and modification date       for each entry.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-lsr &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Behaves like &lt;tt&gt;-ls&lt;/tt&gt;, but recursively displays entries       in all subdirectories of &lt;i&gt;path&lt;/i&gt;.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-du &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Shows disk usage, in bytes, for all files which match       &lt;i&gt;path&lt;/i&gt;; filenames are reported with the full HDFS       protocol prefix.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-dus &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Like &lt;tt&gt;-du&lt;/tt&gt;, but prints a summary of disk usage       of all files/directories in the path.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-mv &lt;i&gt;src&lt;/i&gt; &lt;i&gt;dest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Moves the file or directory indicated by &lt;i&gt;src&lt;/i&gt;       to &lt;i&gt;dest&lt;/i&gt;, within HDFS.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-cp &lt;i&gt;src&lt;/i&gt; &lt;i&gt;dest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Copies the file or directory identified by &lt;i&gt;src&lt;/i&gt;       to &lt;i&gt;dest&lt;/i&gt;, within HDFS.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-rm &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Removes the file or empty directory identified by       &lt;i&gt;path&lt;/i&gt;.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-rmr &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Removes the file or directory identified by &lt;i&gt;path&lt;/i&gt;.       Recursively deletes any child entries (i.e., files or       subdirectories of &lt;i&gt;path&lt;/i&gt;).&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-put &lt;i&gt;localSrc&lt;/i&gt; &lt;i&gt;dest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Copies the file or directory from the local file system       identified by &lt;i&gt;localSrc&lt;/i&gt; to &lt;i&gt;dest&lt;/i&gt; within the       DFS.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-copyFromLocal &lt;i&gt;localSrc&lt;/i&gt; &lt;i&gt;dest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Identical to &lt;tt&gt;-put&lt;/tt&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-moveFromLocal &lt;i&gt;localSrc&lt;/i&gt; &lt;i&gt;dest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Copies the file or directory from the local file system       identified by &lt;i&gt;localSrc&lt;/i&gt; to &lt;i&gt;dest&lt;/i&gt; within       HDFS, then deletes the local copy on success.       &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-get [-crc] &lt;i&gt;src&lt;/i&gt; &lt;i&gt;localDest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Copies the file or directory in HDFS identified       by &lt;i&gt;src&lt;/i&gt; to the local file system path identified       by &lt;i&gt;localDest&lt;/i&gt;.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-getmerge &lt;i&gt;src&lt;/i&gt; &lt;i&gt;localDest&lt;/i&gt; [addnl]&lt;/td&gt;       &lt;td&gt;Retrieves all files that match the path &lt;i&gt;src&lt;/i&gt;       in HDFS, and copies them to a single, merged file       in the local file system identified by &lt;i&gt;localDest&lt;/i&gt;.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-cat &lt;i&gt;filename&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Displays the contents of &lt;i&gt;filename&lt;/i&gt; on stdout.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-copyToLocal [-crc] &lt;i&gt;src&lt;/i&gt; &lt;i&gt;localDest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Identical to &lt;tt&gt;-get&lt;/tt&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-moveToLocal [-crc] &lt;i&gt;src&lt;/i&gt; &lt;i&gt;localDest&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Works like &lt;tt&gt;-get&lt;/tt&gt;, but deletes the HDFS copy       on success.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-mkdir &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Creates a directory named &lt;i&gt;path&lt;/i&gt; in       HDFS. Creates any parent directories in &lt;i&gt;path&lt;/i&gt; that       are missing (e.g., like &lt;tt&gt;mkdir -p&lt;/tt&gt; in Linux).&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-setrep [-R] [-w] &lt;i&gt;rep&lt;/i&gt; &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Sets the target replication factor for files identified by       &lt;i&gt;path&lt;/i&gt; to &lt;i&gt;rep&lt;/i&gt;. (The actual replication factor       will move toward the target over time)&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-touchz &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Creates a file at &lt;i&gt;path&lt;/i&gt; containing the current       time as a timestamp. Fails if a file already exists at       &lt;i&gt;path&lt;/i&gt;, unless the file is already size 0.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-test -[ezd] &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Returns 1 if &lt;i&gt;path&lt;/i&gt; &lt;b&gt;e&lt;/b&gt;xists; has       &lt;b&gt;z&lt;/b&gt;ero length; or is a &lt;b&gt;d&lt;/b&gt;irectory, or       0 otherwise.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-stat [format] &lt;i&gt;path&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Prints information about &lt;i&gt;path&lt;/i&gt;. &lt;i&gt;format&lt;/i&gt;       is a string which accepts file size in blocks (%b), filename (%n),       block size (%o), replication (%r), and modification date (%y, %Y).       &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-tail [-f] &lt;i&gt;file&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Shows the lats 1KB of &lt;i&gt;file&lt;/i&gt; on stdout.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-chmod [-R] &lt;i&gt;mode,mode,...&lt;/i&gt; &lt;i&gt;path...&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Changes the file permissions associated with one or       more objects identified by &lt;i&gt;path...&lt;/i&gt;. Performs       changes recursively with &lt;tt&gt;-R&lt;/tt&gt;. &lt;i&gt;mode&lt;/i&gt; is       a 3-digit octal mode, or &lt;tt&gt;{augo}+/-{rwxX}&lt;/tt&gt;.       Assumes &lt;tt&gt;a&lt;/tt&gt; if no scope is specified and does not       apply a umask.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-chown [-R] [&lt;i&gt;owner&lt;/i&gt;][:[&lt;i&gt;group&lt;/i&gt;]] &lt;i&gt;path...&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Sets the owning user and/or group for files       or directories identified by &lt;i&gt;path...&lt;/i&gt;. Sets owner       recursively if &lt;tt&gt;-R&lt;/tt&gt; is specified.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-chgrp [-R] &lt;i&gt;group&lt;/i&gt; &lt;i&gt;path...&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Sets the owning group for files or directories       identified by &lt;i&gt;path...&lt;/i&gt;. Sets group recursively       if &lt;tt&gt;-R&lt;/tt&gt; is specified.&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;-help &lt;i&gt;cmd&lt;/i&gt;&lt;/td&gt;       &lt;td&gt;Returns usage information for one of the commands       listed above. You must omit the leading '-' character       in &lt;i&gt;cmd&lt;/i&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;a name="commandref"&gt;  &lt;/a&gt;&lt;a name="admincommandref"&gt;   &lt;/a&gt;&lt;h3&gt;&lt;a name="admincommandref"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-7851518615210587228?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/7851518615210587228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=7851518615210587228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7851518615210587228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/7851518615210587228'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/running-hadoop-with-hbase-on-centos.html' title='Running Hadoop with HBase on CentOS Linux (Single-Node Cluster)'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_48al5BONCn4/SVdOfXfKETI/AAAAAAAAAhU/vdDl8bNqA4g/s72-c/architecture.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-3176909236123238906</id><published>2008-12-23T03:27:00.000-08:00</published><updated>2008-12-23T03:28:31.199-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux tips'/><title type='text'>Change hostname in Linux</title><content type='html'>&lt;h1&gt;Change hostname in Linux&lt;/h1&gt;  &lt;p&gt;First you need to find out your hostname, you can do this with&lt;/p&gt;  &lt;pre class="code"&gt;$ hostname&lt;br /&gt;localhost.localdomain&lt;br /&gt;$&lt;br /&gt;&lt;/pre&gt;  &lt;h2&gt;Edit /etc/hosts&lt;/h2&gt;  &lt;p&gt;You need to edit /etc/hosts and add a line for your host name&lt;/p&gt;  &lt;pre class="code"&gt;$ cat /etc/hosts&lt;br /&gt;# Do not remove the following line, or various programs&lt;br /&gt;# that require network functionality will fail.&lt;br /&gt;127.0.0.1               localhost.localdomain localhost&lt;br /&gt;$&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;My new server IP is 72.232.196.90, i need to assign it hostname server12.hosthat.com, to do this, i have edited /etc/hosts as follows.&lt;/p&gt;  &lt;pre class="code"&gt;# Do not remove the following line, or various programs&lt;br /&gt;# that require network functionality will fail.&lt;br /&gt;127.0.0.1               localhost.localdomain localhost&lt;br /&gt;72.232.196.90           server12.hosthat.com server12&lt;br /&gt;&lt;/pre&gt;   &lt;h2&gt;Edit /etc/sysconfig/network&lt;/h2&gt;  &lt;p&gt;First lets see what is in the file&lt;/p&gt;  &lt;pre class="code"&gt;$ cat /etc/sysconfig/network&lt;br /&gt;NETWORKING=yes&lt;br /&gt;HOSTNAME=localhost.localdomain&lt;br /&gt;$&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;To change servers hostname to server12.hosthat.com, change the file as follows.&lt;/p&gt;  &lt;pre class="code"&gt;$ cat /etc/sysconfig/network&lt;br /&gt;NETWORKING=yes&lt;br /&gt;HOSTNAME=server12.hosthat.com&lt;br /&gt;$&lt;br /&gt;&lt;/pre&gt;   &lt;p&gt;Now you need to reboot the server to change the hostname.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-3176909236123238906?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/3176909236123238906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=3176909236123238906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3176909236123238906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/3176909236123238906'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/change-hostname-in-linux.html' title='Change hostname in Linux'/><author><name>Дневник Литальки</name><uri>http://www.blogger.com/profile/00288150999144936549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://images16.fotki.com/v352/photos/7/772091/3986168/IMG_1246-vi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-346547573555831841</id><published>2008-12-23T03:21:00.000-08:00</published><updated>2008-12-23T03:26:20.891-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux monitoring'/><title type='text'>vmstat</title><content type='html'>&lt;h1&gt;vmstat&lt;/h1&gt;  &lt;p&gt;&lt;b&gt;Report virtual memory statistics&lt;/b&gt;&lt;/p&gt;  &lt;pre&gt;SYNOPSIS&lt;br /&gt;&lt;br /&gt;vmstat [-n] [delay [ count]]&lt;br /&gt;vmstat[-V]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;   &lt;p&gt;vmstat reports information about processes, memory, paging, block IO,        traps, and cpu activity.&lt;/p&gt;  &lt;p&gt;The first report produced gives averages since the last reboot. Additional reports give information on a sampling period of length delay. The process and memory reports are instantaneous in either case.&lt;/p&gt;   &lt;pre&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[root@]# vmstat 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   procs                      memory      swap          io     system      cpu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 0  0  0 6085936  91884 1707572 1333604   48   50    70    73   46     7  1  1 23&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 0  0  0 6085936  88464 1707608 1335120    0    0  1374    49 2750  1784  0  0 100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 0  0  0 6085936  88048 1707660 1335952    0    0   753   913 2532  1883  0  0 100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 0  0  0 6085936  87632 1707824 1337460    0    0  1282   908 2452  2054  0  0 100&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-346547573555831841?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/346547573555831841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=346547573555831841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/346547573555831841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/346547573555831841'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/vmstat.html' title='vmstat'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-9095640155540079195</id><published>2008-12-15T23:34:00.000-08:00</published><updated>2008-12-19T00:50:36.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSH authentication'/><title type='text'>Use Public/Private Keys for Authentication</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p class="line874"&gt;First, create a public/private key pair on the client that you will use to connect to the server (you will need to do this from each client machine from which you connect): &lt;/p&gt;&lt;p class="line867"&gt;&lt;span id="line-115" class="anchor"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;$ &lt;span style="font-weight: bold;"&gt;ssh-keygen -t rsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will create two files in your &lt;span style="font-weight: bold;"&gt;~/.ssh &lt;/span&gt;directory &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;id_rsa: &lt;/span&gt;your&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;private key&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;id_rsa.pub: &lt;/span&gt;is your public key.&lt;br /&gt;&lt;br /&gt;If you don't want to still be asked for a password each time you connect,&lt;br /&gt;just press enter when asked for a password when creating the key pair.&lt;br /&gt;It is up to you to decide whether or not you should password encrypt&lt;br /&gt;your key when you create it. If you don't password encrypt your key,&lt;br /&gt;then anyone gaining access to your local machine will automatically&lt;br /&gt;have ssh access to the remote server. Also, root on the local machine&lt;br /&gt;has access to your keys although one assumes that if you can't trust&lt;br /&gt;root (or root is compromised) then you're in real trouble. Encrypting&lt;br /&gt;the key adds additional security at the expense of eliminating the need&lt;br /&gt;for entering a password for the ssh server only to be replaced with&lt;br /&gt;entering a password for the use of the key. Now set permissions on your private key:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ chmod 700 ~/.ssh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ chmod 600 ~/.ssh/id_rsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Copy the public key (id_rsa.pub) to the server and install it to the authorized_keys list:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ cat id_rsa.pub&lt;/span&gt; &gt;&gt; ~/.ssh/authorized_keys&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ chmod 600 ~/.ssh/authorized_keys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you've checked you can successfully login to the server using your public/private key pair,&lt;br /&gt;you can disable password authentication completely by adding the following setting to your&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/ssh/sshd_config&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# Disable password authentication forcing use of keys&lt;br /&gt;PasswordAuthentication no&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7111452516229749637-9095640155540079195?l=javadialog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javadialog.blogspot.com/feeds/9095640155540079195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7111452516229749637&amp;postID=9095640155540079195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9095640155540079195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7111452516229749637/posts/default/9095640155540079195'/><link rel='alternate' type='text/html' href='http://javadialog.blogspot.com/2008/12/use-publicprivate-keys-for.html' title='Use Public/Private Keys for Authentication'/><author><name>Gennady</name><uri>http://www.blogger.com/profile/06490582873834905229</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_48al5BONCn4/SJ7dYAAZWuI/AAAAAAAAABs/76hnyxG1DTQ/s1600-R/n599779710_220916_1351.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7111452516229749637.post-1922792565596334788</id><published>2008-12-11T05:17:00.000-08:00</published><updated>2009-01-15T02:20:52.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='hadoop'/><title type='text'>Distributed Systems and Web Scalability Resources</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;h3 class="entry-header"&gt;Distributed Systems and Web Scalability Resources&lt;/h3&gt;    &lt;div class="entry-content"&gt;   &lt;div class="entry-body"&gt;    &lt;p&gt;No long write-ups this week, just a short list of some great resources that I've found very inspirational and thought provoking. I've broken these resources up into two lists: Blogs and Presentations. &lt;/p&gt;&lt;h2&gt;Blogs&lt;/h2&gt;&lt;p&gt;The blogs listed below are ones that I subscribe to and are filled with some great posts about capacity planning, scalability problems and solutions, and distributed system information. Each blog is authored by exceptionally smart people and many of them have significant experience building production-level scalable systems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Nati Shalom's Blog: Discussions about middleware and distributed technologies&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://natishalom.typepad.com/nati_shaloms_blog/"&gt;http://natishalom.typepad.com/nati_shaloms_blog/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;All Things Distributed: Werner Vogels' weblog on building scalable and robust distributed systems.&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.allthingsdistributed.com/"&gt;http://www.allthingsdistributed.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;High Scalability: Building bigger, faster, more reliable websites&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://highscalability.com/"&gt;http://highscalability.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ProductionScale: Information Technology, Scalability, Technology Operations, and Cloud Computing&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.productionscale.com/"&gt;http://www.productionscale.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;iamcal.com&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.iamcal.com/"&gt;http://www.iamcal.com/&lt;/a&gt; (the "talks" section is particularly interesting)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Kitchen Soap: Thoughts on capacity planning and web operations&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.kitchensoap.com/"&gt;http://www.kitchensoap.com/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;MySQL Performance Blog: Everything about MySQL Performance&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.mysqlperformanceblog.com/"&gt;http://www.mysqlperformanceblog.com/&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Presentations&lt;/span&gt;&lt;p&gt;The presentations listed below are from the SlideShare site and are primarily the slides used to accompany scalability talks from around the world. Many of them outline the problems that various companies have encountered during their non-linear growth phases and how they've solved them by scaling their systems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Scalable Internet Architectures&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/shiflett/scalable-internet-architectures"&gt;http://www.slideshare.net/shiflett/scalable-internet-architectures&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How to build the Web&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/simon/how-to-build-the-web"&gt;http://www.slideshare.net/simon/how-to-build-the-web&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Netlog: What we learned about scalability &amp;amp; high availability&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/folke/netlog-what-we-learned-about-scalability-high-availability-430211"&gt;http://www.slideshare.net/folke/netlog-what-we-learned-about-scalability-high-availability-430211&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Database Sharding at Netlog&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/oemebamo/database-sharding-at-netlog-presentation"&gt;http://www.slideshare.net/oemebamo/database-sharding-at-netlog-presentation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;MySQL 2007 Techn At Digg V3&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/epee/mysql-2007-tech-at-digg-v3"&gt;http://www.slideshare.net/epee/mysql-2007-tech-at-digg-v3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Flickr and PHP&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/coolpics/flickr-44054"&gt;http://www.slideshare.net/coolpics/flickr-44054&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Scalable Web Architectures: Common Patterns and Approaches&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches"&gt;http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How to scale your web app&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/Georgio_1999/how-to-scale-your-web-app"&gt;http://www.slideshare.net/Georgio_1999/how-to-scale-your-web-app&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Google Cluster Innards&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/ultradvorka/google-cluster-innards"&gt;http://www.slideshare.net/ultradvorka/google-cluster-innards&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sharding Architectures&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/guest0e6d5e/sharding-architectures"&gt;http://www.slideshare.net/guest0e6d5e/sharding-architectures&lt;/a&gt;&lt;/p&gt;   &lt;/div&gt;        &lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Amazon EC2 setup &lt;/span&gt;- &lt;a href="http://wiki.apache.org/hadoop/AmazonEC2"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Yahoo Hadoop tutorial&lt;/span&gt; - &lt;a href="http://public.yahoo.com/gogate/hadoop-tutorial/start-tutorial.html"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Michael Noll blog&lt;/span&gt; - &lt;a href="http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_%28Multi-Node_Cluster%29"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hadoop main page&lt;/span&gt; - &lt;a href="http://hadoop.apache.org/"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Google lectures&lt;/span&gt; - &lt;a href="http://code.google.com/edu/parallel/index.html"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HBase resources&lt;/span&gt; - &lt;a href="http://wiki.apache.org/hadoop/Hbase"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;span style="f
