<?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-4098043777173851852</id><updated>2012-02-28T15:47:28.895+02:00</updated><category term='fuzzy compare'/><category term='TicTacToe'/><category term='dialog'/><category term='jdbc'/><category term='javascript'/><category term='xml parsing'/><category term='as3'/><category term='Menu button click'/><category term='junit'/><category term='event'/><category term='Change progress in progress dialog'/><category term='context menu'/><category term='Unparsed aapt error'/><category term='css'/><category term='ejb'/><category term='spring'/><category term='Spell Check'/><category term='performance'/><category term='menuбменю'/><category term='c++'/><category term='tsung'/><category term='xml'/><category term='hibernate'/><category term='ant'/><category term='other'/><category term='charts'/><category term='java'/><category term='mysql'/><category term='c3p0'/><category term='php'/><category term='photoshop'/><category term='security'/><category term='sqlite'/><category term='Native icons how to use'/><category term='algorithm'/><category term='game'/><category term='button'/><category term='flex'/><category term='springmvc'/><category term='oracle'/><category term='android'/><category term='fuzzy search'/><category term='меню'/><category term='Photoshop Keyboard shortcuts'/><category term='javaee'/><category term='design'/><category term='collections'/><category term='testing'/><category term='Скачивание картинки по URL'/><category term='beginning'/><category term='downloading progress android'/><category term='db'/><category term='downloading imageandroid'/><title type='text'>Programming notes</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6542384928292928333</id><published>2012-02-28T15:46:00.001+02:00</published><updated>2012-02-28T15:47:28.902+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>OWASP Top Ten Web-sites Security leaks</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A1" title="Top 10 2010-A1"&gt;A1: Injection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A2" title="Top 10 2010-A2"&gt;A2: Cross-Site Scripting (XSS)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A3" title="Top 10 2010-A3"&gt;A3: Broken Authentication and Session Management&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A4" title="Top 10 2010-A4"&gt;A4: Insecure Direct Object References&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A5" title="Top 10 2010-A5"&gt;A5: Cross-Site Request Forgery (CSRF)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A6" title="Top 10 2010-A6"&gt;A6: Security Misconfiguration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A7" title="Top 10 2010-A7"&gt;A7: Insecure Cryptographic Storage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A8" title="Top 10 2010-A8"&gt;A8: Failure to Restrict URL Access&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A9" title="Top 10 2010-A9"&gt;A9: Insufficient Transport Layer Protection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class="mw-redirect" href="https://www.owasp.org/index.php/Top_10_2010-A10" title="Top 10 2010-A10"&gt;A10: Unvalidated Redirects and Forwards&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Source: &lt;/b&gt;&lt;br /&gt;&lt;a href="https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project"&gt;Link&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/4098043777173851852-6542384928292928333?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6542384928292928333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2012/02/owasp-top-ten-web-security-leaks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6542384928292928333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6542384928292928333'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2012/02/owasp-top-ten-web-security-leaks.html' title='OWASP Top Ten Web-sites Security leaks'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-80150247268900230</id><published>2012-02-21T21:51:00.000+02:00</published><updated>2012-02-22T09:44:21.286+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='c3p0'/><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>C3P0 ConnectionPool: How To configure</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;C3P0 &lt;/b&gt;- is&amp;nbsp;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;a&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;connection pool,&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;connection pool&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;is a&amp;nbsp;&lt;/span&gt;cache&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;&amp;nbsp;of&amp;nbsp;&lt;/span&gt;database connections&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;&amp;nbsp;maintained, so that the connections can be reused when future requests to the database are required.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="background-color: white; font-family: sans-serif; line-height: 19px;"&gt;The main question is how to cofigure it, because default values are not perfect. First of all I found &lt;a href="https://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPool?_sscc=t"&gt;oficial doc&lt;/a&gt; with description of the values.&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;Next I&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="line-height: 19px;"&gt;found this one&amp;nbsp;&lt;a href="http://javatech.org/2007/11/c3p0-connectionpool-configuration-rules-of-thumb/"&gt;C3P0 ConnectionPool Configuration Rules of Thumb&lt;/a&gt;. After some perfomance testing of my application,&amp;nbsp;I can confirm that cofiguring like in this article, can greatly increase your performance, in my case it was abouth twisly.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: sans-serif;"&gt;&lt;span style="line-height: 19px;"&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://sourceforge.net/projects/c3p0/"&gt;Download C3P0&lt;/a&gt;&amp;nbsp;&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/4098043777173851852-80150247268900230?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/80150247268900230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2012/02/c3p0-connectionpool-how-to-configure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/80150247268900230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/80150247268900230'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2012/02/c3p0-connectionpool-how-to-configure.html' title='C3P0 ConnectionPool: How To configure'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-3976538344629889278</id><published>2011-12-22T10:48:00.006+02:00</published><updated>2012-02-16T12:36:08.768+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>YUI: Compressing JavaScript and CSS files with Ant</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WX2uI6g608s/TvLuGYYtbGI/AAAAAAAABMg/curcAHE3OmQ/s1600/yui-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-WX2uI6g608s/TvLuGYYtbGI/AAAAAAAABMg/curcAHE3OmQ/s1600/yui-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;The YUI Compressor is JavaScript and CSS minifier designed to be 100% safe and yield a higher compression ratio than most other tools.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;First of all you should download latest version of &lt;a href="http://yuilibrary.com/download/yuicompressor/"&gt;yuicompressor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;If you want to run it in eclipse with ant,you need &lt;a href="http://code.google.com/p/yui-compressor-ant-task/"&gt;ant-task &lt;/a&gt;&lt;/li&gt;&lt;li&gt;You should edit your&lt;i&gt; &lt;/i&gt;ant &lt;i&gt;build.xml&lt;/i&gt; file, and add this lines of code:&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;project name="test"&amp;gt;&lt;br /&gt;&amp;lt;property name="web.dir" value="WebContent"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="input.dir" value="${web.dir}/js"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="output.dir" value="${web.dir}/jscompressed"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="clean_compressed_js" description="Clean output directories"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset dir="${output.dir}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name="*.js"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/delete&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;taskdef name="yuicompress" classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;classpath&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pathelement path="${web.dir}/WEB-INF/lib/yuicompressor-2.4.7.jar" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pathelement path="${web.dir}/WEB-INF/lib/yui-compressor-ant-task-0.5.jar" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pathelement path="${web.dir}/WEB-INF/lib/rhino-1.6R7.jar" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/classpath&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/taskdef&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="compress_javascript" depends="clean_compressed_js"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo&amp;gt;Compressing files&amp;lt;/echo&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;yuicompress munge="yes"&amp;nbsp; preserveallsemicolons="yes" toDir="${output.dir}" fromDir="${input.dir}" csssuffix=".css" jssuffix=".js" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name="*.js"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/yuicompress&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/pre&gt;&lt;br /&gt;PS: Next step of optimisation should be creating gzip archive with compressed files, if your server support it&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;http://developer.yahoo.com/yui/compressor/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://webo.in/articles/habrahabr/112-minify-combine-javascript-troubles/"&gt;http://webo.in/articles/habrahabr/112-minify-combine-javascript-troubles/&lt;/a&gt;&lt;br /&gt;Also tools for testing your web-site speed: &lt;br /&gt;&lt;a href="http://loads.in/"&gt;http://loads.in/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tools.pingdom.com/"&gt;http://tools.pingdom.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gtmetrix.com/"&gt;http://gtmetrix.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="https://developers.google.com/pagespeed/"&gt;https://developers.google.com/pagespeed/&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/4098043777173851852-3976538344629889278?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/3976538344629889278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/12/compressing-javascript-and-css-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3976538344629889278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3976538344629889278'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/12/compressing-javascript-and-css-files.html' title='YUI: Compressing JavaScript and CSS files with Ant'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-WX2uI6g608s/TvLuGYYtbGI/AAAAAAAABMg/curcAHE3OmQ/s72-c/yui-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2736453810357260115</id><published>2011-11-12T11:54:00.009+02:00</published><updated>2011-12-07T20:30:06.147+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tsung'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Tsung: Web Application Performance and Stress Testing</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wWpHDkgQaHY/Tr5BfEgWJ5I/AAAAAAAABMI/vS1fkp1tn6Q/s1600/tsung-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-wWpHDkgQaHY/Tr5BfEgWJ5I/AAAAAAAABMI/vS1fkp1tn6Q/s1600/tsung-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The purpose of &lt;a href="http://tsung.erlang-projects.org/index.en.html"&gt;Tsung&lt;/a&gt; is to simulate users in order to test the scalability and performance of IP based client/server applications. You can use it to do load and stress testing of your servers.You can test with Tsung HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and XMPP/Jabber.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;To install tsung you need Linux distributive, I am using debian.&lt;br /&gt;&lt;div&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;apt-get install erlang&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Download latest distributive &amp;nbsp;- http://tsung.erlang-projects.org/dist/tsung-1.4.1.tar.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;tar -zxvf &lt;/i&gt; &lt;i&gt;tsung-1.4.1&lt;/i&gt; &lt;i&gt;.tar.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;cd&lt;/i&gt; &lt;i&gt;tsung-1.4.1&lt;/i&gt; &lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;also you should create .tsung folder in root and tsung.xml inside it (ypu can see &lt;/i&gt; &lt;i&gt; tsung.xml&lt;/i&gt; &lt;i&gt;examples in tsung folder)&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;Thats all after typing tsung command in console, you should see tsung help information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuration &lt;/b&gt;&lt;b&gt;&lt;i&gt;tsung.xml&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;i&gt;1. Server configuration&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;servers&amp;gt;&lt;br /&gt;&amp;nbsp;  &amp;lt;server host="example.com" port="80" type="tcp"&amp;gt;&amp;lt;/server&amp;gt;&lt;br /&gt;&amp;lt;/servers&amp;gt;&lt;/pre&gt;&lt;br /&gt;2.&lt;i&gt;Client configuration&lt;/i&gt;&lt;br /&gt;Very important to specify&amp;nbsp; maxusers&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;clients&amp;gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;&amp;lt;client host="localhost" use_controller_vm="true" maxusers="7000"/&amp;gt;&lt;br /&gt;&amp;lt;/clients&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;3.Define the load that we want our server to be exposed to&lt;/i&gt;&lt;br /&gt;Tsung simulates the user arrivals in the application. The example below describes 2 different phases.The first will last 5 minutes and every second will come 10 new users, at all 5 minute x 10 users = 3000 users. Next phase will last 10 minutes and every second will come 25 new users , 10 minutes x 25 users = 15 000 users.&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;load&amp;gt;&lt;br /&gt;&amp;lt;arrivalphase phase="1" duration="5" unit="minute"&amp;gt;&lt;br /&gt;&amp;lt;users arrivalrate="10" unit="second"/&amp;gt;&lt;br /&gt;&amp;lt;/arrivalphase&amp;gt;&lt;br /&gt;&amp;lt;arrivalphase phase="2" duration="10" unit="minute"&amp;gt;&lt;br /&gt;&amp;lt;users arrivalrate="25" unit="second"/&amp;gt;&lt;br /&gt;&amp;lt;/arrivalphase&amp;gt;&lt;br /&gt;&amp;lt;/load&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;4. Recording script&lt;/i&gt;&lt;br /&gt;To test smth, you should provide sequence of actions, what tsung should to do. This configuration you should put in&amp;nbsp; &lt;i&gt;tag &amp;lt;sessions&amp;gt; ..&amp;lt;/sessions&amp;gt; tsung.xml.&lt;/i&gt; &amp;nbsp;I will test web-site and easiest way it's to use tsung proxy to record actions. To achieve that we must first tell our browser to pass through a proxy listening to port 8090 (Firefox preferences - Advanced - Network - Settings) and ip of the your server.&lt;br /&gt;&lt;br /&gt;To start recording use &lt;i&gt;tsung-recorder start&lt;/i&gt;&lt;br /&gt;To stop recording use &lt;i&gt;tsung-recorder stop&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;We will end up with an xml representing the newly recorded session located in ~/.tsung/tsung_recorderyyyymmdd-HH:MM.xml. Just copy-paste this session into the main tsung xml file:&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;sessions&amp;gt;&lt;br /&gt;&amp;lt;session name='login_settings' probability='25' type='ts_http'&amp;gt;&lt;br /&gt;&amp;lt;request&amp;gt; &amp;lt;http ... /&amp;gt; &amp;lt;/request&amp;gt;&lt;br /&gt;&amp;lt;thinktime random="true" value="4"/&amp;gt;&lt;br /&gt;&amp;lt;transaction name="Login"&amp;gt;&lt;br /&gt;&amp;lt;request&amp;gt; ... &amp;lt;/request&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/transaction&amp;gt;&lt;br /&gt;&amp;lt;request&amp;gt; ... &amp;lt;/request&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/session&amp;gt;&lt;br /&gt;&amp;lt;session name='login_add_people' probability='75' type='ts_http'&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/session&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sessions&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Running&lt;/b&gt;&lt;br /&gt;To run Tsung &lt;i&gt;tsung start &lt;/i&gt;and to stop &lt;i&gt;tsung stop. &lt;/i&gt;Tsung is logging data in the ~/.tsung/log/yyyymmdd-HH:MM folder. To view status &lt;i&gt;tsung status. &lt;/i&gt;Wery important to set ulimit value greater than default, type in console&lt;i&gt; ulimit -n 100000.&lt;/i&gt; One time i have situation when tsung process not terminated, but tsung stop command didn't worked, in this case you could use &lt;i&gt;ps ax | grep tsung&amp;nbsp;&lt;/i&gt;to see all processes and&amp;nbsp;&lt;i&gt; kill -9 &amp;lt;process pid&amp;gt;&lt;/i&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Generating HTML report&lt;/b&gt;&lt;br /&gt;In order to use these info, we launch the&lt;i&gt; tsung_stats.pl &lt;/i&gt;script which will produce a nice html report.&lt;br /&gt;&lt;i&gt;cd .tsung/log/yyyymmdd-HH:MM&lt;/i&gt;&lt;br /&gt;and copy tsung_stats.pl file here or specify absolute path type &lt;i&gt;perl tsung_stats.pl . &lt;/i&gt;This script will create in this folder reports.&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Here is my example, of Simultaneous Users:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Lo3O7eyRp_I/Tr5BIva5hTI/AAAAAAAABMA/OH6ujSLYQDA/s1600/graphes-Users-simultaneous.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-Lo3O7eyRp_I/Tr5BIva5hTI/AAAAAAAABMA/OH6ujSLYQDA/s320/graphes-Users-simultaneous.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And more reports examples &lt;a href="http://tsung.erlang-projects.org/screenshots.en.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://tsung.erlang-projects.org/user_manual.html"&gt;The Tsung manual&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tsung.erlang-projects.org/index.en.html"&gt;Tsung home page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://habrahabr.ru/blogs/testing/132459/"&gt;This article in Russian &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/4098043777173851852-2736453810357260115?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2736453810357260115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/11/tsung-web-application-performance-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2736453810357260115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2736453810357260115'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/11/tsung-web-application-performance-and.html' title='Tsung: Web Application Performance and Stress Testing'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-wWpHDkgQaHY/Tr5BfEgWJ5I/AAAAAAAABMI/vS1fkp1tn6Q/s72-c/tsung-logo.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8282093970075818795</id><published>2011-09-27T22:58:00.001+03:00</published><updated>2011-09-27T23:55:01.895+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='springmvc'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>JavaEE: Spring MVC blog</title><content type='html'>Recently I found a good blog about Spring MVC - &lt;a href="http://krams915.blogspot.com/p/tutorials.html"&gt;http://krams915.blogspot.com/p/tutorials.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-8282093970075818795?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8282093970075818795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/09/javaee-spring-mvc-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8282093970075818795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8282093970075818795'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/09/javaee-spring-mvc-blog.html' title='JavaEE: Spring MVC blog'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6834368808639114335</id><published>2011-09-22T15:09:00.007+03:00</published><updated>2011-09-22T20:24:13.645+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ejb'/><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>JavaEE: A beginner's guide to Enterprise Java Beans (EJB)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&amp;nbsp;&lt;b&gt;EJB&lt;/b&gt; - is a managed, server-side component architecture for modular construction of enterprise applications. Simply EJB provide instrument to write business layer(logic) of your application.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;There are three most used types of java beans:&lt;/b&gt;&lt;br /&gt;1)Session&amp;nbsp; Beans&lt;br /&gt;2)Mesage-drivien Beans&lt;br /&gt;3)Entities&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)Session&amp;nbsp; Beans&lt;/b&gt;&lt;br /&gt;There are three types of session beans: Stateful, Stateless and Singleton (till EJB 3.1). For Stateless and Stateful beans need to provide interfaces: remote and local. Remote beans are accessed via a network call and local beans are accessed within the same JVM.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stateless &lt;/b&gt;- do not maintain states ex. charging credit card ; checking credit history&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wf4ooEDcS6Q/TnskWUZ6CkI/AAAAAAAABLk/Zmnd4iHh9gw/s1600/stateless.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="189" src="http://1.bp.blogspot.com/-wf4ooEDcS6Q/TnskWUZ6CkI/AAAAAAAABLk/Zmnd4iHh9gw/s320/stateless.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Local&lt;br /&gt;public interface StoreManagerLocal extends StoreManager {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Customer&amp;gt; findAllCustomers();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Remote&lt;br /&gt;public interface StoreManagerRemote extends StoreManager {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Customer&amp;gt; findAllCustomers();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Stateless&lt;br /&gt;@RemoteBinding(jndiBinding="AppStoreEJB/remote")&lt;br /&gt;@LocalBinding(jndiBinding="AppStoreEJB/local")&lt;br /&gt;public class StoreManagerBean implements StoreManagerLocal,StoreManagerRemote &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PersistenceContext(unitName="MyStore")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private EntityManager em;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Customer&amp;gt; findAllCustomers() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Query query = em.createQuery("FROM Customer");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Customer&amp;gt; customerList = query.getResultList();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return customerList;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;How to call:&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class Tester extends HttpServlet {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt; &lt;br /&gt; @EJB(mappedName = "AppStoreEJB/local")  &lt;br /&gt; private StoreManager storeManager;&lt;br /&gt;&lt;br /&gt; //....&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Stateful&lt;/b&gt; - saves bean state between client invocations ex. shopping cart on online shops.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-A4Ssew9JPPM/TnskgvE1LwI/AAAAAAAABLs/XvHYalb3T3I/s1600/statefull.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://1.bp.blogspot.com/-A4Ssew9JPPM/TnskgvE1LwI/AAAAAAAABLs/XvHYalb3T3I/s320/statefull.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Stateful&lt;br /&gt;public class ShoppingCart implements ShoppingCartLocal,ShoppingCartRemote&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; //...&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Singleton&lt;/b&gt; - is a session bean with a guarantee that there is at most one instance in the application ex. loading common values for several objects till EJB 3.1&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Startup&lt;br /&gt;@Singleton&lt;br /&gt;public class StatusBean {&lt;br /&gt;&amp;nbsp; private String status;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; @PostConstruct&lt;br /&gt;&amp;nbsp; void init {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = "Ready";&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; //...&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;2)Mesage-drivien Bean&lt;/b&gt;&lt;br /&gt;-are business objects whose execution is triggered by messages instead of by method calls.( are stateless,server-side, transaction-aware components, for processing asynchronous JMS messages.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fqnGNs3ECFQ/TnskxUvrr0I/AAAAAAAABL0/I-TtmfM3yQA/s1600/mesage.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://2.bp.blogspot.com/-fqnGNs3ECFQ/TnskxUvrr0I/AAAAAAAABL0/I-TtmfM3yQA/s320/mesage.JPG" width="275" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@MessageDriven(activationConfig = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/exampleQueue") })&lt;br /&gt;public class MessageConsumer implements MessageListener {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Resource(mappedName = "java:/MySqlDS")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private DataSource datasource;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onMessage(Message msg) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (msg instanceof TextMessage) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TextMessage tmsg = (TextMessage) msg;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("MESSAGE BEAN: Message received: " + tmsg.getText());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;How to call:&lt;br /&gt;&lt;pre class="brush: java;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) throws Exception {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String destinationName = "queue/exampleQueue";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Context ic = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ConnectionFactory cf = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Connection connection =&amp;nbsp; null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // need try, catch and close context&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ic = getInitialContext();&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Queue queue = (Queue)ic.lookup(destinationName);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; connection = cf.createConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MessageProducer sender = session.createProducer(queue);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TextMessage message = session.createTextMessage("Frank");&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sender.send(message); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ic.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;3)Entities&lt;/b&gt;&lt;br /&gt;- represents persistent data maintained in a database.In EJB 3.0, Entity Beans were replaced by the Java Persistence API.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Entity&lt;br /&gt;@Table(name="customer")&lt;br /&gt;public class Customer implements Serializable {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue(strategy=GenerationType.AUTO)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Column(name="ID")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int id;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Column(name="COUNTRY")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private String country;&lt;br /&gt;&lt;br /&gt;//...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;More details abouth Entities relationships in the next post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;The Java EE 6 Tutorial - &lt;a href="http://java.sun.com/javaee/6/docs/tutorial/doc/bnblr.html"&gt;Enterprise Beans&lt;/a&gt; &lt;br /&gt;Francesco Marchioni - JBoss AS 5 Development&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-6834368808639114335?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6834368808639114335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/09/beginners-guide-to-enterprise-javabeans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6834368808639114335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6834368808639114335'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/09/beginners-guide-to-enterprise-javabeans.html' title='JavaEE: A beginner&apos;s guide to Enterprise Java Beans (EJB)'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-wf4ooEDcS6Q/TnskWUZ6CkI/AAAAAAAABLk/Zmnd4iHh9gw/s72-c/stateless.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6521697493723240590</id><published>2011-09-17T10:54:00.005+03:00</published><updated>2011-12-18T16:43:19.443+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Image viewer</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Of6vh-4JqLE/TnRNJgQpfMI/AAAAAAAABLE/pqebpM7VLIw/s1600/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-Of6vh-4JqLE/TnRNJgQpfMI/AAAAAAAABLE/pqebpM7VLIw/s320/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9.JPG" width="214" /&gt;&lt;/a&gt;&lt;/div&gt;View images loaded from Internet(using xml parsing) features: Delete, Reload, Save to SD card, Find, Delete All. Like list and menu I am using my classes extended from ArrayAdapter.&lt;br /&gt;&lt;br /&gt;Later will upload on github or google code, now &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B_fr-xSMZrJMYmQ0ZDlkMGQtNzdlNy00ODVmLWIzYTUtOWZjNDc1YTBhZDYx&amp;amp;hl=en_US"&gt;only .zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More screens&lt;/b&gt;:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right" class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XE6oqBJhx5s/TnRUNoHonII/AAAAAAAABLY/NPHGgAcrEU4/s1600/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B94.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-XE6oqBJhx5s/TnRUNoHonII/AAAAAAAABLY/NPHGgAcrEU4/s320/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B94.JPG" width="215" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-Aw10WcbfZqs/TnRNS9BV0GI/AAAAAAAABLU/IQFgr8i1aHE/s1600/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B93.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-Aw10WcbfZqs/TnRNS9BV0GI/AAAAAAAABLU/IQFgr8i1aHE/s320/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B93.JPG" width="216" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-iqDYVX2Rs4Q/TnRNOiZZk2I/AAAAAAAABLM/LFLsprd2lTs/s1600/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B92.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-iqDYVX2Rs4Q/TnRNOiZZk2I/AAAAAAAABLM/LFLsprd2lTs/s320/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B92.JPG" width="216" /&gt;&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/4098043777173851852-6521697493723240590?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6521697493723240590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/09/android-xmlimageviewer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6521697493723240590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6521697493723240590'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/09/android-xmlimageviewer.html' title='Android: Image viewer'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Of6vh-4JqLE/TnRNJgQpfMI/AAAAAAAABLE/pqebpM7VLIw/s72-c/%25D0%2591%25D0%25B5%25D0%25B7%25D1%258B%25D0%25BC%25D1%258F%25D0%25BD%25D0%25BD%25D1%258B%25D0%25B9.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-1960626935068789897</id><published>2011-09-16T21:51:00.000+03:00</published><updated>2011-09-16T21:51:44.894+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Android Packaging Problem</title><content type='html'>Strange error: "Conversion to Dalvik format failed with error 1 MyApplication Unknown Android Packaging Problem "&lt;br /&gt;&lt;br /&gt;Solution: Menu-&gt;Project-&gt;Clean.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-1960626935068789897?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/1960626935068789897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/09/android-android-packaging-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1960626935068789897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1960626935068789897'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/09/android-android-packaging-problem.html' title='Android: Android Packaging Problem'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-4762774416789014473</id><published>2011-09-10T21:26:00.002+03:00</published><updated>2011-09-12T10:55:59.200+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><title type='text'>Моя дипломная работа: разработка RIA при помощи Flex</title><content type='html'>&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B_fr-xSMZrJMY2E1NjI3N2EtMDhkMS00ZTExLTlkMDMtZDZmZTI0M2E0ZTVm&amp;hl=en_US"&gt;&lt;b&gt;Посмотреть работу&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sites.google.com/site/progrnotes/home/imageeditor1"&gt;&lt;b&gt;Посмотреть программу Flex Image Editor&lt;/b&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-4762774416789014473?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/4762774416789014473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/09/ria-flex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4762774416789014473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4762774416789014473'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/09/ria-flex.html' title='Моя дипломная работа: разработка RIA при помощи Flex'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6940486271839091634</id><published>2011-08-16T20:46:00.002+03:00</published><updated>2011-12-07T12:01:59.458+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Does Java Use Pass-By-Value Semantics?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Java is actually pass-by-value for all variables running within a single&lt;br /&gt;VM. Pass-by-value means pass-by-variable-value. And that means, pass-by-copy-ofthe-&lt;br /&gt;variable!&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;It makes no difference if you're passing primitive or reference variables, you are&lt;br /&gt;always passing a copy of the bits in the variable. So for a primitive variable, you're&lt;br /&gt;passing a copy of the bits representing the value. For example, if you pass an int&lt;br /&gt;variable with the value of 3, you're passing a copy of the bits representing 3. The&lt;br /&gt;called method then gets its own copy of the value, to do with it what it likes.&lt;br /&gt;&lt;br /&gt;And if you're passing an object reference variable, you're passing a copy of the&lt;br /&gt;bits representing the reference to an object. The called method then gets its own&lt;br /&gt;copy of the reference variable, to do with it what it likes. But because two identical reference variables refer to the exact same object, if the called method modifies the object (by invoking setter methods, for example), the caller will see that the object the caller's original variable refers to has also been changed. In the next section, we'll look at how the picture changes when we're talking about primitives.&lt;br /&gt;&lt;br /&gt;The bottom line on pass-by-value: the called method can't change the caller's&lt;br /&gt;variable, although for object reference variables, the called method can change the&lt;br /&gt;object the variable referred to. What's the difference between changing the variable&lt;br /&gt;and changing the object? For object references, it means the called method can't&lt;br /&gt;reassign the caller's original reference variable and make it refer to a different object,or null. For example, in the following code fragment,&lt;br /&gt;&lt;pre class="brush: java;"&gt;void bar() {&lt;br /&gt;Foo f = new Foo();&lt;br /&gt;doStuff(f);&lt;br /&gt;}&lt;br /&gt;void doStuff(Foo g) {&lt;br /&gt;g.setName("Boo");&lt;br /&gt;g = new Foo();&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;reassigning g does not reassign f! At the end of the &lt;i&gt;bar()&lt;/i&gt; method, two Foo objects&lt;br /&gt;have been created, one referenced by the local variable f and one referenced by&lt;br /&gt;the local (argument) variable g. Because the &lt;i&gt;doStuff()&lt;/i&gt; method has a copy of the&lt;br /&gt;reference variable, it has a way to get to the original Foo object, for instance to call the &lt;i&gt;setName()&lt;/i&gt; method. But, the doStuff() method does not have a way to get to&lt;br /&gt;the f reference variable. So &lt;i&gt;doStuff()&lt;/i&gt; can change values within the object f refers&lt;br /&gt;to, but &lt;i&gt;doStuff()&lt;/i&gt; can't change the actual contents (bit pattern) of f. In other&lt;br /&gt;words, &lt;i&gt;doStuff()&lt;/i&gt; can change the state of the object that f refers to, but it can't&lt;br /&gt;make f refer to a different object!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;From SCJP6 book&lt;br /&gt;&lt;a href="http://www.javaranch.com/campfire/StoryPassBy.jsp"&gt;Also &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/4098043777173851852-6940486271839091634?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6940486271839091634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/08/does-java-use-pass-by-value-semantics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6940486271839091634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6940486271839091634'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/08/does-java-use-pass-by-value-semantics.html' title='Does Java Use Pass-By-Value Semantics?'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8092278977385342782</id><published>2011-07-06T12:08:00.003+03:00</published><updated>2011-07-06T16:09:52.226+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><title type='text'>JavaEE: Building web project using Ant</title><content type='html'>Ant is a great tool for building your projects. In this example I'll create simple jar (of course you can create war and ear archives in this case you should use &amp;lt;war ...&amp;gt; and &amp;lt;ear ...&amp;gt; tags) and deploy it on Jboss . &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Usually in web projects we have many libraries and need to include them (in my case i use jboss jar)&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;project name="testProject" default="deploy"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="app.name" value="testProject"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jar.name" value="${app.name}.jar" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="build.dir" value="build"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="classes.dir" location="${build.dir}/classes" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jar.location" location="${build.dir}/jar" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="compiler.src.encoding" value="UTF-8" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jboss_home" location="C:/serverTest/jboss-5.0.0.GA" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="deploy.dir" location="C:/serverTest/jboss-5.0.0.GA/server/default/deploy" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="create-dirs"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="CREATING DIRS" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${classes.dir}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${jar.location}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="clean"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="CLEANING PROJECT" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete dir="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete dir="${jar.location}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="compile" description="Compiling classes" depends="clean,create-dirs"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="COMPILING CLASSES" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;javac srcdir="ejbModule" destdir="${classes.dir}" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; optimize="true" encoding="${compiler.src.encoding}" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; classpath="${jboss_home}/common/lib/jboss-javaee.jar"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/javac&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="build-jar" description="Create jar" depends="compile"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="CREATING JAR" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jar jarfile="${jar.location}/${jar.name}" index="true" update="false" duplicate="fail"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset dir="${classes.dir}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/jar&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="deploy" depends="build-jar"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="DEPLOYING APPLICATION" /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete dir="${deploy.dir}/${jar.name}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;copy todir="${deploy.dir}" file="${jar.location}/${jar.name}" overwrite="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt; &lt;br /&gt;&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/4098043777173851852-8092278977385342782?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8092278977385342782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/07/javaee-building-simple-web-project.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8092278977385342782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8092278977385342782'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/07/javaee-building-simple-web-project.html' title='JavaEE: Building web project using Ant'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-7672586989120856242</id><published>2011-05-14T16:36:00.005+03:00</published><updated>2011-09-10T21:38:28.785+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TicTacToe'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Android: Tic Tac Toe game on google code</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-90dYHJZWfVk/TfDz05IYjHI/AAAAAAAABHU/5bUraKCQLUU/s1600/29782376.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="213" src="http://2.bp.blogspot.com/-90dYHJZWfVk/TfDz05IYjHI/AAAAAAAABHU/5bUraKCQLUU/s320/29782376.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Decided to upload my old project - Android Tic Tac Toe Game. This project was created for educational scope. &lt;br /&gt;&lt;br /&gt;Here is a link&lt;br /&gt;&lt;br /&gt;&lt;a href="https://andoid-tictactoe.googlecode.com/"&gt;https://andoid-tictactoe.googlecode.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-7672586989120856242?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/7672586989120856242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/05/andoid-tictactoe-game-on-google-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7672586989120856242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7672586989120856242'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/05/andoid-tictactoe-game-on-google-code.html' title='Android: Tic Tac Toe game on google code'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-90dYHJZWfVk/TfDz05IYjHI/AAAAAAAABHU/5bUraKCQLUU/s72-c/29782376.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-5857277506971138324</id><published>2011-05-03T15:46:00.001+03:00</published><updated>2011-05-03T15:52:42.463+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Auto Generate Database(ER) Diagram MySql</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3YS0GbRxliM/Tb_4zjdZJ3I/AAAAAAAABFU/_zgEmWYdOM0/s1600/windowslivewriter59c4fbcf9487-429image-thumb.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="206" src="http://1.bp.blogspot.com/-3YS0GbRxliM/Tb_4zjdZJ3I/AAAAAAAABFU/_zgEmWYdOM0/s320/windowslivewriter59c4fbcf9487-429image-thumb.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To create ER diagram from db schema you can use SchemaSpy.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Here are few steps: &lt;br /&gt;1. Download &lt;a href="http://schemaspy.sourceforge.net/"&gt;SchemaSpy&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;2. Install flowing:&lt;br /&gt;- Java&lt;br /&gt;- JDBC MySQL Connector&lt;br /&gt;- &lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt; (and dot program, which is part of GraphViz)&lt;br /&gt;&lt;br /&gt;3.Execute command in console&lt;br /&gt;&lt;pre class="brush: java;"&gt;C:\test&gt;java -jar schemaSpy_5.0.0.jar -t mysql -o folderWhereCreate -host dbHost -db dbName -u dbUser -p dbPassword -dp mysql-connector-java-3.1.13-bin.jar&lt;br /&gt;&lt;/pre&gt;ps: You can download all in one &lt;a href="https://docs.google.com/leaf?id=0B_fr-xSMZrJMODdlYjI5YTUtNDUwMy00OTJhLTkyMmYtNDI3ZGMwODliZTdj&amp;sort=name&amp;layout=list&amp;num=50&amp;authkey=CPWrvv8L"&gt;archive&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/library/j-ap06108/index.html"&gt;Automate the generation of your developer and user documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-5857277506971138324?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/5857277506971138324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/05/auto-generate-databaseer-diagram-mysql.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/5857277506971138324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/5857277506971138324'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/05/auto-generate-databaseer-diagram-mysql.html' title='Auto Generate Database(ER) Diagram MySql'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3YS0GbRxliM/Tb_4zjdZJ3I/AAAAAAAABFU/_zgEmWYdOM0/s72-c/windowslivewriter59c4fbcf9487-429image-thumb.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8036300259451718921</id><published>2011-04-27T17:17:00.006+03:00</published><updated>2011-08-04T10:41:28.114+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Java: Loading data from file into Oracle database</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-m8_zo6SGtbM/Tbgm_HJ04_I/AAAAAAAABFA/h-fIZItc_QM/s1600/sqlldr.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="284" width="320" src="http://3.bp.blogspot.com/-m8_zo6SGtbM/Tbgm_HJ04_I/AAAAAAAABFA/h-fIZItc_QM/s320/sqlldr.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It's possible to do using Sql Loader.SQL*Loader is a bulk loader utility used for moving data from external files into the Oracle database.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Here are the steps you should implement:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Intall oracle db, full or express&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) Create files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;*.txt file with data (may be any extension) and *.ctl file, it's using for specify mapping with data in file and database fields&lt;br /&gt;&lt;br /&gt;&lt;i&gt;example test.txt :&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;Bob     12 1999&lt;br /&gt;George  9  1977&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;example test.ctl:&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;-- loading data&lt;br /&gt;OPTIONS (ERRORS=999999)&lt;br /&gt;LOAD&lt;br /&gt;infile *&lt;br /&gt;INTO TABLE PEOPLES&lt;br /&gt;    REPLACE&lt;br /&gt;  {&lt;br /&gt;  persone_name POSITION(1:8) CHAR ,     &lt;br /&gt; persone_month POSITION(8:9) CHAR,&lt;br /&gt; persone_year POSITION(12:14) CHAR,&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;In place of Replace you can use also APPEND - if data doesn't already exist,INSERT - it requires the table to be empty&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) Execute in the console&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;String command = "sqlldr userid=" + "oracleuser/oraclepassword" + " control=" + "test.ctl"+ " data=" + "test.txt";&lt;br /&gt;Process process = Runtime.getRuntime().exec(command);&lt;br /&gt;int exitVal = process.waitFor();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;exitVal may be:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;0 - successful &lt;br /&gt;1 - failed &lt;br /&gt;2 - warn &lt;br /&gt;3 - fatal&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;Oracle - &lt;a href="http://download.oracle.com/docs/cd/B10501_01/server.920/a96652/ch05.htm"&gt;SQL*Loader Control File Reference&lt;/a&gt;&lt;br /&gt;Some &lt;a href="http://psoug.org/reference/sqlloader.html"&gt;examples&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-8036300259451718921?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8036300259451718921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/04/java-loading-data-from-file-into-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8036300259451718921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8036300259451718921'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/04/java-loading-data-from-file-into-oracle.html' title='Java: Loading data from file into Oracle database'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-m8_zo6SGtbM/Tbgm_HJ04_I/AAAAAAAABFA/h-fIZItc_QM/s72-c/sqlldr.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-3942602907021890896</id><published>2011-04-22T16:05:00.003+03:00</published><updated>2011-04-28T21:09:54.970+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>JavaEE: Using @EJB annotation</title><content type='html'>Shows use of @EJB in a Stateless to have another Stateless bean injected into it.Using Jboss 5 + Seam framework&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bean:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Stateless&lt;br /&gt;@Name(DataStoreImpl.COMPONENT_NAME)&lt;br /&gt;@Scope(ScopeType.STATELESS)&lt;br /&gt;public class DataStoreImpl implements DataStoreLocal{&lt;br /&gt;        public static final String COMPONENT_NAME = "dataStoreImpl";&lt;br /&gt;&lt;br /&gt; @EJB&lt;br /&gt; protected Test test;&lt;br /&gt;&lt;br /&gt; public String getData() {&lt;br /&gt;  // using test&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Local business interface:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Local&lt;br /&gt;public interface DataStoreLocal {&lt;br /&gt; &lt;br /&gt; public String getData();&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Call:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;DataStoreLocal data = (DataStoreLocal) Component.getInstance(&lt;br /&gt;     DataStoreImpl.COMPONENT_NAME, true);&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/4098043777173851852-3942602907021890896?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/3942602907021890896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/04/javaee-ejb-annotation-use.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3942602907021890896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3942602907021890896'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/04/javaee-ejb-annotation-use.html' title='JavaEE: Using @EJB annotation'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-1484159011050031219</id><published>2011-03-06T15:35:00.013+02:00</published><updated>2011-09-11T14:13:37.243+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><title type='text'>Flex / AS3: The best way to encode JPEG</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Recently in my diploma I need to encode jpeg file on client, after some research I found &lt;a href="https://docs.google.com/leaf?id=0B_fr-xSMZrJMOWQ5MGNmMTAtZGI0NS00MzQ5LTk4YjEtN2U1MDYwN2Y1OGFj&amp;sort=name&amp;layout=list&amp;num=50"&gt;library&lt;/a&gt; created using &lt;a href="http://labs.adobe.com/technologies/alchemy/"&gt;Alchemy project&lt;/a&gt;( from C/C++ language).It allows you to encode jpeg both synchronous and asynchronous with maximum speed(unlike standard encode() method).&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;After downloading library and including it in your project, you should do:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Init library&lt;/b&gt;&lt;br /&gt;This nethod should start with application running &lt;i&gt;s:application applicationcomplete="initAlchemy()"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;private var init1:CLibInit;&lt;br /&gt;      private var lib : Object; &lt;br /&gt;    &lt;br /&gt;      private function initAlchemy():void&lt;br /&gt;      {&lt;br /&gt;        init1 = new CLibInit();&lt;br /&gt;        lib = init1.init();&lt;br /&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;2.Prepare your image&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;private var bd:BitmapData ; //your image here&lt;br /&gt;  public var byteArr:ByteArray = bd.getPixels( bd.rect );&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;3.1 Encode your image synchronous&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;var ba:ByteArray = bd.getPixels( bd.rect );&lt;br /&gt;   ba.position = 0;&lt;br /&gt;   byteArr = new ByteArray();&lt;br /&gt;&lt;br /&gt;  //result will be in byteArr&lt;br /&gt;  lib.encode(ba, byteArr, bd.width, bd.height, 100);&lt;br /&gt;  fileRef.save(byteArr,"NewFileName1.jpg");&lt;br /&gt;&lt;/pre&gt;&lt;i&gt;encode( src:BimapData, image_data:ByteArrat, imageWidth:uint, imageHeight:uint, quality:int );&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Parameters:&lt;br /&gt;&lt;br /&gt;src:BitmapData - bitmapData to be encoded. cannot be null !&lt;br /&gt;image_data:ByteArray - buffer where jpeg image will be written to. cannot be null !&lt;br /&gt;imageWidth:int - 'src' image width&lt;br /&gt;imageHeight:int - 'src' image height&lt;br /&gt;quality:int - jpeg quality (1-100)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.2 Or encode your image asynchronous&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;lib.encodeAsync( finish, bd, ba,bd.width, bd.height, 100, tuning:int );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;encodeAsync( callback:Function, src:BimapData, image_data:ByteArrat, imageWidth:uint, imageHeight:uint, quality:int, tuning:int );&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Parameters:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;callback:Function - callback function to be called when compression is finished. function is invoked with out parameter, image_data byteArray (the same passed as a image_data parameter&lt;br /&gt;src:BitmapData - see synchronous method&lt;br /&gt;image_data:ByteArray - see synchronous method&lt;br /&gt;imageWidth:int - see synchronous method&lt;br /&gt;imageHeight:int - see synchronous method&lt;br /&gt;quality:int - see synchronous method&lt;br /&gt;tuning:int - this is most important parameter, it defines 'how often' method is going to interrupted and control flow returned to other parts of application. it should be interpreted, rather as a 'number of scanlines to be compressed in a single timeslice'&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.switchonthecode.com/tutorials/flex-tutorial-an-asynchronous-jpeg-encoder"&gt;Flex Tutorial - An Asynchronous JPEG Encoder&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://segfaultlabs.com/devlogs/alchemy-asynchronous-jpeg-encoding-2"&gt;Alchemy - asynchronous jpeg encoding #2&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://segfaultlabs.com/devlogs/alchemy-asynchronous-jpeg-encoding"&gt;Alchemy - asynchronous jpeg encoding&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bytearray.org/?p=775"&gt;First I tried &amp;nbsp;bytearray.org&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/4098043777173851852-1484159011050031219?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/1484159011050031219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/03/flex-best-way-to-encode-jpeg.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1484159011050031219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1484159011050031219'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/03/flex-best-way-to-encode-jpeg.html' title='Flex / AS3: The best way to encode JPEG'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-957023772680257189</id><published>2011-02-10T00:29:00.015+02:00</published><updated>2011-11-22T16:10:36.987+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fuzzy search'/><category scheme='http://www.blogger.com/atom/ns#' term='fuzzy compare'/><category scheme='http://www.blogger.com/atom/ns#' term='Spell Check'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>Approximate string matching algorithm (fuzzy search)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is a great algorithm to find similarity coefficient of the two words.&lt;br /&gt;Author is Viterbi or Bellman.I didn't find anything about it in the Internet.&lt;br /&gt;&lt;br /&gt;For example exists dictionary: mother, uncle, cat, dog. And you typed smth like&lt;br /&gt;"maaather", as the result will be "maaather" -&amp;gt; mother.&lt;br /&gt;This algorithm possible to use in spell checking,sound recognition etc.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Algorithm description will be later &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Here is the source code:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;/**&lt;br /&gt; *&lt;br /&gt; * This class is for finding coefficient of similarity of the two words&lt;br /&gt; * using Viterbi(Bellman) algorithm&lt;br /&gt; * @author Sergey&lt;br /&gt; */&lt;br /&gt;public class Analyzer {&lt;br /&gt;  &lt;br /&gt;    private double init[][];&lt;br /&gt;    private double result[][];&lt;br /&gt;    private int n;&lt;br /&gt;    private int m;&lt;br /&gt; &lt;br /&gt;    private void calculateASCIIDifference(String str1, String str2) {&lt;br /&gt;     try{&lt;br /&gt;        n = str1.length();&lt;br /&gt;        m = str2.length();&lt;br /&gt;        init = new double[n][m];&lt;br /&gt;        for (int i = n - 1,i2 = 0; i &amp;gt;= 0; i--, i2++) {&lt;br /&gt;            for (int j = 0; j &amp;lt; m; j++) {&lt;br /&gt;                 init[i2][j] = Math.abs((int) str1.charAt(i) - (int) str2.charAt(j));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;     } catch(Exception e){&lt;br /&gt;         System.out.println("calculateASCIIDifference exception: "+e.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public double[][] getASCIIDifference() {&lt;br /&gt;        return init;&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public void setASCIIDifference(double[][] a,int n, int m) {&lt;br /&gt;        this.n = n;&lt;br /&gt;        this.m = m;&lt;br /&gt;        this.init = a;&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    // Calculate matrix by values from calculateASCIIDifference()&lt;br /&gt;    public double calculateSimilarity(String str1, String str2) {&lt;br /&gt;     &lt;br /&gt;     calculateASCIIDifference(str1,str2);    &lt;br /&gt;     try{&lt;br /&gt;         result = new double[n][m];&lt;br /&gt;         double res, val1, val2, val3;&lt;br /&gt;  &lt;br /&gt;         //initialize first element&lt;br /&gt;         result[n - 1][0] = init[n - 1][0];&lt;br /&gt;         &lt;br /&gt;         //initialize first column&lt;br /&gt;         for (int i = n - 2; i &amp;gt;= 0; i--) {&lt;br /&gt;             result[i][0] = result[i + 1][0] + init[i][0];&lt;br /&gt;         }  &lt;br /&gt;         //initialize first row(from down)&lt;br /&gt;         for (int j = 1; j &amp;lt; m; j++) {&lt;br /&gt;             result[n - 1][j] = result[n - 1][j - 1] + init[n - 1][j];&lt;br /&gt;         }  &lt;br /&gt;         //initialize others&lt;br /&gt;         for (int i = n - 2; i &amp;gt;= 0; i--) {&lt;br /&gt;             for (int j = 1; j &amp;lt; m; j++) {&lt;br /&gt;                 val1 = result[i][j - 1] + init[i][j];&lt;br /&gt;                 val2 = result[i + 1][j] + init[i][j];&lt;br /&gt;                 val3 = result[i + 1][j - 1] + (init[i][j] * 2);&lt;br /&gt;  &lt;br /&gt;                 //minimum of the 3 val's&lt;br /&gt;                 res = val1 &amp;lt; val2 ? val1 : val2;&lt;br /&gt;                 res = res &amp;lt; val3 ? res : val3;&lt;br /&gt;  &lt;br /&gt;                 result[i][j] = res;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         return getSimilarityValue();&lt;br /&gt;     }&lt;br /&gt;     catch(Exception e){&lt;br /&gt;      System.out.println("calculateSimilarity exception: "+e.toString());&lt;br /&gt;     }&lt;br /&gt;     return -1;&lt;br /&gt;    }&lt;br /&gt;    //getting result of Similarity&lt;br /&gt;    public double getSimilarityValue() {&lt;br /&gt;     //need to devide if m != n&lt;br /&gt;      if(m != n)&lt;br /&gt;         return result[0][m - 1] / (m + n);&lt;br /&gt;      else&lt;br /&gt;      return result[0][m - 1];&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    //getting result array&lt;br /&gt;    public double[][] getSimilarityArray() {&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    //to test   &lt;br /&gt;    public static void main(String[] args) {  &lt;br /&gt;     double result1,result2;    &lt;br /&gt;     Analyzer an = new Analyzer();&lt;br /&gt;     result1 = an.calculateSimilarity("mather","mother");   &lt;br /&gt;     result2 = an.calculateSimilarity("father","mother"); &lt;br /&gt;     //result1 will be less than result2 =&amp;gt; result1 is more similar&lt;br /&gt;     System.out.println(result1 + " " + result2);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;Something common &lt;a href="http://staffwww.dcs.shef.ac.uk/people/S.Chapman/stringmetrics.html"&gt;Similarity Metrics&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/4098043777173851852-957023772680257189?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/957023772680257189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/02/words-similarity-algorithm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/957023772680257189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/957023772680257189'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/02/words-similarity-algorithm.html' title='Approximate string matching algorithm (fuzzy search)'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2136834155649766312</id><published>2011-01-28T21:57:00.005+02:00</published><updated>2012-01-13T09:43:08.813+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='collections'/><title type='text'>Java: Collections basics</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_4hOzejeZitc/TUMhXlFn75I/AAAAAAAABCk/0s0zQyrsP9E/s1600/tab1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://1.bp.blogspot.com/_4hOzejeZitc/TUMhXlFn75I/AAAAAAAABCk/0s0zQyrsP9E/s400/tab1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In this article i'll describe basics of java collections&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;ArrayList&amp;nbsp;&lt;/b&gt;&lt;br /&gt;An ArrayList is better than Array to use when you have no knowledge in advance about elements number. ArrayList are slower than Arrays. So, if you need efficiency try to use Arrays if possible.Also it is not synchronized. The add operation runs O(n) time.Permits null elements&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vector&lt;/b&gt;&lt;br /&gt;Very similar to the ArrayList class. Slover than&lt;b&gt; &amp;nbsp;&lt;/b&gt;ArrayList .Also it is synchronized.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LinkedList&lt;/b&gt;&lt;br /&gt;LinkedList is much more flexible and lets you insert, add and remove elements from both sides of your collection - it can be used as queue and even double-ended queue.Manipulation with data is fast but showing or getting some element only after enumeration all.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HashMap&amp;nbsp;&lt;/b&gt;&lt;br /&gt;A hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys(Key -- Value) HashMap is not synchronized.HashMap allows one null key and any number of null values.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;TreeMap&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;is the sorted version of the  HashMap, offers the ability to traverse the contents of the Map in a determined order.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;HashTable&lt;/b&gt;&lt;br /&gt;Is very similar to the HashMap. It's synchronized.Hashtable does not allow null keys or values.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HashSet&lt;/b&gt;&lt;br /&gt;Set is a collection of distinct objects.It stores its elements in a hash table.Order -undefined.Performance - better than LinkedHashSet&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LinkedHashSet&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;is implemented as a hash table with a linked list running through it.Order - insertion.Performance - has fast adding to the start of the list, and fast deletion from the interior via iteration&lt;br /&gt;&lt;br /&gt;&lt;b&gt;TreeSet&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;It stores its elements in a red-black tree.Order - ascending.Performance - Slow&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://vidyapsi.wordpress.com/2009/01/22/treeset-vs-hashset-vs-linkedhashset/"&gt;TreeSet vs HashSet vs LinkedHashSet&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javafaq.nu/java-article1111.html"&gt;Array vs ArrayList vs LinkedList vs Vector&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sys-con.com/node/43554"&gt;Java Collections&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-2136834155649766312?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2136834155649766312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-collections-basics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2136834155649766312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2136834155649766312'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-collections-basics.html' title='Java: Collections basics'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4hOzejeZitc/TUMhXlFn75I/AAAAAAAABCk/0s0zQyrsP9E/s72-c/tab1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6681727682026144582</id><published>2011-01-28T21:13:00.003+02:00</published><updated>2011-05-03T19:33:10.372+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Java: Using SQLite</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;SQLite - is embedded relational database management system.In other words you can use it without server.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;First of all you should download &lt;a href="https://docs.google.com/leaf?id=0B_fr-xSMZrJMODgzOTdjYTEtYjQwNy00YTE1LTkzZDktM2NmZjAxYjQ3OTAx&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50&amp;amp;authkey=CJ3zrpUP"&gt;SQLite JDBC driver&lt;/a&gt; and add it in your project.Next some code manipulations.Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;import java.sql.Connection;&lt;br /&gt;import java.sql.DriverManager;&lt;br /&gt;import java.sql.PreparedStatement;&lt;br /&gt;import java.sql.ResultSet;&lt;br /&gt;import java.sql.Statement;&lt;br /&gt;&lt;br /&gt;public class main {&lt;br /&gt;private static Connection con;&lt;br /&gt;&lt;br /&gt;public void run() throws Exception {&lt;br /&gt;&lt;br /&gt;//sq lite driver&lt;br /&gt;Class.forName("org.sqlite.JDBC");&lt;br /&gt;//database path, if it's new data base it will be created in project folder&lt;br /&gt;con = DriverManager.getConnection("jdbc:sqlite:mydb.db");&lt;br /&gt;Statement stat = con.createStatement();&lt;br /&gt;&lt;br /&gt;stat.executeUpdate("drop table if exists weights");&lt;br /&gt;&lt;br /&gt;//creating table&lt;br /&gt;stat.executeUpdate("create table weights(id integer,"&lt;br /&gt;+ "firstName varchar(30)," + "age INT," + "sex varchar(15),"&lt;br /&gt;+ "weight INT," + "height INT,"&lt;br /&gt;+ "idealweight INT, primary key (id));");&lt;br /&gt;&lt;br /&gt;PreparedStatement prep = con&lt;br /&gt;.prepareStatement("insert into weights values(?,?,?,?,?,?,?);");&lt;br /&gt;prep.setString(2, "vasea");&lt;br /&gt;prep.setString(3, "21");&lt;br /&gt;prep.setString(4, "male");&lt;br /&gt;prep.setString(5, "77");&lt;br /&gt;prep.setString(6, "185");&lt;br /&gt;prep.setString(7, "76");&lt;br /&gt;prep.execute();&lt;br /&gt;&lt;br /&gt;//getting data&lt;br /&gt;ResultSet res = stat.executeQuery("select * from weights");&lt;br /&gt;while (res.next()) {&lt;br /&gt;System.out.println(res.getString("id") + " " + res.getString("age")&lt;br /&gt;+ " " + res.getString("firstName") + " "&lt;br /&gt;+ res.getString("sex") + " " + res.getString("weight")&lt;br /&gt;+ " " + res.getString("height") + " "&lt;br /&gt;+ res.getString("idealweight"));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @param args&lt;br /&gt;*/&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;  try {&lt;br /&gt;    new main().run();&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;  // TODO Auto-generated catch block&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&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/4098043777173851852-6681727682026144582?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6681727682026144582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-using-sqlite.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6681727682026144582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6681727682026144582'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-using-sqlite.html' title='Java: Using SQLite'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-1541333546394654852</id><published>2011-01-16T16:47:00.003+02:00</published><updated>2011-02-12T17:53:18.538+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='charts'/><title type='text'>Java: Drawing charts it's easy</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_4hOzejeZitc/TTME7miRnVI/AAAAAAAABCI/hMULIjPq8EM/s1600/test.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://1.bp.blogspot.com/_4hOzejeZitc/TTME7miRnVI/AAAAAAAABCI/hMULIjPq8EM/s320/test.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Recently I need to draw a chart, and after short search I found great library&lt;a href="http://www.jfree.org/jfreechart/"&gt; JFreeChart&lt;/a&gt;. It provides drawing and saving charts to the png file.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Here is the code sample:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;import javax.swing.JFrame;&lt;br /&gt;import org.jfree.chart.ChartFactory;&lt;br /&gt;import org.jfree.chart.ChartPanel;&lt;br /&gt;import org.jfree.chart.JFreeChart;&lt;br /&gt;import org.jfree.chart.plot.PlotOrientation;&lt;br /&gt;import org.jfree.data.xy.XYDataset;&lt;br /&gt;import org.jfree.data.xy.XYSeries;&lt;br /&gt;import org.jfree.data.xy.XYSeriesCollection;&lt;br /&gt; &lt;br /&gt;public class MyChart {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;    XYSeries series = new XYSeries("cos(a)");&lt;br /&gt; &lt;br /&gt;    //calculating points&lt;br /&gt;    for(float i = -10; i &amp;lt; 10; i+=0.1){&lt;br /&gt;      series.add(i, Math.cos(i));&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    XYDataset xyDataset = new XYSeriesCollection(series);&lt;br /&gt;&lt;br /&gt;    //creating chart&lt;br /&gt;    JFreeChart chart = ChartFactory&lt;br /&gt;        .createXYLineChart("y = cos(x)", "x", "y",&lt;br /&gt;                           xyDataset, &lt;br /&gt;                           PlotOrientation.VERTICAL,&lt;br /&gt;                           true, true, true);&lt;br /&gt;    JFrame frame = &lt;br /&gt;        new JFrame("Chart");&lt;br /&gt;&lt;br /&gt;    //adding chart to the frame&lt;br /&gt;    frame.getContentPane()&lt;br /&gt;        .add(new ChartPanel(chart));&lt;br /&gt;    frame.setSize(400,300);&lt;br /&gt;    frame.show();&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;br /&gt;JFreeChart &lt;a href="http://www.screaming-penguin.com/node/4005"&gt;tutorial&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/4098043777173851852-1541333546394654852?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/1541333546394654852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-drawing-charts-its-easy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1541333546394654852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1541333546394654852'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2011/01/java-drawing-charts-its-easy.html' title='Java: Drawing charts it&apos;s easy'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4hOzejeZitc/TTME7miRnVI/AAAAAAAABCI/hMULIjPq8EM/s72-c/test.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2048119917404559987</id><published>2010-12-25T19:30:00.004+02:00</published><updated>2011-01-16T16:50:18.566+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><title type='text'>Java:Code coverage for Eclipse</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_4hOzejeZitc/TRYpyN--LWI/AAAAAAAABBo/wNUIDR7ML_A/s1600/screen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_4hOzejeZitc/TRYpyN--LWI/AAAAAAAABBo/wNUIDR7ML_A/s320/screen.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://en.wikipedia.org/wiki/Code_Coverage"&gt;Code coverage&lt;/a&gt; describes the degree to which the source code of a program has been tested.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;When you test method you can find coverage using &lt;a href="http://www.eclemma.org/"&gt;EclEmma&lt;/a&gt; plug-in for eclipse.It's simply add new view.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-2048119917404559987?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2048119917404559987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/java-junit-code-coverage-in-eclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2048119917404559987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2048119917404559987'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/java-junit-code-coverage-in-eclipse.html' title='Java:Code coverage for Eclipse'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4hOzejeZitc/TRYpyN--LWI/AAAAAAAABBo/wNUIDR7ML_A/s72-c/screen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-4740264674656891197</id><published>2010-12-25T18:59:00.007+02:00</published><updated>2011-05-03T19:33:31.551+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Java: JDBC basics</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;JDBC is an API for the Java programming language that defines how a client may access a database. It provides methods for querying and updating data in a database.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How it works?&lt;/b&gt;&lt;br /&gt;1.First you should specify sql &lt;a href="http://www.mysql.com/downloads/connector/j/"&gt;driver&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Class.forName("com.mysql.jdbc.Driver");&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2.Next url to your sql server&lt;br /&gt;&lt;i&gt;Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName", "userName", "userPassword");&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;3.And finally execute query using &lt;i&gt;Statement&lt;/i&gt; or &lt;i&gt;PreparedStatement&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;import java.sql.Connection;&lt;br /&gt;import java.sql.Date;&lt;br /&gt;import java.sql.DriverManager;&lt;br /&gt;import java.sql.PreparedStatement;&lt;br /&gt;import java.sql.ResultSet;&lt;br /&gt;import java.sql.SQLException;&lt;br /&gt;import java.sql.Statement;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;class jdbcTest {&lt;br /&gt; public static void main(String args[]) {&lt;br /&gt;  try {&lt;br /&gt;   //connecting&lt;br /&gt;   Class.forName("com.mysql.jdbc.Driver");&lt;br /&gt;   String url = "jdbc:mysql://localhost:3306/dbName";&lt;br /&gt;   Connection con = DriverManager.getConnection(url, "root", "");&lt;br /&gt;   List&lt;group&gt; groups = new ArrayList&lt;group&gt;();&lt;br /&gt;   &lt;br /&gt;   //using Statement to select&lt;br /&gt;   Statement stmt = null;&lt;br /&gt;   ResultSet rs = null;&lt;br /&gt;   try {&lt;br /&gt;    stmt = con.createStatement();&lt;br /&gt;    rs = stmt&lt;br /&gt;      .executeQuery("SELECT group_id, groupName FROM groups");&lt;br /&gt;    while (rs.next()) {     &lt;br /&gt;       Group gr = new Group(); &lt;br /&gt;       gr.setGroupId(rs.getInt(1));&lt;br /&gt;       gr.setNameGroup(rs.getString(2));      &lt;br /&gt;       groups.add(gr);      &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;   //using prepared Statement to insert &lt;br /&gt;    PreparedStatement stmt2 = null;&lt;br /&gt;          try {&lt;br /&gt;              stmt = con.prepareStatement(&lt;br /&gt;                      "INSERT INTO groups " +&lt;br /&gt;                      "(group_id, groupName) " +&lt;br /&gt;                      "VALUES (?, ?)");&lt;br /&gt;              stmt2.setInt(1, group.getId());&lt;br /&gt;              stmt2.setString(2, group.getName());          &lt;br /&gt;              stmt2.execute();&lt;br /&gt;   } finally {&lt;br /&gt;    if (rs != null) {&lt;br /&gt;     rs.close();&lt;br /&gt;    }&lt;br /&gt;    if (stmt != null) {&lt;br /&gt;     stmt.close();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  } &lt;br /&gt; }&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/4098043777173851852-4740264674656891197?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/4740264674656891197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/javajdbc-basics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4740264674656891197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4740264674656891197'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/javajdbc-basics.html' title='Java: JDBC basics'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-5772484790590234951</id><published>2010-12-21T16:35:00.005+02:00</published><updated>2010-12-25T19:31:52.844+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><title type='text'>Java: Parameterized unit tests with JUnit</title><content type='html'>JUnit is a unit testing framework for the Java programming language.In this article I will explain how to create test with predefined values.This feature works in &lt;a href="https://github.com/KentBeck/junit/downloads"&gt;JUnit 4&lt;/a&gt;.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Structure of a parameterized test class&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To mark a test class as a parameterized test, you must first annotate it with @RunWith(Parameterized.class). The class must then provide at least three entities:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A static method that generates and returns test data,&lt;/li&gt;&lt;li&gt;A constructor that stores the test data&lt;/li&gt;&lt;li&gt;A test&lt;/li&gt;&lt;/ol&gt;The method that generates test data must be annotated with @Parameters, and it must return a Collection of Arrays.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How it's work&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Values from &amp;nbsp;static method goes in our constructor and instantiate class over and over.(Number of parameters in constructor should correspond to the number of parameters in each array)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example&lt;/b&gt;&lt;br /&gt;I this example test will check does 1 + 4 =5 and other, all data it will take from array.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;//tested class&lt;br /&gt;public class Counter {&lt;br /&gt; private double x;&lt;br /&gt; private double y;&lt;br /&gt; &lt;br /&gt; public Counter(double x, double y){&lt;br /&gt;  this.x = x;&lt;br /&gt;  this.y = y;&lt;br /&gt; }&lt;br /&gt;        public double addXandY(){&lt;br /&gt;  return x + y;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;import java.util.Arrays;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;import org.junit.runners.Parameterized;&lt;br /&gt;import org.junit.runners.Parameterized.Parameters;&lt;br /&gt;import org.junit.runner.RunWith;&lt;br /&gt;import static org.junit.Assert.*;&lt;br /&gt;&lt;br /&gt;@RunWith(Parameterized.class)&lt;br /&gt;public class ParameterizedTestExample {&lt;br /&gt;&lt;br /&gt; private double number;&lt;br /&gt; private double number2;&lt;br /&gt; private double result;&lt;br /&gt; private Counter coun;&lt;br /&gt;&lt;br /&gt;        //constructor takes parameters from array &lt;br /&gt; public ParameterizedTestExample(double number, double number2,&lt;br /&gt;   double result1) {&lt;br /&gt;  this.number = number;&lt;br /&gt;  this.number2 = number2;&lt;br /&gt;  this.result = result1;&lt;br /&gt;  coun = new Counter(number, number2);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;  //array with parameters&lt;br /&gt;  @Parameters&lt;br /&gt;  public static Collection&amp;lt;Object[]&amp;gt; data() {&lt;br /&gt;      Object[][] data = new Object[][] { { 1, 4, 5 }, { 2, 7, 9 },&lt;br /&gt;           { 3, 7, 10 }, { 4, 9, 13 } };&lt;br /&gt; return Arrays.asList(data);&lt;br /&gt; }&lt;br /&gt;   //running our test     &lt;br /&gt;   @Test&lt;br /&gt;   public void testCounter() {&lt;br /&gt; assertEquals("Result add x y", result, coun.addXandY(), 0);&lt;br /&gt;   }&lt;br /&gt;}&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/4098043777173851852-5772484790590234951?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/5772484790590234951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/java-parameterized-unit-tests-with.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/5772484790590234951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/5772484790590234951'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/java-parameterized-unit-tests-with.html' title='Java: Parameterized unit tests with JUnit'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2215840430377744106</id><published>2010-12-15T16:57:00.000+02:00</published><updated>2010-12-15T16:57:10.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android : Working with XML on Android</title><content type='html'>Recently I found great article from ibm with source code examples, &lt;a href="http://www.ibm.com/developerworks/opensource/library/x-android/"&gt;here it is&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-2215840430377744106?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2215840430377744106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/android-working-with-xml-on-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2215840430377744106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2215840430377744106'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/android-working-with-xml-on-android.html' title='Android : Working with XML on Android'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6620654387753197524</id><published>2010-12-12T17:36:00.022+02:00</published><updated>2011-08-16T23:01:28.017+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='javaee'/><title type='text'>JavaEE : Hibernate tutorial</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div align="center" class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_4hOzejeZitc/TQTuPP8CGdI/AAAAAAAABBE/tPQtI-2KLT8/s1600/hiberante.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="80" src="http://2.bp.blogspot.com/_4hOzejeZitc/TQTuPP8CGdI/AAAAAAAABBE/tPQtI-2KLT8/s320/hiberante.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;strong&gt;Why it's need?&lt;/strong&gt;&lt;br /&gt;For example you want insert something in your database.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;In sql:&lt;/em&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;PreparedStatement prep = con&lt;br /&gt;.prepareStatement("insert into weights values(?,?,?,?,?,?,?);");&lt;br /&gt;prep.setString(2, "vasea");&lt;br /&gt;prep.setString(3, "21");&lt;br /&gt;prep.setString(4, "male");&lt;br /&gt;prep.setString(5, "77");&lt;br /&gt;prep.setString(6, "185");&lt;br /&gt;prep.setString(7, "76");&lt;br /&gt;prep.execute();&lt;br /&gt;&lt;/pre&gt;&lt;em&gt;In hibernate:&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&amp;nbsp;  &lt;br /&gt;&lt;pre class="brush: java;"&gt;Factory.getInstance().getEmployeDAO().addEmployee(new Human("vasea",21,77,185,76));  &lt;br /&gt;&lt;/pre&gt;Hibernate gives you possibility to manage database abstractly, also it's useful when you want to change some logic.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hibernate Setup&lt;/b&gt;&lt;br /&gt;To use Hibernate with Eclipse you should download Hibernate libraries (hibernate-annotations-3.4.0.GA + hibernate-distribution-3.3.2.GA-dist) and export them to the project. (Download from &lt;a href="http://sourceforge.net/projects/hibernate/files/hibernate3/"&gt;official site&lt;/a&gt; or finished &lt;a href="https://docs.google.com/leaf?id=0B_fr-xSMZrJMZjNiMTA4YWQtZTM3MS00ZTkwLWFhODctNTRjNTQ2YTY4NWM1&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;my library jars&lt;/a&gt;)&lt;br /&gt;You may create your library, that contains required files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;click in Eclipse Window &amp;gt; Preferences &amp;gt; Java &amp;gt; Build Path &amp;gt; User Libraries &amp;nbsp;and click New.&lt;/li&gt;&lt;li&gt;enter name, and click Add jars..&lt;/li&gt;&lt;li&gt;&amp;nbsp;after library creation, you should include it click Project &amp;gt; Properties &amp;gt; Java Build Path &amp;gt; Add library &amp;gt; User library&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;SQL Setup&lt;/b&gt;&lt;br /&gt;You should create database, any what do you want. I use &lt;a href="http://db.apache.org/derby/"&gt;db-derby&amp;nbsp;&lt;/a&gt;. You should configure hibernate, for working with your database. For this you need database-url, password and user name. You can create database from Eclipse in Data Source Explorer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Database diagramm:&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_4hOzejeZitc/TRtRvVhk5jI/AAAAAAAABBw/GTUq29HyXq0/s1600/database_hibernate.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://4.bp.blogspot.com/_4hOzejeZitc/TRtRvVhk5jI/AAAAAAAABBw/GTUq29HyXq0/s320/database_hibernate.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;hiberante.cfg.xml&amp;nbsp;&lt;/b&gt;&lt;br /&gt;This file using to describe configuration of your database. When you work with &lt;a href="http://download.oracle.com/javase/1.5.0/docs/guide/language/annotations.html"&gt;annotations&lt;/a&gt; use &amp;lt;mapping class="entity.Human"/&amp;gt; otherwise use &amp;lt;mapping resource="entity/Human.hbm.xml"/&amp;gt;.Next i will use approach with annotations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;hiberante.cfg.xml &amp;nbsp;s&lt;/b&gt;&lt;i&gt;&lt;b&gt;ample:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version='1.0' encoding='utf-8'?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC&lt;br /&gt;"-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;br /&gt;"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;   &amp;lt;session-factory&amp;gt;&lt;br /&gt;    &amp;lt;!-- Database connection settings --&amp;gt;&lt;br /&gt;    &amp;lt;property name="connection.driver_class"&amp;gt;org.apache.derby.jdbc.ClientDriver&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name="connection.url"&amp;gt;jdbc:derby://localhost:1527/HibernateDb;create=true&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name="connection.username"&amp;gt;user&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name="connection.password"&amp;gt;password&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- JDBC connection pool (use the built-in) --&amp;gt;&lt;br /&gt;    &amp;lt;property name="connection.pool_size"&amp;gt;2&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- SQL dialect --&amp;gt;&lt;br /&gt;    &amp;lt;property name="dialect"&amp;gt;org.hibernate.dialect.DerbyDialect&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;property name="current_session_context_class"&amp;gt;thread&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Disable the second-level cache  --&amp;gt;&lt;br /&gt;    &amp;lt;property name="cache.provider_class"&amp;gt;org.hibernate.cache.NoCacheProvider&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Echo all executed SQL to stdout --&amp;gt;&lt;br /&gt;    &amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;mapping class="entity.Employer"/&amp;gt;&lt;br /&gt;    &amp;lt;mapping class="entity.Human"/&amp;gt;&lt;br /&gt;   &amp;lt;/session-factory&lt;/pre&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;/hibernate-configuration&amp;gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HibernateUtil class:&lt;/b&gt;&lt;br /&gt;Hibernate use this class &amp;nbsp;for getting data from hiberante.cfg.xml and configure hibernate&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class HibernateUtil {&lt;br /&gt;   private static final SessionFactory sessionFactory;&lt;br /&gt;     static {&lt;br /&gt;       try {  &lt;br /&gt;         sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();&lt;br /&gt;       } catch (Throwable ex) {&lt;br /&gt;         System.err.println("Initial SessionFactory creation failed." + ex);&lt;br /&gt;         throw new ExceptionInInitializerError(ex);&lt;br /&gt;       }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public static SessionFactory getSessionFactory() {&lt;br /&gt;       return sessionFactory;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Entities&lt;/b&gt;&lt;br /&gt;You should create simple &lt;a href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"&gt;&lt;code class="xml"&gt;pojo class&lt;/code&gt;es&lt;/a&gt; thats will store structure of our tables(id, name, sex and etc.)&lt;br /&gt;Also you should specify how tables are related.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Entities sample:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Entity&lt;br /&gt;@Table(name="EMPLOYEE")&lt;br /&gt;public class Employee {&lt;br /&gt; @Id&lt;br /&gt; @GeneratedValue(strategy=GenerationType.IDENTITY)&lt;br /&gt; @Column(name="employee_id")&lt;br /&gt; private int employeeId;&lt;br /&gt; &lt;br /&gt; @Column(name="salary")&lt;br /&gt; private double salary;&lt;br /&gt; &lt;br /&gt; @OneToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY)&lt;br /&gt; @PrimaryKeyJoinColumn&lt;br /&gt; private Human humData;&lt;br /&gt; &lt;br /&gt; public int getEmployeeId() {&lt;br /&gt;  return employeeId;&lt;br /&gt; }&lt;br /&gt; public void setEmployeeId(int employeeId) {&lt;br /&gt;  this.employeeId = employeeId;&lt;br /&gt; }&lt;br /&gt; public int getSalary() {&lt;br /&gt;  return salary;&lt;br /&gt; }&lt;br /&gt; public void setSalary(int salary) {&lt;br /&gt;  this.salary = salary;&lt;br /&gt; }&lt;br /&gt; public int getHumData() {&lt;br /&gt;  return humData;&lt;br /&gt; }&lt;br /&gt; public void setHumData(int humData) {&lt;br /&gt;  this.humData = humData;&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Table(name="HUMAN")&lt;br /&gt;public class Human {&lt;br /&gt; @Id&lt;br /&gt; @GeneratedValue(strategy=GenerationType.IDENTITY)&lt;br /&gt; @Column(name="human_id")&lt;br /&gt; private int humId;&lt;br /&gt; &lt;br /&gt; @Column(name="hum_name")&lt;br /&gt; private String name; &lt;br /&gt; &lt;br /&gt; public int getHumId() {&lt;br /&gt;  return humId;&lt;br /&gt; }&lt;br /&gt; public void setHumId(int humId) {&lt;br /&gt;  this.humId = humId;&lt;br /&gt; }&lt;br /&gt; public String getName() {&lt;br /&gt;  return name;&lt;br /&gt; }&lt;br /&gt; public void setName(String name) {&lt;br /&gt;  this.name = name;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;DAO:&lt;/b&gt;&lt;br /&gt;It's just simple interface with methods to interact with your table. &lt;a href="http://en.wikipedia.org/wiki/Data_access_object"&gt;Here&lt;/a&gt; is description. You should create interface for every table, but if all methods are the same you can use this &lt;a href="http://www.ibm.com/developerworks/java/library/j-genericdao.html"&gt;way&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DAO sample:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public interface HumanDAO {&lt;br /&gt; void addHuman(Human human) throws SQLException;&lt;br /&gt; void updateHuman(Human hum) throws SQLException;&lt;br /&gt; public Collection getAllHumans() throws SQLException;&lt;br /&gt; public Human getHumanById(int id) throws SQLException;&lt;br /&gt; public void deleteHuman(Human hum) throws SQLException;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;DAOImpl:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class HumanDAOImpl implements HumanDAO {&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public Human getHumanById(int id) throws SQLException {&lt;br /&gt;  Session session = null;&lt;br /&gt;  Human human = null;&lt;br /&gt;  try {&lt;br /&gt;   session = HibernateUtil.getSessionFactory().openSession();&lt;br /&gt;   human = (Human) session.load(Human.class, id);&lt;br /&gt;   Hibernate.initialize(human);&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   System.out.print("Error in getting by id");&lt;br /&gt;  } finally {&lt;br /&gt;   if (session != null &amp;amp;&amp;amp; session.isOpen()) {&lt;br /&gt;    session.close();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return human;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void addHuman(Human human) throws SQLException {&lt;br /&gt;   Session session = null;&lt;br /&gt;      try {&lt;br /&gt;        session = HibernateUtil.getSessionFactory().openSession();&lt;br /&gt;        session.beginTransaction();&lt;br /&gt;        session.save(human);&lt;br /&gt;        session.flush();&lt;br /&gt;        session.getTransaction().commit();&lt;br /&gt;      } catch (Exception e) {&lt;br /&gt;       System.out.println("Error in inserting: " + e.toString());&lt;br /&gt;      } finally {&lt;br /&gt;        if (session != null &amp;amp;&amp;amp; session.isOpen()) {&lt;br /&gt;&lt;br /&gt;          session.close();&lt;br /&gt;        }&lt;br /&gt;      }  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  //etc.))&lt;br /&gt;}&lt;/pre&gt;&lt;b&gt;Factory:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;This class need to return your dao. Also you can read &lt;a href="http://en.wikipedia.org/wiki/Factory_pattern"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class Factory {&lt;br /&gt; &lt;br /&gt;  private static EmployeeDAO employeeDAO = null;&lt;br /&gt;  private static HumanDAO humanDAO = null;&lt;br /&gt;  &lt;br /&gt;  public static synchronized Factory getInstance(){&lt;br /&gt;      if (instance == null){&lt;br /&gt;        instance = new Factory();&lt;br /&gt;      }&lt;br /&gt;      return instance;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  public EmployeeDAO getEmployee(){&lt;br /&gt;   if (employeeDAO == null){&lt;br /&gt;    employeeDAO = new EmployeeDAOImpl();&lt;br /&gt;      }&lt;br /&gt;      return employeeDAO;&lt;br /&gt;  }&lt;br /&gt;  public HumanDAO getHumanDAO(){&lt;br /&gt;   if (humanDAO == null){&lt;br /&gt;    humanDAO = new HumanDAOImpl();&lt;br /&gt;      }&lt;br /&gt;      return humanDAO;&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Main method:&lt;/b&gt;&lt;br /&gt;Finally we running our project, for this we should create our tables(with hibernate or manually).Next we adding data to our tables. We call&amp;nbsp;Factory thats return required entity and use our methods.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class Main {&lt;br /&gt; public  static void createTables(){&lt;br /&gt;  AnnotationConfiguration config = new AnnotationConfiguration();&lt;br /&gt;  config.addAnnotatedClass(Human.class);&lt;br /&gt;  config.addAnnotatedClass(Employee.class);&lt;br /&gt;  config.configure("hibernate.cfg.xml");  &lt;br /&gt;  new SchemaExport(config).create(true,true);&lt;br /&gt; }&lt;br /&gt;        public static void main(String[] args) {&lt;br /&gt;        //creating tables&lt;br /&gt;          createTables();&lt;br /&gt;          Human hum = new Human();&lt;br /&gt;          hum.setName("Vasea");&lt;br /&gt;          Employee emp = new Employee();&lt;br /&gt;          emp.setSalary(1000);&lt;br /&gt;          emp.setHumData(hum);&lt;br /&gt;         //adding data &lt;br /&gt;   try {&lt;br /&gt;         Factory.getInstance().getEmployeDAO().addEmployee(emp);  &lt;br /&gt;  } catch (SQLException e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;       }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;References&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Very&lt;b&gt; &lt;/b&gt;useful are &lt;a href="http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/"&gt;Official docs&lt;b&gt; &lt;/b&gt;&lt;/a&gt;&lt;a href="http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/"&gt;abouth annotations&lt;/a&gt;&lt;a href="http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;Video lesson on YouTube about hibernate &lt;a href="http://www.youtube.com/watch?v=GINvxAaXDbY"&gt;here&lt;/a&gt;.&lt;br /&gt;Hibernate basics (Russian lang) &lt;a href="http://habrahabr.ru/blogs/java/29694/"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Ps: This is not optimal solution, everything becomes really easy when you use Application server(Jboss, Glasfish and etc.) with some framework&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-6620654387753197524?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6620654387753197524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/javaee-hibernate-beginning.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6620654387753197524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6620654387753197524'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/javaee-hibernate-beginning.html' title='JavaEE : Hibernate tutorial'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4hOzejeZitc/TQTuPP8CGdI/AAAAAAAABBE/tPQtI-2KLT8/s72-c/hiberante.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-142095573608637743</id><published>2010-12-03T15:54:00.020+02:00</published><updated>2011-11-25T10:12:02.508+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>PHP: Working with XML</title><content type='html'>In this article I'll implement base functions to interact with XML like: loading, showing, saving, adding, deleting, editing.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;My XML document sample:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;catalog&amp;gt;&lt;br /&gt;&amp;lt;spectacle&amp;gt;&lt;br /&gt;&amp;lt;image&amp;gt;images/8780_185540_img2.jpg&amp;lt;/image&amp;gt;&lt;br /&gt;&amp;lt;date&amp;gt;16.09.10&amp;lt;/date&amp;gt;&lt;br /&gt;&amp;lt;time&amp;gt;19:00&amp;lt;/time&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Hamlet&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;author&amp;gt;W.Shakespeare&amp;lt;/author&amp;gt;&lt;br /&gt;&amp;lt;genre&amp;gt; tragedy&amp;lt;/genre&amp;gt;&lt;br /&gt;&amp;lt;/spectacle&amp;gt;&lt;br /&gt;&amp;lt;/catalog&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;HTML action :&lt;/b&gt;&lt;br /&gt;&amp;lt;form method="post" action="begin.php" name="adminForm" &amp;gt;&lt;br /&gt;&lt;br /&gt;Exists 3 methods in PHP 5 which allow us to interact with XML: DOM, Simple XML and XPath.&lt;br /&gt;&lt;br /&gt;The simplest way is to use Simple XML :). But it have and disadvantages when you need more methods to interact with XML, in this cases you may use DOM.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;When you want to get an element use:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: php;"&gt;$catalog-&amp;gt;spectacle[0]; //return sprectacle&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;i&gt;When you want to get an attribute use:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: php;"&gt;$image['att_name'];&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;i&gt;When you want to get data use:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: php;"&gt;echo ($xml-&amp;gt;catalog-&amp;gt;spectacle[0]-&amp;gt;title);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;So here is my source code:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: php;"&gt;$spectacles = Array();&lt;br /&gt;/*add to xml specified spectacle node*/&lt;br /&gt;function addToXml()&lt;br /&gt;{&lt;br /&gt;  $xml = simplexml_load_file("catalog.xml"); //This line will load the XML file. &lt;br /&gt;&lt;br /&gt;  $sxe = new SimpleXMLElement($xml-&amp;gt;asXML());  &lt;br /&gt;  //The following lines will add a new child &lt;br /&gt;  $spectacle = $sxe-&amp;gt;addChild("spectacle"); &lt;br /&gt;  $spectacle-&amp;gt;addChild("image", $_POST["image"]); &lt;br /&gt;  $spectacle-&amp;gt;addChild("date", $_POST["date"]); &lt;br /&gt;  $spectacle-&amp;gt;addChild("time", $_POST["time"]); &lt;br /&gt;  $spectacle-&amp;gt;addChild("title", $_POST["title"]); &lt;br /&gt;  $spectacle-&amp;gt;addChild("author", $_POST["author"]); &lt;br /&gt;  $spectacle-&amp;gt;addChild("genre", $_POST["genre"]);  &lt;br /&gt;  &lt;br /&gt;  //use for format output&lt;br /&gt;  $dom = new DOMDocument('1.0');&lt;br /&gt;  $dom-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;     $dom-&amp;gt;formatOutput = true;&lt;br /&gt;  $dom-&amp;gt;loadXML($sxe-&amp;gt;asXML());&lt;br /&gt;     $dom-&amp;gt;saveXML();&lt;br /&gt;  $dom-&amp;gt;save("catalog.xml");&lt;br /&gt;}&lt;br /&gt;/*loading xml to global array*/&lt;br /&gt;function loadXML()&lt;br /&gt;{ &lt;br /&gt;   global $spectacles;&lt;br /&gt;&lt;br /&gt;    $xml = simplexml_load_file("catalog.xml");&lt;br /&gt; &lt;br /&gt; foreach($xml-&amp;gt;spectacle as $spectacle)&lt;br /&gt;    {&lt;br /&gt;     array_push($spectacles, $spectacle);&lt;br /&gt;  &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;/*showing xml in table view*/&lt;br /&gt;function showXML()&lt;br /&gt;{&lt;br /&gt;   //print_r($spectacles);&lt;br /&gt;   global $spectacles;&lt;br /&gt;   echo "&amp;lt;table border='1'&amp;gt;&amp;lt;tr&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Image&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Date&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Time&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Title&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Author&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;td&amp;gt;Genre&amp;lt;/td&amp;gt;";&lt;br /&gt;   echo "&amp;lt;/tr&amp;gt;\n";&lt;br /&gt;    &lt;br /&gt; foreach ($spectacles as $spectacle) &lt;br /&gt; { &lt;br /&gt;      echo "&amp;lt;tr&amp;gt;";   &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;image."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;date."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;time."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;title."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;author."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;td&amp;gt;".$spectacle-&amp;gt;genre."&amp;lt;/td&amp;gt;"; &lt;br /&gt;      echo "&amp;lt;/tr&amp;gt;\n";&lt;br /&gt; }&lt;br /&gt; echo "&amp;lt;/table";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*delete node with specified date &amp;amp; title*/&lt;br /&gt;function deleteNodeXML()&lt;br /&gt;{&lt;br /&gt;   global $spectacles;&lt;br /&gt;   $spectacle_final = Array();&lt;br /&gt;&lt;br /&gt;   foreach($spectacles as $spectacle)&lt;br /&gt;   {&lt;br /&gt;  if($spectacle-&amp;gt;date != $_POST['date'] &amp;amp;&amp;amp; $spectacle-&amp;gt;title != $_POST['title'])&lt;br /&gt;  {&lt;br /&gt;   array_push($spectacle_final, $spectacle);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; saveDom($spectacle_final); //saving our array to xml&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*edit node with specified date &amp;amp; title*/&lt;br /&gt;function editXml()&lt;br /&gt;{&lt;br /&gt;   global $spectacles;&lt;br /&gt;   $spectacle_final = Array();&lt;br /&gt;&lt;br /&gt;   foreach($spectacles as $spectacle)&lt;br /&gt;   {&lt;br /&gt;  if($spectacle-&amp;gt;date == $_POST['date'] &amp;amp;&amp;amp; $spectacle-&amp;gt;title == $_POST['title'])&lt;br /&gt;  {&lt;br /&gt;      $spectacle-&amp;gt;image = $_POST['imageNew'];&lt;br /&gt;            $spectacle-&amp;gt;date = $_POST['dateNew'];&lt;br /&gt;   $spectacle-&amp;gt;time = $_POST['timeNew'];&lt;br /&gt;   $spectacle-&amp;gt;title = $_POST['titleNew'];&lt;br /&gt;   $spectacle-&amp;gt;author = $_POST['authorNew'];&lt;br /&gt;   $spectacle-&amp;gt;genre = $_POST['genreNew'];&lt;br /&gt;   &lt;br /&gt;   array_push($spectacle_final, $spectacle);&lt;br /&gt;  }&lt;br /&gt;  else &lt;br /&gt;  {&lt;br /&gt;   array_push($spectacle_final, $spectacle);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; saveDom($spectacle_final); //saving our array to xml&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*saving array to xml*/&lt;br /&gt;function saveDom($spectacle_final)&lt;br /&gt;{&lt;br /&gt;    $doc = new DOMDocument('1.0','UTF-8');&lt;br /&gt; $doc-&amp;gt;encoding='UTF-8';&lt;br /&gt; &lt;br /&gt; // we want a nice output&lt;br /&gt; $doc-&amp;gt;formatOutput = true;&lt;br /&gt;&lt;br /&gt; $root = $doc-&amp;gt;createElement('catalog');&lt;br /&gt; $root = $doc-&amp;gt;appendChild($root);&lt;br /&gt;&lt;br /&gt; foreach($spectacle_final as $spectacle)&lt;br /&gt; { &lt;br /&gt;  $spect = $doc-&amp;gt;createElement('spectacle');&lt;br /&gt;  $spect = $root-&amp;gt;appendChild($spect);&lt;br /&gt;&lt;br /&gt;  $imag = $doc-&amp;gt;createElement('image');&lt;br /&gt;  $imag = $spect-&amp;gt;appendChild($imag);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;image);&lt;br /&gt;  $text = $imag-&amp;gt;appendChild($text);&lt;br /&gt;  &lt;br /&gt;  $dat = $doc-&amp;gt;createElement('date');&lt;br /&gt;  $dat = $spect-&amp;gt;appendChild($dat);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;date);&lt;br /&gt;  $text = $dat-&amp;gt;appendChild($text);&lt;br /&gt;  &lt;br /&gt;  $tim = $doc-&amp;gt;createElement('time');&lt;br /&gt;  $tim = $spect-&amp;gt;appendChild($tim);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;time);&lt;br /&gt;  $text = $tim-&amp;gt;appendChild($text);&lt;br /&gt;  &lt;br /&gt;  $tit = $doc-&amp;gt;createElement('title');&lt;br /&gt;  $tit = $spect-&amp;gt;appendChild($tit);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;title);&lt;br /&gt;  $text = $tit-&amp;gt;appendChild($text);&lt;br /&gt;  &lt;br /&gt;  $aut = $doc-&amp;gt;createElement('author');&lt;br /&gt;  $aut = $spect-&amp;gt;appendChild($aut);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;author);&lt;br /&gt;  $text = $aut-&amp;gt;appendChild($text);&lt;br /&gt;  &lt;br /&gt;  $gen = $doc-&amp;gt;createElement('genre');&lt;br /&gt;  $gen = $spect-&amp;gt;appendChild($gen);  &lt;br /&gt;  $text = $doc-&amp;gt;createTextNode($spectacle-&amp;gt;genre);&lt;br /&gt;  $text = $gen-&amp;gt;appendChild($text);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;   $doc-&amp;gt;saveXML() . "\n"; &lt;br /&gt;   $doc-&amp;gt;save("catalog.xml");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;References:&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.phpbuilder.com/columns/adam_delves20060206.php3?page=1"&gt;Using XML: A PHP Developer's Primer&lt;/a&gt; &lt;br /&gt;&lt;a href="http://md.php.net/SimpleXML"&gt;Official php documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-142095573608637743?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/142095573608637743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/12/php-working-with-xml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/142095573608637743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/142095573608637743'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/12/php-working-with-xml.html' title='PHP: Working with XML'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8164006289328173184</id><published>2010-11-18T22:05:00.005+02:00</published><updated>2011-06-05T14:24:21.152+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>С++: Cube Root mistake</title><content type='html'>You may say that it is trivial task, but it have some difficulties&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;First i tried like this:&lt;br /&gt;&lt;pre class="brush: cpp;"&gt;int root(double num)&lt;br /&gt;{&lt;br /&gt;  double calc = pow(num, 1. / 3.);&lt;br /&gt;  return (int)calc;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;It's succesefylly working for 8 and 27 but with 64 will be inaccuracy in calculation. Inaccuracy appears because &lt;b&gt;pow(64, 1. / 3.)&lt;/b&gt; return 3.99999999 and after rounding to int result will be 3&lt;br /&gt;I solved problem this way:&lt;br /&gt;&lt;pre class="brush: cpp;"&gt;int root(double num)&lt;br /&gt;{&lt;br /&gt;  double calc = pow(num, 1. / 3.);&lt;br /&gt;  double calc2 = ceil(calc); //rounding&lt;br /&gt;  return (int)calc2;&lt;br /&gt;}&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/4098043777173851852-8164006289328173184?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8164006289328173184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/11/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8164006289328173184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8164006289328173184'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/11/blog-post.html' title='С++: Cube Root mistake'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-1834841794592109924</id><published>2010-11-18T18:17:00.008+02:00</published><updated>2011-03-08T15:15:32.338+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>PHP: DOMDocument and encoding</title><content type='html'>If you want to save document with not typical encoding, for example utf-8 (russian letters)&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;If you do like this:&lt;br /&gt;&lt;pre class="brush: php;"&gt;$doc = new DOMDocument('1.0','UTF-8');&lt;br /&gt;&lt;/pre&gt;It will be wrong, because php does't know what encoding will be.For normal working you should use:&lt;br /&gt;&lt;pre class="brush: php;"&gt;$doc-&amp;gt;encoding='UTF-8';&lt;br /&gt;&lt;/pre&gt;ps: Next will be &lt;a href="http://progrnotes.blogspot.com/2010/12/php-working-with-xml.html"&gt;some articles&lt;/a&gt; about working with xml in php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-1834841794592109924?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/1834841794592109924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/11/php-domdocument.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1834841794592109924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/1834841794592109924'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/11/php-domdocument.html' title='PHP: DOMDocument and encoding'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-7016426642111475844</id><published>2010-11-18T18:10:00.002+02:00</published><updated>2010-12-25T19:03:17.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop Keyboard shortcuts'/><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>Photoshop Keyboard shortcuts</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_4hOzejeZitc/TOVPqsQpueI/AAAAAAAABAU/JJgYJAsctdY/s1600/shortcuts3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" src="http://1.bp.blogspot.com/_4hOzejeZitc/TOVPqsQpueI/AAAAAAAABAU/JJgYJAsctdY/s320/shortcuts3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Recently I found cool list with photoshop shortcuts&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-7016426642111475844?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/7016426642111475844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/11/photoshop-keyboard-shortcuts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7016426642111475844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7016426642111475844'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/11/photoshop-keyboard-shortcuts.html' title='Photoshop Keyboard shortcuts'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4hOzejeZitc/TOVPqsQpueI/AAAAAAAABAU/JJgYJAsctdY/s72-c/shortcuts3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8922288574402386578</id><published>2010-10-31T10:25:00.001+02:00</published><updated>2010-12-07T18:38:08.189+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Menu button click'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Menu button click event</title><content type='html'>If you want to do smth after hardware MENU button clicks, not default menu creation but something slightly different.The easiest way is to capture the onKeyDown event for the menu button click&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt; @Override&lt;br /&gt; public boolean onKeyDown(int keycode, KeyEvent event ) {&lt;br /&gt;  if(keycode == KeyEvent.KEYCODE_MENU){&lt;br /&gt;   AlertDialog.Builder dialogBuilder &lt;br /&gt;   = new AlertDialog.Builder(this)&lt;br /&gt;   .setMessage("Test")&lt;br /&gt;   .setTitle("Menu dialog");&lt;br /&gt;   dialogBuilder.create().show();&lt;br /&gt;  }&lt;br /&gt;  return super.onKeyDown(keycode,event);  &lt;br /&gt; }&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/4098043777173851852-8922288574402386578?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8922288574402386578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-menu-button-click-event.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8922288574402386578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8922288574402386578'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-menu-button-click-event.html' title='Android: Menu button click event'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8894419120887782352</id><published>2010-10-17T11:44:00.011+03:00</published><updated>2010-12-07T21:59:28.962+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='button'/><title type='text'>Android: Center position of the button (fill_parent, wrap_content)</title><content type='html'>&lt;pre class="brush: xml;"&gt;&amp;lt;Button android:id="@+id/btClick" android:gravity="center_vertical|center_horizontal"&lt;br /&gt;android:layout_gravity="center_vertical|center_horizontal|center" &lt;br /&gt;android:layout_height="wrap_content" &lt;br /&gt;android:layout_width="100px" &lt;br /&gt;android:text=""/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;android:layout_width="fill_parent" - object have width like parent&lt;br /&gt;android:layout_height="wrap_content" - parent height wants to be just big enough to enclose its content&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-8894419120887782352?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8894419120887782352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8894419120887782352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8894419120887782352'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android.html' title='Android: Center position of the button (fill_parent, wrap_content)'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-3545954372492343806</id><published>2010-10-07T11:34:00.006+03:00</published><updated>2010-12-07T18:39:58.863+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Change progress in progress dialog'/><category scheme='http://www.blogger.com/atom/ns#' term='dialog'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Andoid: Change progress in progress dialog from the different thread</title><content type='html'>We should use Handler that allows you to send message to the thread&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;&amp;nbsp; private int increment;&lt;br /&gt;  private ProgressDialog m_ProgressDialog; &lt;br /&gt;  public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   Runnable viewImages = new Runnable(){&lt;br /&gt;&amp;nbsp;   @Override&lt;br /&gt;&amp;nbsp;     public void run() {&lt;br /&gt;&amp;nbsp;       getImages();&lt;br /&gt;&amp;nbsp;     }&lt;br /&gt;&amp;nbsp;   };&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; m_ProgressDialog = new ProgressDialog(this);&lt;br /&gt;&amp;nbsp;   m_ProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);&lt;br /&gt;&amp;nbsp; &amp;nbsp; m_ProgressDialog.setMessage("Loading...");&lt;br /&gt;&amp;nbsp;   m_ProgressDialog.show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Thread thread =  new Thread(null, viewImages, "MagentoBackground");&lt;br /&gt;&amp;nbsp;  thread.start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; //obtain message from thred&lt;br /&gt;&amp;nbsp; Handler progressHandler = new Handler() {&lt;br /&gt;&amp;nbsp;     public void handleMessage(Message msg) {&lt;br /&gt;&amp;nbsp;        &amp;nbsp; m_ProgressDialog.incrementProgressBy(increment);&lt;br /&gt;&amp;nbsp;     }&lt;br /&gt;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp; private void getImages(){&lt;br /&gt;&amp;nbsp;   try{&lt;br /&gt;&amp;nbsp; &amp;nbsp; //do smth, load image for example, in may be cycle&lt;br /&gt;&amp;nbsp;   increment = 100/ images.size();&lt;br /&gt;&amp;nbsp; &amp;nbsp; progressHandler.sendMessage(progressHandler.obtainMessage()); &amp;nbsp;//send message&lt;br /&gt;&amp;nbsp;   Thread.sleep(2000);&lt;br /&gt;&amp;nbsp;   } catch (Exception e) {&lt;br /&gt;&amp;nbsp;        Log.e("BACKGROUND_PROC", e.getMessage());&lt;br /&gt;&amp;nbsp;   }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-3545954372492343806?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/3545954372492343806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/andoid-change-progress-in-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3545954372492343806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/3545954372492343806'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/andoid-change-progress-in-progress.html' title='Andoid: Change progress in progress dialog from the different thread'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2971515383363173567</id><published>2010-10-05T20:52:00.004+03:00</published><updated>2012-01-08T16:04:36.410+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='context menu'/><category scheme='http://www.blogger.com/atom/ns#' term='меню'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Context menu in ListView after clicking</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_4hOzejeZitc/TKtnVDVm8MI/AAAAAAAAA_g/Gna57YziNdI/s1600/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_4hOzejeZitc/TKtnVDVm8MI/AAAAAAAAA_g/Gna57YziNdI/s320/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF" width="213" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;The easiest way) to create context menu&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt;Firs of all you should create ListView maybe with some adapter, so main class should extends ListActivity&lt;br /&gt;&lt;b&gt;2)&lt;/b&gt; To register our menu, use: &amp;nbsp; &lt;br /&gt;&lt;pre class="brush: java;"&gt;registerForContextMenu(getListView());&lt;/pre&gt;&lt;b&gt;3)&lt;/b&gt; Then override &lt;br /&gt;&lt;pre class="brush: java;"&gt;final int CONTEXT_MENU_DELETE_ITEM =1;&lt;br /&gt; final int CONTEXT_MENU_UPDATE =2;&lt;br /&gt; @Override&lt;br /&gt; public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {&lt;br /&gt;          &lt;br /&gt;  menu.add(Menu.NONE, CONTEXT_MENU_DELETE_ITEM, Menu.NONE, "Delete");&lt;br /&gt;  menu.add(Menu.NONE, CONTEXT_MENU_UPDATE, Menu.NONE, "update");&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;4)&lt;/b&gt;Now we should handle click events of our context menu&lt;br /&gt;&lt;pre class="brush: java;"&gt;@Override&lt;br /&gt; public boolean onContextItemSelected(MenuItem item) {&lt;br /&gt;&lt;br /&gt;      AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();&lt;br /&gt;      Long id = getListAdapter().getItemId(info.position);/*what item was selected is ListView*/&lt;br /&gt;&lt;br /&gt;      switch (item.getItemId()) {&lt;br /&gt;              case CONTEXT_MENU_DELETE_ITEM:&lt;br /&gt;                    //do smth&lt;br /&gt;                   return(true);&lt;br /&gt;             case CONTEXT_MENU_UPDATE:&lt;br /&gt;                   //do smth else)&lt;br /&gt;                   return(true);    &lt;br /&gt;      }&lt;br /&gt;  return(super.onOptionsItemSelected(item));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ps: I found one disadvantage of this method, you can't use icons in this context menu&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-2971515383363173567?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2971515383363173567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-context-menu-in-listview-after.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2971515383363173567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2971515383363173567'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-context-menu-in-listview-after.html' title='Android: Context menu in ListView after clicking'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4hOzejeZitc/TKtnVDVm8MI/AAAAAAAAA_g/Gna57YziNdI/s72-c/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-7627018937077683719</id><published>2010-10-04T23:23:00.001+03:00</published><updated>2010-10-04T23:24:30.121+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='Native icons how to use'/><title type='text'>Android: Native icons how to use</title><content type='html'>&amp;nbsp;In your android phone are many beautiful icons.Here is the list:&lt;a href="http://developer.android.com/reference/android/R.drawable.html"&gt;http://developer.android.com/reference/android/R.drawable.html&lt;/a&gt; and here is images &lt;a href="http://androiddrawableexplorer.appspot.com/"&gt;http://androiddrawableexplorer.appspot.com/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;To use:&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;in recourses &amp;nbsp;android:icon="@android:drawable/&amp;lt;name of your element&amp;gt;"&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; in java code android.R.drawable.&amp;lt;name of your element&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-7627018937077683719?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/7627018937077683719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-native-icons-how-to-use.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7627018937077683719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7627018937077683719'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-native-icons-how-to-use.html' title='Android: Native icons how to use'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-8206250481114330613</id><published>2010-10-04T23:06:00.001+03:00</published><updated>2011-02-18T17:47:22.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unparsed aapt error'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Unparsed aapt error</title><content type='html'>This error appears when you change smth in xml and it changes in recourses not correctly( may be it's bug)&lt;br /&gt;&lt;strong&gt;Solution:&amp;nbsp;&lt;/strong&gt;go in Eclipse to Project&amp;gt;clean it will load last successful build, Good Luck!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-8206250481114330613?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/8206250481114330613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-unparsed-aapt-error.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8206250481114330613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/8206250481114330613'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-unparsed-aapt-error.html' title='Android: Unparsed aapt error'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-6141633819507504247</id><published>2010-10-02T13:24:00.006+03:00</published><updated>2010-12-07T18:43:29.183+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='menuбменю'/><category scheme='http://www.blogger.com/atom/ns#' term='Menu button click'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Menu button click event &amp; Options Menu</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_4hOzejeZitc/TKcJVzD7eoI/AAAAAAAAA_c/3RE2nF3IRl4/s1600/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_4hOzejeZitc/TKcJVzD7eoI/AAAAAAAAA_c/3RE2nF3IRl4/s320/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF" width="212" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;1)First of all we should create our menu.xml(create new folder menu in res):&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;&lt;br /&gt;&amp;lt;item android:id="@+id/search"&lt;br /&gt;android:title="search"&lt;br /&gt;android:icon="@drawable/icon" /&amp;gt;&lt;br /&gt;&amp;lt;item android:id="@+id/deleteall"&lt;br /&gt;android:title="delete all"&lt;br /&gt;android:icon="@drawable/icon" /&amp;gt;&lt;br /&gt;&amp;lt;/menu&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) To handle event we need override:&lt;br /&gt;&lt;pre class="brush: java;"&gt;    @Override&lt;br /&gt;    public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;        MenuInflater inflater = getMenuInflater();&lt;br /&gt;        inflater.inflate(R.menu.menu, menu);&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3)And for determine what button is pressed:&lt;br /&gt;&lt;pre class="brush: java;"&gt; @Override&lt;br /&gt;    public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;        switch (item.getItemId()) {&lt;br /&gt;            case R.id.deleteall:Log.v("ttt", "You pressed the icon!");&lt;br /&gt;                  break;&lt;br /&gt;            case R.id.search:Log.v("ttt", "You pressed the text!");&lt;br /&gt;                  break;&lt;br /&gt;        }&lt;br /&gt;        return true;&lt;br /&gt;    }&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/4098043777173851852-6141633819507504247?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/6141633819507504247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-menu-button-click-event-options.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6141633819507504247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/6141633819507504247'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/10/android-menu-button-click-event-options.html' title='Android: Menu button click event &amp; Options Menu'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4hOzejeZitc/TKcJVzD7eoI/AAAAAAAAA_c/3RE2nF3IRl4/s72-c/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-2864699029958909865</id><published>2010-09-30T18:54:00.021+03:00</published><updated>2010-12-24T11:05:34.221+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Скачивание картинки по URL'/><category scheme='http://www.blogger.com/atom/ns#' term='downloading imageandroid'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android:The easiest way to load image from URL</title><content type='html'>The easiest way to download image from URL is to use &lt;code class="java"&gt;method Drawable.createFromStream&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;main.xml:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;linearlayout android:id="@+id/LinearLayout01"&amp;nbsp;&lt;br /&gt;android:layout_height="fill_parent"&amp;nbsp;&lt;br /&gt;android:layout_width="fill_parent"&amp;nbsp;&lt;br /&gt;xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;&lt;br /&gt;&amp;lt;imageview android:id="@+id/ImageView1"&amp;nbsp;&lt;br /&gt;android:layout_height="wrap_content"&amp;nbsp;&lt;br /&gt;android:layout_width="wrap_content"&amp;gt;&lt;br /&gt;&amp;lt;/imageview&amp;gt;&amp;lt;/linearlayout&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Java file:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;import java.io.InputStream;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.graphics.drawable.Drawable;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.ImageView;&lt;br /&gt;&lt;br /&gt;public class ImageFromUrlExample extends Activity {&lt;br /&gt;    /** Called when the activity is first created. */&lt;br /&gt;    @Override&lt;br /&gt;    public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;        super.onCreate(savedInstanceState);&lt;br /&gt;        setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;        ImageView imgView =(ImageView)findViewById(R.id.ImageView1);&lt;br /&gt;        Drawable drawable = LoadImageFromWeb("http://www.example.com/android.png");&lt;br /&gt;        imgView.setImageDrawable(drawable);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   private Drawable LoadImageFromWeb(String url)&lt;br /&gt;   {&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;   InputStream is = (InputStream) new URL(url).getContent();&lt;br /&gt;   Drawable d = Drawable.createFromStream(is, "src name");&lt;br /&gt;   return d;&lt;br /&gt;  }catch (Exception e) {&lt;br /&gt;   System.out.println("Exc="+e);&lt;br /&gt;   return null;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&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/4098043777173851852-2864699029958909865?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/2864699029958909865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/09/url.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2864699029958909865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/2864699029958909865'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/09/url.html' title='Android:The easiest way to load image from URL'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-7645605596216136869</id><published>2010-09-30T12:06:00.017+03:00</published><updated>2011-09-22T15:34:13.621+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='downloading progress android'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Download progress</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_4hOzejeZitc/TKRd2yftLJI/AAAAAAAAA_I/1nhw4ff3uCc/s1600/loading.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_4hOzejeZitc/TKRd2yftLJI/AAAAAAAAA_I/1nhw4ff3uCc/s320/loading.GIF" width="210" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;How to create progress of file downloading&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The main idea is that we need to download our file by parts , in our case part = 1 kb&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java;"&gt;public class DownloadImageTask extends AsyncTask&lt;string, drawable="" integer,=""&gt;&amp;lt;String, Integer, Drawable&amp;gt; {&lt;br /&gt;&lt;br /&gt;  private Drawable d; &lt;br /&gt;     private HttpURLConnection conn;&lt;br /&gt;     private InputStream stream; //to read &lt;br /&gt;     private ByteArrayOutputStream out; //to write&lt;br /&gt;     &lt;br /&gt;     private double fileSize;&lt;br /&gt;     private double downloaded; // number of bytes downloaded&lt;br /&gt;     private int status = DOWNLOADING; //status of current process&lt;br /&gt;     &lt;br /&gt;     private ProgressDialog progressDialog;     &lt;br /&gt;&lt;br /&gt;     private static final int MAX_BUFFER_SIZE = 1024; //1kb&lt;br /&gt;     public static final int DOWNLOADING = 0;&lt;br /&gt;     public static final int COMPLETE = 1;&lt;br /&gt;     &lt;br /&gt;     public  DownloadImageTask(){&lt;br /&gt;      d = null;&lt;br /&gt;      conn = null;&lt;br /&gt;      fileSize = 0;&lt;br /&gt;      downloaded = 0;&lt;br /&gt;      status = DOWNLOADING;&lt;br /&gt;     }&lt;br /&gt;   public boolean isOnline() {&lt;br /&gt;   try {&lt;br /&gt;    ConnectivityManager cm = (ConnectivityManager) &lt;br /&gt;             getSystemService(Context.CONNECTIVITY_SERVICE);&lt;br /&gt;    return cm.getActiveNetworkInfo().isConnectedOrConnecting();&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;    return false;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;   @Override&lt;br /&gt;  protected Drawable doInBackground(String... url) {&lt;br /&gt;&lt;br /&gt;   try {&lt;br /&gt;    if (isOnline() == true) {&lt;br /&gt;&lt;br /&gt;     Log.v("Test", "Starting loading image by URL: ");&lt;br /&gt;     conn = (HttpURLConnection) new URL(url[0]).openConnection();&lt;br /&gt;     fileSize = conn.getContentLength();&lt;br /&gt;     out = new ByteArrayOutputStream((int) fileSize);&lt;br /&gt;     conn.connect();&lt;br /&gt;&lt;br /&gt;     stream = conn.getInputStream();&lt;br /&gt;     // loop with step 1kb&lt;br /&gt;     while (status == DOWNLOADING) {&lt;br /&gt;      byte buffer[];&lt;br /&gt;&lt;br /&gt;      if (fileSize - downloaded &amp;gt; MAX_BUFFER_SIZE) {&lt;br /&gt;       buffer = new byte[MAX_BUFFER_SIZE];&lt;br /&gt;      } else {&lt;br /&gt;       buffer = new byte[(int) (fileSize - downloaded)];&lt;br /&gt;      }&lt;br /&gt;      int read = stream.read(buffer);&lt;br /&gt;&lt;br /&gt;      if (read == -1) {&lt;br /&gt;       publishProgress(100);&lt;br /&gt;       break;&lt;br /&gt;      }&lt;br /&gt;      // writing to buffer&lt;br /&gt;      out.write(buffer, 0, read);&lt;br /&gt;      downloaded += read;&lt;br /&gt;      // update progress bar&lt;br /&gt;      publishProgress((int) ((downloaded / fileSize) * 100));&lt;br /&gt;     }// end of while&lt;br /&gt;&lt;br /&gt;     if (status == DOWNLOADING) {&lt;br /&gt;      status = COMPLETE;&lt;br /&gt;     }&lt;br /&gt;     d = Drawable.createFromStream(&lt;br /&gt;       (InputStream) new ByteArrayInputStream(out&lt;br /&gt;         .toByteArray()), "filename");&lt;br /&gt;     return d;&lt;br /&gt;&lt;br /&gt;    }// end of if isOnline&lt;br /&gt;    else {&lt;br /&gt;     return null;&lt;br /&gt;    }&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;    System.out.println("Exception: " + e);&lt;br /&gt;    return null;&lt;br /&gt;   }// end of catch&lt;br /&gt;  }// end of class DownloadImageTask()&lt;br /&gt;   &lt;br /&gt;  @Override&lt;br /&gt;  protected void onProgressUpdate(Integer... changed) {&lt;br /&gt;   progressDialog.setProgress(changed[0]);&lt;br /&gt;     }&lt;br /&gt;  &lt;br /&gt;  @Override&lt;br /&gt;  protected void onPreExecute() {&lt;br /&gt;   progressDialog = new ProgressDialog(ImageViewer.this);&lt;br /&gt;   progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);&lt;br /&gt;   progressDialog.setMessage("Loading...");&lt;br /&gt;   progressDialog.setCancelable(false);&lt;br /&gt;   progressDialog.show();&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  @Override&lt;br /&gt;  protected void onPostExecute(Drawable result) {&lt;br /&gt;   if(result != null){&lt;br /&gt;   progressDialog.dismiss();&lt;br /&gt;   setImage(d);&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;    progressDialog.dismiss();&lt;br /&gt;    AlertDialog alertDialog;&lt;br /&gt;    alertDialog = new AlertDialog.Builder(ImageViewer.this).create();&lt;br /&gt;    alertDialog.setTitle(R.string.infoLabel);&lt;br /&gt;    alertDialog.setMessage(getString(R.string.loadErrorLabel));&lt;br /&gt;    alertDialog.setButton(getString(R.string.closeLabel),&lt;br /&gt;      new DialogInterface.OnClickListener() {&lt;br /&gt;       public void onClick(DialogInterface dlg, int sum) {&lt;br /&gt;        // do nothing, close&lt;br /&gt;       }&lt;br /&gt;      });&lt;br /&gt;    alertDialog.show();&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }//end of class DownloadImageTask()&lt;/string,&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/4098043777173851852-7645605596216136869?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/7645605596216136869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/09/c-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7645605596216136869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/7645605596216136869'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/09/c-android.html' title='Android: Download progress'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4hOzejeZitc/TKRd2yftLJI/AAAAAAAAA_I/1nhw4ff3uCc/s72-c/loading.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4098043777173851852.post-4130738281465327968</id><published>2010-09-29T12:00:00.004+03:00</published><updated>2011-02-16T12:13:53.339+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beginning'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android: Beginning</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-x1XVGjfYZ1E/TVui5HfXvzI/AAAAAAAABC8/ZZpKr1UvNYs/s1600/android_icon_256-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-x1XVGjfYZ1E/TVui5HfXvzI/AAAAAAAABC8/ZZpKr1UvNYs/s200/android_icon_256-1.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here are a few steps to begin develop for Android:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Install &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html"&gt;JDK&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliosr"&gt;Eclipse IDE&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://developer.android.com/sdk/index.html"&gt;Android SDK&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Instal &lt;a href="http://developer.android.com/sdk/eclipse-adt.html"&gt;&amp;nbsp;Eclipse Android plugin&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;How to do all steps more detailed &lt;a href="http://itblog.name/archives/678"&gt;here&amp;nbsp;&lt;/a&gt;(Russian lang)&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4098043777173851852-4130738281465327968?l=progrnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progrnotes.blogspot.com/feeds/4130738281465327968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://progrnotes.blogspot.com/2010/09/test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4130738281465327968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4098043777173851852/posts/default/4130738281465327968'/><link rel='alternate' type='text/html' href='http://progrnotes.blogspot.com/2010/09/test.html' title='Android: Beginning'/><author><name>Sergey</name><uri>http://www.blogger.com/profile/00026065169994713988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-x1XVGjfYZ1E/TVui5HfXvzI/AAAAAAAABC8/ZZpKr1UvNYs/s72-c/android_icon_256-1.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
