<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkICQng8fSp7ImA9WhRXEkw.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102</id><updated>2011-12-18T16:16:03.675+04:00</updated><category term="jboss" /><category term="facebook" /><category term="web services" /><category term="java" /><category term="spring" /><category term="mac" /><category term="development" /><title>The Laboratory</title><subtitle type="html">Konstantin Pavlov's Blog</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://maestro-lab.blogspot.com/" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/RLiiv" /><feedburner:info uri="blogspot/rliiv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUMMRXY7fyp7ImA9Wx9bFkk.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-1907640188401535282</id><published>2011-02-25T17:18:00.000+03:00</published><updated>2011-02-25T17:18:04.807+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-25T17:18:04.807+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><title>Connecting to Facebook Chat</title><content type="html">Some time ago, &lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt; has provided a public XMPP service. It makes possible to connect to Facebook chat server via any XMPP client (e.g. &lt;a href="http://www.pidgin.im"&gt;Pidgin&lt;/a&gt; or &lt;a href="http://adium.im"&gt;Adium&lt;/a&gt;) and send messages to your Facebook contacts.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://www.barbariangroup.com/assets/users/rick/images/0000/4782/Adium_Account.png"/&gt;&lt;br /&gt;
&lt;a href="http://adium.im"&gt;Adium&lt;/a&gt; already has a built-in support for Facebook Chat. You may add Facebook Chat to &lt;a href="http://www.pidgin.im"&gt;Pidgin&lt;/a&gt; as generic XMPP service.&lt;br /&gt;
&lt;br /&gt;
To configure your jabber client use the following &lt;a href="http://www.facebook.com/help/?page=824#!/help/?faq=16739"&gt;recommended settings&lt;/a&gt;:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Protocol: XMPP or Jabber&lt;br /&gt;
Username: &lt;your Facebook username&gt;&lt;br /&gt;
Domain: chat.facebook.com&lt;br /&gt;
Jabber ID: &lt;your Facebook username&gt;@chat.facebook.com&lt;br /&gt;
Password: &lt;your Facebook password&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Enter the following server info, as requested:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Port: 5222&lt;br /&gt;
Server: chat.facebook.com&lt;br /&gt;
Use SSL/TLS: no&lt;br /&gt;
Allow Plaintext Authentication: no&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
When you connect to Facebook account you'll see your Facebook friend groups in roster. &lt;br /&gt;
Friend groups (friend lists) can be edited only from Facebook site, not from the XMPP client.&lt;br /&gt;
Only your confirmed friends can contact you through Facebook Chat.&lt;br /&gt;
&lt;br /&gt;
Currently, Facebook Chat does not support SSL and message encryption, but supports secured authentication using MD5.&lt;br /&gt;
&lt;br /&gt;
For information about integraitng with Facebook Chat see &lt;a href="http://developers.facebook.com/docs/chat/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-1907640188401535282?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DJ5oD_GzudRCSXhyns8lIN2P8rw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DJ5oD_GzudRCSXhyns8lIN2P8rw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DJ5oD_GzudRCSXhyns8lIN2P8rw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DJ5oD_GzudRCSXhyns8lIN2P8rw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/37r-9S682T0" height="1" width="1"/&gt;</content><link rel="related" href="http://www.facebook.com/help/?page=824" title="Connecting to Facebook Chat" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/1907640188401535282?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/1907640188401535282?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/37r-9S682T0/connecting-to-facebook-chat.html" title="Connecting to Facebook Chat" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><feedburner:origLink>http://maestro-lab.blogspot.com/2010/04/connecting-to-facebook-chat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkANRH44eCp7ImA9Wx5aGUo.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-6579257038111366576</id><published>2010-11-17T10:26:00.000+03:00</published><updated>2010-11-17T10:26:35.030+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-17T10:26:35.030+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title>Installing GWT Development Plugin in FF3.6 on OpenSuse 11.2x64</title><content type="html">&lt;pre&gt;Compiling the plugin works for me on Arch Linux x86_64 or OpenSuse 11.2 x86_64 &amp;amp; FF36:

"
mkdir gwt-source
cd gwt-source
svn checkout &lt;a href="http://google-web-toolkit.googlecode.com/svn/trunk/"&gt;http://google-web-toolkit.googlecode.com/svn/trunk/&lt;/a&gt; trunk
svn checkout &lt;a href="http://google-web-toolkit.googlecode.com/svn/plugin-sdks/"&gt;http://google-web-toolkit.googlecode.com/svn/plugin-sdks/&lt;/a&gt; plugin-sdks
cd trunk/plugins/xpcom
export BROWSER=ff36
export DEFAULT_FIREFOX_LIBS=/usr/lib/xulrunner-devel-1.9.2/sdk/lib/
make clean
make
"

This shoulds create "gwt-dev-plugin.xpi" in prebuild directory, open it with FF and
may the force be with you.

&lt;/pre&gt;&lt;br /&gt;
Update: This reciept also works under Ubuntu 10.10 32bit (you don't need to export DEFAULT_FIREFOX_LIBS)&lt;br /&gt;
&lt;br /&gt;
See original comment:&lt;br /&gt;
&lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=4141#c16"&gt;Issue 4141 - google-web-toolkit - Various compatibility problems with OOPHM Firefox plugin on Linux distros - Project Hosting on Google Code&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-6579257038111366576?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eelacqKryiauNl72LvamScR5L-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eelacqKryiauNl72LvamScR5L-E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eelacqKryiauNl72LvamScR5L-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eelacqKryiauNl72LvamScR5L-E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/4K_b9g1t-w4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6579257038111366576?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6579257038111366576?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/4K_b9g1t-w4/installing-gwt-development-plugin-in.html" title="Installing GWT Development Plugin in FF3.6 on OpenSuse 11.2x64" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><feedburner:origLink>http://maestro-lab.blogspot.com/2010/03/installing-gwt-development-plugin-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHRHo7cCp7ImA9Wx5WGEk.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-2950552910562233708</id><published>2010-09-30T13:47:00.000+04:00</published><updated>2010-09-30T13:47:15.408+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-30T13:47:15.408+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><title>How to Set JSON Response Data Locale for Facebook Graph API</title><content type="html">To make Facebook server return JSON responses in specified locale, you need to add parameter &lt;i&gt;locale&lt;/i&gt; to the query, e.g.: https://graph.facebook.com/me?access_token=xxx&amp;&lt;b&gt;locale=en_US&lt;/b&gt;&lt;br /&gt;
The result is:&lt;br /&gt;
&lt;code&gt;{&lt;br /&gt;
...&lt;br /&gt;
   "gender": "male",&lt;br /&gt;
   "meeting_for": [&lt;br /&gt;
      "Friendship"&lt;br /&gt;
   ],&lt;br /&gt;
   "relationship_status": "Married",&lt;br /&gt;
...&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
If you want to get results in russian, then add &lt;b&gt;locale=ru_RU&lt;/b&gt; to query:&lt;br /&gt;
https://graph.facebook.com/me?access_token=xxx&amp;&lt;b&gt;locale=ru_RU&lt;/b&gt;&lt;br /&gt;
and you'll get result in russian (UTF-encoded):&lt;br /&gt;
&lt;code&gt;{&lt;br /&gt;
...&lt;br /&gt;
   "gender": &lt;b&gt;"\u043c\u0443\u0436\u0441\u043a\u043e\u0439"&lt;/b&gt;,&lt;br /&gt;
   "meeting_for": [&lt;br /&gt;
      &lt;b&gt;"\u0414\u0440\u0443\u0436\u0431\u0430"&lt;/b&gt;&lt;br /&gt;
   ],&lt;br /&gt;
   "relationship_status": &lt;b&gt;"\u0416\u0435\u043d\u0430\u0442/\u0437\u0430\u043c\u0443\u0436\u0435\u043c"&lt;/b&gt;,&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-2950552910562233708?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SIQibAYOcgHH8XjnETEXKuNmgHo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SIQibAYOcgHH8XjnETEXKuNmgHo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SIQibAYOcgHH8XjnETEXKuNmgHo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SIQibAYOcgHH8XjnETEXKuNmgHo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/psHoYH7PlSg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2950552910562233708?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2950552910562233708?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/psHoYH7PlSg/how-to-set-json-response-data-locale.html" title="How to Set JSON Response Data Locale for Facebook Graph API" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><feedburner:origLink>http://maestro-lab.blogspot.com/2010/09/how-to-set-json-response-data-locale.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4BSHY-fCp7ImA9WxFaF0U.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-7435049175624330150</id><published>2010-06-30T16:16:00.004+04:00</published><updated>2010-07-22T12:22:39.854+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-22T12:22:39.854+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><title>Upgrading to Spring 3: "Unable to locate Spring NamespaceHandler" in JAR file built by Maven</title><content type="html">After upgrading to Spring 3 your may discover that your application packaged in JAR archive does not start any more throwing an exception like this:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;"Unable to locate Spring NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/tx]"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This  happens when you include multiple Spring module dependencies in your pom.xml file and use Maven Shade or Assembly plugin to build a single JAR.&lt;br /&gt;
Since Spring can does not contain a single distribution jar (org.springframework:spring:jar), Spring namespace handlers, schema mappings and tooling information files are now present in multiple files with names:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;META-INF/spring.handlers&lt;/li&gt;
&lt;li&gt;META-INF/spring.schemas&lt;/li&gt;
&lt;li&gt;META-INF/spring.tooling&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
In order to make it work in a single shaded JAR you need to merge contents of these files from different jars and place merged files into new JAR.&lt;br /&gt;
&lt;br /&gt;
Hopefully, there is a configuration options in Maven Shade plugin to achieve this:&lt;br /&gt;
&lt;code&gt;...&lt;br /&gt;
&amp;lt;build&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;plugins&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;plugin&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactid&amp;gt;maven-shade-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;1.3.3&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;executions&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;execution&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;goals&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;goal&amp;gt;shade&amp;lt;/goal&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/goals&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;configuration&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformers&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"&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;mainclass&amp;gt;com.example.Runner&amp;lt;/mainclass&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/transformer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"&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;resource&amp;gt;META-INF/spring.handlers&amp;lt;/resource&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/transformer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"&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;resource&amp;gt;META-INF/spring.schemas&amp;lt;/resource&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/transformer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"&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;resource&amp;gt;META-INF/spring.tooling&amp;lt;/resource&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/transformer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/transformers&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/execution&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/executions&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/plugin&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;....&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/plugins&amp;gt;&lt;br /&gt;
&amp;lt;/build&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-7435049175624330150?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qJAu89ntI9J982X8ZC57ZA22dpE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qJAu89ntI9J982X8ZC57ZA22dpE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qJAu89ntI9J982X8ZC57ZA22dpE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qJAu89ntI9J982X8ZC57ZA22dpE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/0jZH_yEWkJQ" height="1" width="1"/&gt;</content><link rel="related" href="http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html" title="Upgrading to Spring 3: &quot;Unable to locate Spring NamespaceHandler&quot; in JAR file built by Maven" /><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/7435049175624330150/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2010/06/upgrading-to-spring-3-unable-to-locate.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/7435049175624330150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/7435049175624330150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/0jZH_yEWkJQ/upgrading-to-spring-3-unable-to-locate.html" title="Upgrading to Spring 3: &quot;Unable to locate Spring NamespaceHandler&quot; in JAR file built by Maven" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>2</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2010/06/upgrading-to-spring-3-unable-to-locate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UBQ3o-eCp7ImA9WxFUGEQ.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-5471409859929059008</id><published>2009-11-19T13:04:00.003+03:00</published><updated>2010-06-30T16:00:52.450+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-30T16:00:52.450+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><title>Mac OS X Applications for Everyday. Keyboard Layout Switchers.</title><content type="html">&lt;img src="http://soft.yandex.ru/i/bigpromo/punto_logo_small.png" alt=""/&gt;&lt;br /&gt;
After two years of Mac user experience, I'd like list the applications I use everyday.&lt;br /&gt;
&lt;br /&gt;
I am Russian, so I need a to write the texts in other encoding than ISO. Under windows, there is nice tool called &lt;a href="http://punto.yandex.ru/"&gt;Punto Switcher&lt;/a&gt;. For long time there was no such tool for mac, except &lt;a href="http://www.macfiles.ru/utilites/226-ruswitcher.html"&gt;RuSwitcher&lt;/a&gt; by Alexey Proskuryakov. RuSwitcher &lt;a href="http://deepapple.com/forum/index.php?topic=15249.0"&gt;works only on Tiger and does not work under Leopard&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Hopefully, guys from Yandex has ported &lt;a href="http://punto.yandex.ru/mac/"&gt;PuntoSwitcher to Mac&amp;nbsp;OS&amp;nbsp;X&lt;/a&gt; (Leopard &amp; Snow Leopard). It is still a beta but I have no problems using it.&lt;br /&gt;
&lt;br /&gt;
Some of the Punto Switcher's features are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Switching keyboard layout automatically or with a hot key.&lt;/li&gt;
&lt;li&gt;Fix incorrect layout for selected text.&lt;/li&gt;
&lt;li&gt;Mac and Windows layout support.&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/4460194782217289102-5471409859929059008?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Jn3w1UKTdL89TmJ4In7HyZw08U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Jn3w1UKTdL89TmJ4In7HyZw08U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7Jn3w1UKTdL89TmJ4In7HyZw08U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Jn3w1UKTdL89TmJ4In7HyZw08U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/2IAL01SouDg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/5471409859929059008?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/5471409859929059008?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/2IAL01SouDg/mac-os-x-applications-for-everyday.html" title="Mac OS X Applications for Everyday. Keyboard Layout Switchers." /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><feedburner:origLink>http://maestro-lab.blogspot.com/2009/11/mac-os-x-applications-for-everyday.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04BSHY9cSp7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-6872736279083685226</id><published>2009-01-30T13:56:00.007+03:00</published><updated>2009-01-30T15:52:39.869+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T15:52:39.869+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><category scheme="http://www.blogger.com/atom/ns#" term="jboss" /><title>How to Lookup JBoss MBean Server from Spring (JMX)</title><content type="html">If you having problems accessing "mbeanServer" Spring-managed bean under JBoss Application server, try replacing following declaration in spring's application context configuration:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;context:mbean-server/&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;with following one:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;bean id="mbeanServer" class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;See also:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://static.springframework.org/spring/docs/2.5.x/reference/jmx.html"&gt;Spring JMX Support Reference&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://forum.springframework.org/archive/index.php/t-20760.html"&gt;Trouble with Spring JMX with JBoss 4.0.3&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-6872736279083685226?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7p6A84vh0PYU8fhdcC0F9MWLK6E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7p6A84vh0PYU8fhdcC0F9MWLK6E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7p6A84vh0PYU8fhdcC0F9MWLK6E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7p6A84vh0PYU8fhdcC0F9MWLK6E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/KaDNwIoeuqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/6872736279083685226/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2009/01/how-to-lookup-jboss-mbean-server-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6872736279083685226?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6872736279083685226?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/KaDNwIoeuqI/how-to-lookup-jboss-mbean-server-from.html" title="How to Lookup JBoss MBean Server from Spring (JMX)" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2009/01/how-to-lookup-jboss-mbean-server-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkACQnszcSp7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-2537888602073145738</id><published>2009-01-29T17:23:00.010+03:00</published><updated>2009-01-30T15:32:43.589+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T15:32:43.589+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><title>How to Use Spring from EJB3</title><content type="html">This is a short instruction how to inject a spring-managed bean into EJB3 component.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Read &lt;a href="http://www.springsource.org/"&gt;SpringFratamework's&lt;/a&gt; reference here: &lt;a href="http://static.springframework.org/spring/docs/2.5.x/reference/ejb.html#ejb-implementation-ejb3"&gt;http://static.springframework.org/spring/docs/2.5.x/reference/ejb.html#ejb-implementation-ejb3&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Place to ejb module's classpath a file &lt;code&gt;beanRefContext.xml&lt;/code&gt;:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;bean id="myBeanFactory" class="org.springframework.context.support.ClassPathXmlApplicationContext"&amp;gt;&lt;br /&gt;  &amp;lt;constructor-arg value="myApplicationContext.xml"/&amp;gt;&lt;br /&gt; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;/pre&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create application context file named &lt;code&gt;myApplicationContext.xml&lt;/code&gt; and define You beans there. Place this file to the ejb module's classpath.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Annotate your Stateless Session Bean:&lt;br /&gt;&lt;code&gt;&lt;pre class="java"&gt;@Stateless&lt;br /&gt;&lt;strong&gt;@Interceptors(org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor.class)&lt;/strong&gt;&lt;br /&gt;public class MyFacadeBean implements MyFacade {&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;@Autowired&lt;/strong&gt;&lt;br /&gt;    private MySpringComponent component;&lt;br /&gt;    ...&lt;br /&gt;    public void foo() {&lt;br /&gt;        component.foo();//invocation &lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Deploy and test Your application.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-2537888602073145738?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m6Qgao3M0s0TXZWxTAqvpzBXEgY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m6Qgao3M0s0TXZWxTAqvpzBXEgY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m6Qgao3M0s0TXZWxTAqvpzBXEgY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m6Qgao3M0s0TXZWxTAqvpzBXEgY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/ggzwFj-kdSw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/2537888602073145738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2009/01/how-to-use-spring-from-ejb3.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2537888602073145738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2537888602073145738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/ggzwFj-kdSw/how-to-use-spring-from-ejb3.html" title="How to Use Spring from EJB3" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2009/01/how-to-use-spring-from-ejb3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04FQHs_fip7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-3179252650187730870</id><published>2009-01-27T18:20:00.011+03:00</published><updated>2009-01-30T15:51:51.546+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T15:51:51.546+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><title>How To Export Spring Managed Bean To JNDI</title><content type="html">&lt;span style="font-style:italic;"&gt;Sometimes, it is necessary to export a &lt;a href="http://www.springsource.org"&gt;spring&lt;/a&gt; managed bean to JNDI context. Here I want to show how do it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In spring, there is a bean that provides a similar functionality for exporting to MBean server: &lt;a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/jmx/export/MBeanExporter.html"&gt;MBeanExporter&lt;/a&gt;. Unfortunately, there is no standard JNDI bean exporter implementation in &lt;a href="http://www.springsource.org"&gt;spring&lt;/a&gt; (current version is 2.5.6) - (Why?).&lt;br /&gt;But it's easy to write it youself:&lt;br /&gt;&lt;code&gt;&lt;pre class="java"&gt;package com.example.spring.jndi.export;&lt;br /&gt;&lt;br /&gt;import org.springframework.beans.factory.DisposableBean;&lt;br /&gt;import org.springframework.beans.factory.InitializingBean;&lt;br /&gt;import org.springframework.jndi.JndiTemplate;&lt;br /&gt;&lt;br /&gt;public class JndiExporter implements InitializingBean, DisposableBean {&lt;br /&gt;&lt;br /&gt; private String jndiName;&lt;br /&gt;&lt;br /&gt; private Object bean;&lt;br /&gt;&lt;br /&gt; private final JndiTemplate jndiTemplate = new JndiTemplate();&lt;br /&gt;&lt;br /&gt; public String getJndiName() {&lt;br /&gt;  return jndiName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setJndiName(String jndiName) {&lt;br /&gt;&lt;br /&gt;  this.jndiName = jndiName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Object getBean() {&lt;br /&gt;  return bean;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setBean(Object bean) {&lt;br /&gt;  this.bean = bean;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public void afterPropertiesSet() throws Exception {&lt;br /&gt;  jndiTemplate.bind(jndiName, bean);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void destroy() throws Exception {&lt;br /&gt;  if (bean != null &amp;&amp; jndiName != null &amp;&amp; bean == jndiTemplate.lookup(jndiName)) {&lt;br /&gt;   jndiTemplate.unbind(jndiName);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Add following fragment to spring configuration file:&lt;br /&gt;&lt;code&gt;&lt;pre class="config"&gt;&amp;lt;bean id="myBean" class="com.example.MyBean"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;bean class="com.example.spring.jndi.export.JndiExporter"&amp;gt;&lt;br /&gt;       &amp;lt;property name="bean" ref="myBean" /&amp;gt;&lt;br /&gt;       &amp;lt;property name="jndiName" value="MyJNDIName"/&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;Don't forget to make your bean serializable by implementing &lt;code&gt;java.io.Serializable&lt;/code&gt; interface.&lt;br /&gt;Now we can lookup exported bean by adding to the spring config fil: &lt;br /&gt;&lt;code&gt;&amp;lt;jee:jndi-lookup id="myJndiBean" jndi-name="MyJNDIName" proxy-interface="com.example.IMyBean" lookup-on-startup="false"/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's all, folks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-3179252650187730870?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5qqXSBJ7lT8eTR-VsUgfUx3rIiE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5qqXSBJ7lT8eTR-VsUgfUx3rIiE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5qqXSBJ7lT8eTR-VsUgfUx3rIiE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5qqXSBJ7lT8eTR-VsUgfUx3rIiE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/VMxZ_Yngslo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/3179252650187730870/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2009/01/how-to-export-spring-managed-bean-to.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3179252650187730870?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3179252650187730870?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/VMxZ_Yngslo/how-to-export-spring-managed-bean-to.html" title="How To Export Spring Managed Bean To JNDI" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>2</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2009/01/how-to-export-spring-managed-bean-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGRHwzcCp7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-195692745946944954</id><published>2009-01-02T12:36:00.004+03:00</published><updated>2009-01-30T15:48:45.288+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T15:48:45.288+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title>Use BigDecimals for Financial Calculations: One More Example</title><content type="html">Recently I was asked about the preferred data type in java application dealing with financial data. I suggest using of BigDecimal and here is the example why. Let's perform following arithmetic operations over double values, double values with &lt;code&gt;strictfp&lt;/code&gt; mode enabled and over BigDecimals.&lt;br /&gt;&lt;br /&gt;Expression is: "0.999/9 - 0.112"&lt;br /&gt;Expected result is: "-0.001"&lt;br /&gt;&lt;br /&gt;Java code:&lt;br /&gt;&lt;pre class="java"&gt;&lt;code&gt;import java.math.BigDecimal;&lt;br /&gt;&lt;br /&gt;public class FloationPointTest {&lt;br /&gt;&lt;br /&gt; public strictfp static void  testStrictfp() {&lt;br /&gt;  System.out.println("strictfp: 0.999/9-0.112 = " + (0.999/9-0.112));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String ... args) {&lt;br /&gt;  System.out.println("double: 0.999/9-0.112 = " + (0.999/9-0.112));&lt;br /&gt;  testStrictfp();&lt;br /&gt;  System.out.println("BigDecimal: 0.999/9-0.112 = " + (new BigDecimal("0.999").divide(new BigDecimal("9")).subtract(new BigDecimal("0.112"))));&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Program output:&lt;pre&gt;double: 0.999/9-0.112 = -0.0010000000000000009&lt;br /&gt;strictfp: 0.999/9-0.112 = -0.0010000000000000009&lt;br /&gt;BigDecimal: 0.999/9-0.112 = -0.001&lt;/pre&gt;&lt;br /&gt;We see that only operations with BigDecimal does not lead to the lost of precision. Performing operation over values of type &lt;code&gt;double&lt;/code&gt; even in &lt;code&gt;strictfp&lt;/code&gt; mode may loose accuracy. It is not acceptable for financial calculations in the days of Global financial crisis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-195692745946944954?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XaNCZlJ_tZu-htmfFWnIHZERvD0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaNCZlJ_tZu-htmfFWnIHZERvD0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XaNCZlJ_tZu-htmfFWnIHZERvD0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaNCZlJ_tZu-htmfFWnIHZERvD0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/WhDdiqBqkTQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/195692745946944954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2009/01/use-bigdecimals-for-financial.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/195692745946944954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/195692745946944954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/WhDdiqBqkTQ/use-bigdecimals-for-financial.html" title="Use BigDecimals for Financial Calculations: One More Example" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2009/01/use-bigdecimals-for-financial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AMR385eCp7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-219656299483577045</id><published>2008-12-02T13:53:00.015+03:00</published><updated>2009-01-30T15:49:46.120+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T15:49:46.120+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title>Proxy Method  Resolving Order</title><content type="html">I noticed interesting behavior of method resolving order, which reflects interface order in &lt;code&gt;java.lang.reflect.Proxy.newProxyInstance(...)&lt;/code&gt; call. It fact, it is described in Sun's java guide: &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/reflection/proxy.html#methods"&gt;Dynamic Proxy Classes: Methods Duplicated in Multiple Proxy Interfaces&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Supose, there are two interfaces (A and B) with same signature and we have created a proxy that implements this interface in order {A,B}.&lt;br /&gt;&lt;br /&gt;When we cast a proxy to class A and invoke it's method, the InvocationHandler says that we invoke a method from interface A (as expected).&lt;br /&gt;&lt;br /&gt;But when we cast a proxy to class B and invoke it's method, the InvocationHandler says that we invoke a method from interface A again! Here I'd expect the InvocationHandler will say that we invoking a method of interface B and it's strange for me.&lt;br /&gt;&lt;br /&gt;Order of appearing interfaces in proxy instance factory method does matter. Following program demonstrates it:&lt;br /&gt;&lt;pre class="java"&gt;&lt;code&gt;import java.lang.reflect.InvocationHandler;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.lang.reflect.Proxy;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;&lt;br /&gt;public class ProxyMethod {&lt;br /&gt;&lt;br /&gt; interface A {&lt;br /&gt;  void doSomething();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; interface B {&lt;br /&gt;  void doSomething();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; static class EchoHandler implements InvocationHandler {&lt;br /&gt;&lt;br /&gt;  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {&lt;br /&gt;   System.out.println("method = " + method);&lt;br /&gt;   return null;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  Object proxy1 = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),&lt;br /&gt;    &lt;strong&gt;new Class[]{B.class, A.class},// The difference&lt;/strong&gt;&lt;br /&gt;    new EchoHandler());&lt;br /&gt;&lt;br /&gt;  Object proxy2 = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),&lt;br /&gt;    &lt;strong&gt;new Class[]{A.class, B.class},// The difference&lt;/strong&gt;&lt;br /&gt;    new EchoHandler());&lt;br /&gt;&lt;br /&gt;  System.out.println("\nproxy1 intfs = " + Arrays.asList(proxy1.getClass().getInterfaces()));&lt;br /&gt;  ((A) proxy1).doSomething();&lt;br /&gt;  ((B) proxy1).doSomething();&lt;br /&gt;&lt;br /&gt;  System.out.println("\nproxy2 intfs = " + Arrays.asList(proxy2.getClass().getInterfaces()));&lt;br /&gt;  ((A) proxy2).doSomething();&lt;br /&gt;  ((B) proxy2).doSomething();&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Returns following result:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;proxy1 intfs = [interface ProxyMethod$B, interface ProxyMethod$A]&lt;br /&gt;method = public abstract void ProxyMethod$B.doSomething()&lt;br /&gt;method = public abstract void ProxyMethod$B.doSomething()&lt;br /&gt;&lt;br /&gt;proxy2 intfs = [interface ProxyMethod$A, interface ProxyMethod$B]&lt;br /&gt;method = public abstract void ProxyMethod$A.doSomething()&lt;br /&gt;method = public abstract void ProxyMethod$A.doSomething()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This behavior allows to build object wrapper as dynamic proxies easily. Interface of the object being wrapped should be passed first to the proxy factory method. So, if methods of the wrapped object's interface is passed to the invocation handler - just invoke them on a wrapped objects. Other methods should be handled differently by invocation handler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-219656299483577045?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xv7qhZd0zwnAM2c7D1K7ndLQEeE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xv7qhZd0zwnAM2c7D1K7ndLQEeE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xv7qhZd0zwnAM2c7D1K7ndLQEeE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xv7qhZd0zwnAM2c7D1K7ndLQEeE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/2raRoVxWKEA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/219656299483577045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2008/12/proxy-method-resolving-order.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/219656299483577045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/219656299483577045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/2raRoVxWKEA/proxy-method-resolving-order.html" title="Proxy Method  Resolving Order" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2008/12/proxy-method-resolving-order.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHSXs-fyp7ImA9WxVQE08.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-2472252728882200691</id><published>2008-03-26T10:21:00.026+03:00</published><updated>2009-01-30T16:35:38.557+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T16:35:38.557+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="jboss" /><title>WebService Authentication under JBoss</title><content type="html">In my business project there is a need to check declarative security within EJB3 Session beans exposed as WebServices. The project is deployed under &lt;a href="http://labs.jboss.com/jbossas"&gt;JBoss AS&lt;/a&gt; 4.0.5.GA with &lt;a href="http://labs.jboss.com/jbossws"&gt;JBossWS&lt;/a&gt; 1.2.0.SP1. After brief investigation, a quick solution was found.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;HTTP BASIC Auhtentication with EJB3 Endpoints&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Axis client provides HTTP BASIC authentication when invoking web services (see &lt;a href="/2007/05/configuring-ws-security-for-axis-14.html"&gt;previous article&lt;/a&gt;). So, it should be some way to enable it on server side.&lt;br /&gt;&lt;br /&gt;For EJB web service endpoints, JBossWS generates and deploys web application, so Session Beans are mapped to Servlets.&lt;br /&gt;&lt;br /&gt;Let's look at the example of &lt;em title="Statless Local Session Bean"&gt;SLSB&lt;/em&gt; exposed as WebService (class HelloIntf, containing missing here @WebService annotations, is generated from WSDL and not listed here):&lt;br /&gt;&lt;pre class="java"&gt;&lt;code&gt;@javax.ejb.Local(HelloIntf.class)&lt;br /&gt;@javax.ejb.Stateless(name = "HelloPort")&lt;br /&gt;@javax.jws.WebService(endpointInterface = "HelloIntf")&lt;br /&gt;@TransactionManagement&lt;br /&gt;@DeclareRoles({"foo","bar"})&lt;br /&gt;// jboss specific&lt;br /&gt;@org.jboss.ws.annotation.WebContext(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contextRoot = "/services", &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urlPattern = "/hello", &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;authMethod = &lt;strong&gt;"BASIC"&lt;/strong&gt;)&lt;br /&gt;public class HelloBean implements HelloIntf {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@javax.annotation.Resource&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private SessionContext ctx;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@javax.annotation.security.RolesAllowed({"foo","bar"})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public String sayHello() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return "Hello, " + ctx.getCallerPrincipal();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Defined bean will be deployed as http://localhost:8080/services/hello.&lt;br /&gt;Actually, JBossWS generates web.xml by processing annotations. In web.xml following code will be added:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt; &amp;lt;web-resource-collection&amp;gt;&lt;br /&gt; &amp;lt;web-resource-name&amp;gt;HelloPort&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt; &amp;lt;url-pattern&amp;gt;/hello&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;http-method&amp;gt;GET&amp;lt;/http-method&amp;gt;&lt;br /&gt; &amp;lt;http-method&amp;gt;POST&amp;lt;/http-method&amp;gt;&lt;br /&gt; &amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt; &amp;lt;auth-constraint&amp;gt;&lt;br /&gt; &amp;lt;role-name&amp;gt;*&amp;lt;/role-name&amp;gt;&lt;br /&gt; &amp;lt;/auth-constraint&amp;gt;&lt;br /&gt; &amp;lt;/security-constraint&amp;gt;&lt;br /&gt; &amp;lt;login-config&amp;gt;&lt;br /&gt; &amp;lt;auth-method&amp;gt;BASIC&amp;lt;/auth-method&amp;gt;&lt;br /&gt; &amp;lt;realm-name&amp;gt;&lt;strong&gt;EJBServiceEndpointServlet Realm&lt;/strong&gt;&amp;lt;/realm-name&amp;gt;&lt;br /&gt; &amp;lt;/login-config&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Unfortunately, the realn name is predefined (hardcoded in JBossWS code) and can not be changed (in JBossWS 1.2.0.SP1), so, we may configure default application-policy called "other" in login-config.xml to meet our needs or to add new application-policy element with name="EJBServiceEndpointServlet Realm"  (but the second solution does not works by unknown reason).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-2472252728882200691?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z9h5tENK_GB6Ike-xDDmBBRQ0rs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9h5tENK_GB6Ike-xDDmBBRQ0rs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z9h5tENK_GB6Ike-xDDmBBRQ0rs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9h5tENK_GB6Ike-xDDmBBRQ0rs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/hgn1zwV1WOY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/2472252728882200691/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2008/03/webservice-authentication-under-jboss.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2472252728882200691?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/2472252728882200691?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/hgn1zwV1WOY/webservice-authentication-under-jboss.html" title="WebService Authentication under JBoss" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>1</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2008/03/webservice-authentication-under-jboss.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QASHg4cSp7ImA9WxVaGUg.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-3631184775289399760</id><published>2008-03-22T12:19:00.019+03:00</published><updated>2009-04-17T10:55:49.639+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-17T10:55:49.639+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><title>MacOS Applications</title><content type="html">As a new Mac user, I was faced to choose and install applications to make my work (and entertainment) more pleasurable.&lt;br /&gt;&lt;br /&gt;One of the most important reason when choosing applications to install is to prefer Free and Open Source than Commercial ones. Then comes size and performance. All &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Localization&lt;/h4&gt;&lt;br /&gt;Is my native language is Russian, I need a to write the texts with other encoding than ISO. Here comes RuSwitcher by Alexey Proskuryakov. It is similar that PuntoSwitcher for Windows.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Web&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Web Browser&lt;/h4&gt;&lt;br /&gt;&lt;img src="http://images.apple.com/search/featured/images/safari.jpg" align="left"/&gt;&lt;br /&gt;I desided to stay with Safari as it's really fast web browser.&lt;br /&gt;But there are a number of plugins which make work with Safari more comfortable.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;SafariBlock&lt;/h5&gt;&lt;br /&gt;&lt;img src="http://www.macupdate.com/images/icons/19202.png" align="left"/&gt;&lt;br /&gt;The &lt;a href="http://www.macupdate.com/info.php/id/19202"&gt;SafariBlock&lt;/a&gt; plugin is absolutely necessary to block unwanted ads. - does not work in Safari 4 beta&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;Glimps&lt;/h5&gt;&lt;br /&gt;&lt;img src="http://www.machangout.com/sites/machangout.com/files/mainshot.png" alt="Glimps" align="left"/&gt;&lt;a href="http://www.machangout.com/"&gt;Glimps&lt;/a&gt; - search plugin for Safari. - better then Inquisitor. &lt;br /&gt;&lt;br /&gt;&lt;h5&gt;Keywurl&lt;/h5&gt;&lt;br /&gt;Other useful extension is &lt;a href="http://purefiction.net/keywurl/"&gt;Keywurl&lt;/a&gt; - A small, free plugin for Safari that adds keyword search to the browser’s address bar. (just like in FireFox).&lt;br /&gt;&lt;img src="http://purefiction.net/keywurl/example1.png" alt="search wiki from adress bar with Keywurl"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Communications&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Mail&lt;/h4&gt;&lt;br /&gt;&lt;img src="http://www.upenn.edu/computing/provider/docs/img/mail.jpg" alt="Mail.app"/&gt;On Windows and Ubuntu I prefer Mozilla Thunderbird. But on Mac, I found native Mail.app is useable enough. And it seems to be faster than Thunderbird.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Reading&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Reading RSS&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.apple.com/downloads/macosx/internet_utilities/images/vienna_20080118142145.jpg" align="left" hspace="10"/&gt;&lt;br /&gt;Initially, I have installed ... But when I tried &lt;a href="http://www.opencommunity.co.uk/vienna2.html"&gt;Vienna&lt;/a&gt;, I stayed on it.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Reading CHM files&lt;/h4&gt;&lt;br /&gt;&lt;img src="http://www.macupdate.com/images/icons/15121.png" hspace="10"/&gt;&lt;br /&gt;There are a number CHM file readers available. For now, I've stayed on &lt;a href="http://chmox.sourceforge.net/"&gt;Chmox&lt;/a&gt;. Significant disadvantage of this program it is not possible to view CHMs with windows-1251 encoding.&lt;br /&gt;&lt;img src="http://www.macupdate.com/images/screens/uploaded/15121_sm.png"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Entertainment&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a href="http://www.eternalstorms.at/gimmesometune/"&gt;GimmeSomeTune&lt;/a&gt; - iTunes Plugin&lt;/h4&gt;&lt;br /&gt;&lt;a href="http://www.eternalstorms.at/gimmesometune/"&gt;&lt;img src="http://www.eternalstorms.at/gimmesometune/files/blocks_image_0_1.png" alt="" align="left"/&gt;&lt;/a&gt;&lt;br /&gt;Nice iTunes plugin that fetches lyrics and artwork for currently playing composition. It has last.fm. support. It may start automatically when you start iTunes and shutdowns when you exit it.&lt;br /&gt;&lt;img src="http://www.eternalstorms.at/gimmesometune/files/blocks_image_2_1.png" alt=""/&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Development&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;SVN Client&lt;/h4&gt;&lt;br /&gt;&lt;img src="http://scplugin.tigris.org/images/contextual_menu-thumb.png" alt=""/&gt;&lt;br /&gt;&lt;a href="http://scplugin.tigris.org/"&gt;SCPlugin&lt;/a&gt; - My choice is SVN client with Finder integration.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Games&lt;/h3&gt;&lt;br /&gt;I like RPG and &lt;a href="http://www.wesnoth.org/"&gt;Battle for Wesnoth&lt;/a&gt; is very nice, balanced and playable game. And it's absolutely Free and Open Source!&lt;br /&gt;&lt;img src="http://www.wesnoth.org/images/sshots/wesnoth-1.4-8-175.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-3631184775289399760?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JUSngiIw29BXM-vqMV3VFhCDVZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JUSngiIw29BXM-vqMV3VFhCDVZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JUSngiIw29BXM-vqMV3VFhCDVZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JUSngiIw29BXM-vqMV3VFhCDVZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/meekE7xG2sQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/3631184775289399760/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2008/03/macos-applications.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3631184775289399760?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3631184775289399760?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/meekE7xG2sQ/macos-applications.html" title="MacOS Applications" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2008/03/macos-applications.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQDQnc7eyp7ImA9WB9SGUs.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-3580083216228751657</id><published>2007-10-09T23:56:00.000+04:00</published><updated>2007-10-10T00:06:13.903+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-10T00:06:13.903+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title>«Трусливая» разработка</title><content type="html">&lt;p&gt;Я называю &lt;em&gt;трусливой разработкой&lt;/em&gt; состояние проекта, когда некоторые (или все) члены команды избегают вносить изменения в исходный код или конфигурационные файлы.&lt;br /&gt;Такое бывает на завершающих стадиях проекта, когда получена некая относительно работоспособная версия сиситемы. В этот момент аналитик или менеджер приходит к разработчикам и просит внести не очень большое изменение в функциональность. В ответ ему говорят, что "лучше мы ничего не будем трогать, чтобы не сломать". Услышать такие слова перед выпуском релиза - это нормально. Действительно, внесение изменений изменит скоуп (scope) релиза и отодвинет его дату, а все уже хотят поскорей его сдать. Но если такое происходит в начае релиза - это повод задуматься: а владеют ли разработчики кодом в полном объеме?&lt;/p&gt;&lt;p&gt;Разве разработчик может не владеть кодом, спросит начинающий менеджер проекта? Ответ: Да. И дело здесь не в профессионализме разработчиков. Причины могут быть различны, например:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Отсутствие понимания у разработчика общей картины поведения системы. Невозможность предсказать изменения и оценить "размер бедствия".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Опасения разрушить взаимодействия между слабосвязанными компонетами: невозможно сказать, на что повлияет сделанное изменение.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Новые люди в проекте. Они боятся лезть в чужой код, особенно, если его автор уволился.&lt;/li&gt;&lt;li&gt;Психологическая усталость: нет драйва затевать большую переделку.&lt;/li&gt;&lt;li&gt;Противоречия внутри команды: один разработчик отказывается работать с кодом другого разработчика.&lt;/li&gt;&lt;/ul&gt;Осторожность даже может быть признаком профессионализма и наличия негатовного опыта в прошлом. Вот почему необстреляный соллдат так рвется в бой. Ветераны не лезут на рожон. Другими признаками "трусливого" процесса могут быть:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Саботирование изменений&lt;/li&gt;&lt;li&gt;Неопреледенные эстимэйты(estimates): разработчики стараются не предоставлять менеджеру информацию, о сроках разработки. На самоа деле, они не могут даже приблизительно определить эти сроки. Возможно, что какие-то сроки все же будут заявлены, но они будут либо взяты с большим запасом, либо&lt;/li&gt;&lt;/ul&gt;На мой взгляд, нужно как можно скорее менять ситуацию, переходя от боязни изменений к готовности вносит изменения. В противном случае теряется мотивация (драйв) у остальных членов команды (черевато развалом команды), наступает застой, продукт перестает развиваться.&lt;/p&gt;&lt;p&gt;Итак, как я предлагаю исправлять ситуацию:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Начать вносить небольшие изменения, используя техники рефакторинга (см.Мартин Фаулер "Рефакторинг")&lt;/li&gt;&lt;li&gt;Выносить новую функциональность в отдельный, дублирующий, компонент, постепенно перенося функционал в него. При этом нужно быть готовым к потерям времени на переписывание.&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;А что бы вы посоветовали?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-3580083216228751657?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XTfj3LiAPVC6IIcmVRIlYioPnU8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XTfj3LiAPVC6IIcmVRIlYioPnU8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XTfj3LiAPVC6IIcmVRIlYioPnU8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XTfj3LiAPVC6IIcmVRIlYioPnU8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/02YrX3U-aD8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/3580083216228751657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/10/configuration-management-for-java-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3580083216228751657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3580083216228751657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/02YrX3U-aD8/configuration-management-for-java-in.html" title="«Трусливая» разработка" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/10/configuration-management-for-java-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UDQ3w4fSp7ImA9WB9REE0.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-4874071509713666833</id><published>2007-10-09T21:30:00.000+04:00</published><updated>2007-10-10T13:41:12.235+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-10T13:41:12.235+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title>Development Process Guidelines</title><content type="html">&lt;p style="font-style: italic; text-align: right;"&gt;"You're pirates. Hang the code, and hang the rules.&lt;br /&gt;They're more like guidelines anyway." &lt;/p&gt; &lt;div style=""&gt;&lt;div style="text-align: right;"&gt;   &lt;/div&gt;&lt;p style="text-align: right;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a title="Pirates of the Caribbean: The Curse of the Black Pearl" href="http://www.imdb.com/Quotes?0325980"&gt;Pirates of the Caribbean: The Curse of the Black Pearl&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt; &lt;p style="font-style: italic;"&gt; &lt;/p&gt;&lt;br /&gt;I'll try to figure out some configuration and development process guidelines. Don't take it too seriously, it's just a guidelines :-)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;   Required infrastructure &lt;/h3&gt; Following tools and environments must be available:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;     Issue Tracking system - JIRA or BugZilla&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Version Control System [VCS] - Subversion, CVS, etc.   &lt;/li&gt;   &lt;li&gt;     Continuous Integration Tool [CI tool] - &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt;, &lt;a href="http://maven.apache.org/continuum/"&gt;Continuum&lt;/a&gt; etc.   &lt;/li&gt;   &lt;li&gt;     System Test environment exists (dev-box) - for system test by development team (QA team - by request). Available for developers to deploy.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Integration Test environment exists (tst-box) - for QA team. Not available for developers&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Pre-Production (user-acceptance) environment exists (uat-box) - visible to end-uses, used by another projects within organization (clients). Maintained by Integrators&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Production environment (prod-box) - maintained by Integrators.   &lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;h3&gt;   Project requirements &lt;/h3&gt; Project structure requires following:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;     Each system component should be buildable (build script exists)&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Each system component should be buildable on the remote machine using CI tool without human intervention (no manual source modifying) by schedule or forced build.   &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;   Roles &lt;/h3&gt; &lt;ul&gt;   &lt;li&gt;     Developer - works with code   &lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;     Builder - prepares the distribution   &lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;     Tester - tests the application   &lt;/li&gt;   &lt;li&gt;     Integrator - manages UAT and PROD environments&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; Single person may share multiple roles&lt;br /&gt;&lt;h3&gt;   The Process &lt;/h3&gt;&lt;br /&gt;&lt;ol&gt;      &lt;li&gt;     Builder gets the binaries from the CI Tool and deploys to dev-box environment.   &lt;/li&gt;   &lt;li&gt;     When internal system test passed:   &lt;/li&gt;   &lt;ol&gt;     &lt;li&gt;       Packages components, deployed to dev-box, into distribution package with build number assigned.     &lt;/li&gt;     &lt;li&gt;       Builder submits the Package to SCM or special folder.     &lt;/li&gt;     &lt;li&gt;       Builder assembles the change list (or marks issues in issue tracking system).     &lt;/li&gt;     &lt;li&gt;       Builder writes deployment instructions (if required)     &lt;/li&gt;     &lt;li&gt;       Builder sends changelist, deployment instructions and reference to the distribution package to the Tester.&lt;br /&gt; &lt;/li&gt;   &lt;/ol&gt;   &lt;li&gt;     Tester gets the package from the Builder and deploys it to Dev-box.   &lt;/li&gt;   &lt;li&gt;     Tester tests changes described in CHANGELIST or from Bug Tracking system as well as the regression tests   &lt;/li&gt;   &lt;li&gt;     If QA test passed:   &lt;/li&gt;   &lt;ol&gt;     &lt;li&gt;       Tester marks Distribution package as Release Candidate     &lt;/li&gt;&lt;li&gt;     Developers implement features and fix bugs. All changes are submitted to the VCS[Version Control System]   &lt;/li&gt;&lt;li&gt;     Tester writes Release Notes for RC.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;     Tester sends deploys tested package together with release notes to the Integrator   &lt;/li&gt;      &lt;li&gt;     Integrator installs  RC version to  uat-box. (Integrator learns how to install the new release over existing running system.)&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;If UAT phase passed   &lt;/li&gt;   &lt;ol&gt;&lt;li&gt;     RC version is marked as release version   &lt;/li&gt;   &lt;li&gt;     Integrator installs RC version to the customer's server.&lt;/li&gt; &lt;/ol&gt;&lt;/ol&gt;I must have left something important in process.&lt;br /&gt;Comments are welcome ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-4874071509713666833?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eSCK0_li4kXT_UzqPdPvrkEUauM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eSCK0_li4kXT_UzqPdPvrkEUauM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eSCK0_li4kXT_UzqPdPvrkEUauM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eSCK0_li4kXT_UzqPdPvrkEUauM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/ne8BkDV4Dis" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/4874071509713666833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/08/development-process-guidelines-youre.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/4874071509713666833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/4874071509713666833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/ne8BkDV4Dis/development-process-guidelines-youre.html" title="Development Process Guidelines" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/08/development-process-guidelines-youre.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUGQnc4eCp7ImA9WB5bF0o.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-3173786961152202830</id><published>2007-09-03T03:03:00.000+04:00</published><updated>2007-09-03T03:53:43.930+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-03T03:53:43.930+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title>Coding java persistence: JPA vs. Hibernate</title><content type="html">&lt;p&gt;In my current projects, I deal with database persistence layer. I use Hibernate implementation of the JPA 1.0 API. But restrictions of JPA API limits my ability to use some cool features of Hibernate, including&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Full control over cascade behavior;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Indexed collections;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Collections of primitive values.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;"Use JPA when possible, and Hibernate extensions where you can't do without" is a reasonable solution, but... It smells.... Anyway, the code becomes not portable enough when using Hibernate extensions. May&amp;nbsp;be, it would be better to skip JPA and relay on Plain&amp;nbsp;Old&amp;nbsp;Hibernate&amp;nbsp;(&lt;acronym title="Plain Old Hibernate"&gt;POH&lt;/acronym&gt;)?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;XML Config vs. Annotations: Prons and Cons&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;JPA and Hibernate both supports XML mapping config and annotation config.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;XML does not require to import annotations in entity classes. It makes entities more portable. They stay a simple POJOs, without any extra dependencies. It makes possible to package them in separate jar and include as a dependency in the client tier.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Annotations make mapping config to live together with property declarations in java file. It is more readable to the developer. It make sense when you don't plan to expose your entities outside the persistence module.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-3173786961152202830?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G8go1L7skZUclNrOhpOtMRdL2qI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G8go1L7skZUclNrOhpOtMRdL2qI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G8go1L7skZUclNrOhpOtMRdL2qI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G8go1L7skZUclNrOhpOtMRdL2qI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/m_fRLuJrrIY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/3173786961152202830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/09/coding-java-persistence-jpa-vs.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3173786961152202830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/3173786961152202830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/m_fRLuJrrIY/coding-java-persistence-jpa-vs.html" title="Coding java persistence: JPA vs. Hibernate" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>3</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/09/coding-java-persistence-jpa-vs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4HSXw-eSp7ImA9WB5UGUk.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-4565691774206417524</id><published>2007-08-24T12:04:00.000+04:00</published><updated>2007-08-24T12:08:58.251+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-24T12:08:58.251+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title>Java Naming Conventions for Sample Project</title><content type="html">    &lt;h1&gt;   Java Naming Conventions for Sample Project&lt;br&gt;&lt;/h1&gt;&lt;h2&gt;Java package naming &lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       com.company.project – project-wide package prefix. Should not be used directly.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       com.company.project.web – web client package prefix     &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;   Common packages &lt;/p&gt; &lt;ul&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style="font-style: italic;"&gt;com.company.project.commons&lt;/span&gt; – project-wide common classes, including exceptions     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style="font-style: italic;"&gt;com.company.project.commons.util&lt;/span&gt; – project-wide gnerial purpose utilities.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style="font-style: italic;"&gt;com.company.project.commons.persistence&lt;/span&gt; – common classes retaled to server side persistence (Persistence API 1.0)     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style="font-style: italic;"&gt;com.company.project.commons.ws&lt;/span&gt; – WebService related utilities.     &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;   Sub-system packages &lt;/p&gt; &lt;ul&gt;   &lt;li value="1"&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style="font-style: italic;"&gt;com.company.project.&amp;lt;subsystem&amp;gt;.&amp;lt;component&amp;gt;&lt;/span&gt; - may contain exceptions     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;span style=""&gt;&lt;i&gt;domain&lt;/i&gt;&lt;/span&gt; – contains interfaces, classes and enums related to subsystem's domain model representation.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;persistence&lt;/i&gt; – persistnt entities should be placed here. EJB 2.1 beans too.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;component&lt;/i&gt; – session beans (EJB3) with CRUD logic (managers over persistence tier)     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;util&lt;/i&gt; – various service utilities, e.g. DTO assemblers and helpers     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;business&lt;/i&gt; – Session beans with complex logic. These classes deals with component layer and may use persistence entities POJOs as Data Transfer Objects (DTO) with lazy loading within a transaction.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       util – various service utilities, e.g. DTO assemblers and helpers     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;facade&lt;/i&gt; – Contains service facades. Serice facades are POJOs (preferrable) or EJB3 session beans which may access business and component layer beans.     &lt;/p&gt;     &lt;ul&gt;       &lt;li&gt;         &lt;p style="margin-bottom: 0in;"&gt;           &lt;i&gt;jaxws&lt;/i&gt; – contains JAXWS service implementations.         &lt;/p&gt;         &lt;ul&gt;           &lt;li&gt;             &lt;p style="margin-bottom: 0in;"&gt;               &lt;i&gt;skeletons&lt;/i&gt; – contains generated JAXWS interfaces             &lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;       &lt;li&gt;         &lt;p style="margin-bottom: 0in;"&gt;           &lt;i&gt;axis&lt;/i&gt; – contains AXIS service facade implementations         &lt;/p&gt;         &lt;ul&gt;           &lt;li&gt;             &lt;p style="margin-bottom: 0in;"&gt;               &lt;i&gt;skeletons&lt;/i&gt; – contains axis generated skeletons             &lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;       &lt;li&gt;         &lt;p style="margin-bottom: 0in;"&gt;           &lt;i&gt;util&lt;/i&gt; – various service utilities, e.g. DTO assemblers and helpers         &lt;/p&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       &lt;i&gt;client&lt;/i&gt; – contains (web) service clients     &lt;/p&gt;     &lt;ul&gt;       &lt;li&gt;         &lt;p style="margin-bottom: 0in;"&gt;           &lt;i&gt;jaxws &lt;/i&gt;&lt;span style="font-style: normal;"&gt;– contains JAXWS service client&lt;/span&gt;&lt;i&gt;.&lt;/i&gt;         &lt;/p&gt;         &lt;ul&gt;           &lt;li&gt;             &lt;p style="margin-bottom: 0in;"&gt;               &lt;i&gt;stubs &lt;/i&gt;&lt;span style="font-style: normal;"&gt;– contains jaxws generated sstubs&lt;/span&gt;             &lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;       &lt;li&gt;         &lt;p style="margin-bottom: 0in;"&gt;           &lt;i&gt;axis&lt;/i&gt; – contains AXIS service client.         &lt;/p&gt;         &lt;ul&gt;           &lt;li&gt;             &lt;p style="margin-bottom: 0in;"&gt;               &lt;i&gt;stubs&lt;/i&gt; – contains axis generated stubs             &lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;h2 class="western"&gt;   Java class naming &lt;/h2&gt; &lt;p style="margin-bottom: 0in;"&gt;   Following conventions should be applied to class naming: &lt;/p&gt; &lt;ul&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Persistent entity should have an «Entity» suffix     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Session beans should have an interface and implementation: FooManager and FooManagerBean     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       WebServices session bean implementation should be named with suffix FooPortImpl. If it's a session bean – FooPortBean.     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Factories should have a «Factory» suffix     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       We use the following names for the parts of an entity / session bean:     &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;ol&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Enterprise bean class: &amp;lt;name&amp;gt;Bean     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Local home interface: &amp;lt;name&amp;gt;Home     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Local interface: &amp;lt;name&amp;gt;.     &lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt; &lt;ul&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       Accessor methods of an enterprise bean class should be grouped by field     &lt;/p&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;p style="margin-bottom: 0in;"&gt;       ...     &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;   &lt;br&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-4565691774206417524?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x0k5tzK9-KNThA_BK3HcjDTNmQU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x0k5tzK9-KNThA_BK3HcjDTNmQU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x0k5tzK9-KNThA_BK3HcjDTNmQU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x0k5tzK9-KNThA_BK3HcjDTNmQU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/A7cMnKjekqk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/4565691774206417524/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/08/java-naming-conventions-for-sample.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/4565691774206417524?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/4565691774206417524?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/A7cMnKjekqk/java-naming-conventions-for-sample.html" title="Java Naming Conventions for Sample Project" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/08/java-naming-conventions-for-sample.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8CSX4-fSp7ImA9Wx9WGUk.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-821474282770453876</id><published>2007-05-23T14:13:00.001+04:00</published><updated>2011-01-25T12:47:48.055+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-25T12:47:48.055+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>Configuring WS-Security for Axis 1.4 client</title><content type="html">I was looking how to enable WS-Security features in the Axis client to my web service application. The &lt;a href="http://www.arcwebservices.com/v2006/help/samples/wssecurity_axis.htm"&gt;article&lt;/a&gt;  I found describes how to do this.&lt;br /&gt;
&lt;br /&gt;
I have tested it with Axis 1.4 client.&lt;br /&gt;
&lt;br /&gt;
The things you need to configure axis client are:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Copy wss4j.jar (rev. 1.5.1), opensaml-1.1.jar and xmlsec-20050514.jar (from the openSAML distribution) to classpath (WEB-INF/lib)&lt;/li&gt;
&lt;li&gt;Add handler to client.wsdd:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;!-- Using the WSDoAllSender security   handler in request flow --&gt;&lt;br /&gt;
&amp;lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" java="http://xml.apache.org/axis/wsdd/providers/java"&amp;gt;&lt;br /&gt;
 &amp;lt;transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"&amp;gt;&lt;br /&gt;
  &amp;lt;globalconfiguration&amp;gt;&lt;br /&gt;
   &amp;lt;requestflow&amp;gt;&lt;br /&gt;
    &amp;lt;handler type="java:org.apache.ws.axis.security.WSDoAllSender"&amp;gt;&lt;br /&gt;
     &amp;lt;parameter name="action" value="UsernameToken"&amp;gt;&lt;br /&gt;
     &amp;lt;parameter name="passwordType" value="PasswordDigest"&amp;gt;&lt;br /&gt;
     &amp;lt;parameter name="mustUnderstand" value="false"&amp;gt;&lt;br /&gt;
    &amp;lt;/handler&amp;gt;&lt;br /&gt;
   &amp;lt;/requestflow&amp;gt;&lt;br /&gt;
  &amp;lt;/globalconfiguration&amp;gt;&lt;br /&gt;
 &amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/deployment&amp;gt&lt;br /&gt;
&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
You dont need to hardcode username and password as a handler parameters as described in the &lt;a href="http://www.arcwebservices.com/v2006/help/samples/wssecurity_axis.htm"&gt;article&lt;/a&gt;. Just call setUsername(...) and setPassword(...) methods of your Stub.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-821474282770453876?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zJ0iBEYH5p426KVNRn58Juau9GQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zJ0iBEYH5p426KVNRn58Juau9GQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zJ0iBEYH5p426KVNRn58Juau9GQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zJ0iBEYH5p426KVNRn58Juau9GQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/URloS48bVjo" height="1" width="1"/&gt;</content><link rel="related" href="http://www.arcwebservices.com/v2006/help/samples/wssecurity_axis.htm" title="Configuring WS-Security for Axis 1.4 client" /><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/821474282770453876/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/05/configuring-ws-security-for-axis-14.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/821474282770453876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/821474282770453876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/URloS48bVjo/configuring-ws-security-for-axis-14.html" title="Configuring WS-Security for Axis 1.4 client" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>4</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/05/configuring-ws-security-for-axis-14.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IESX08eSp7ImA9WBFRGE8.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-5435724886500748460</id><published>2007-03-02T12:50:00.000+03:00</published><updated>2007-03-02T12:58:28.371+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-02T12:58:28.371+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="jboss" /><title>JBoss Web Services 1.2.0 has been released</title><content type="html">There are a lot of issues were closed, but there are still ones that annoys.&lt;br /&gt;For example, abstract complexTypes are not supported: &lt;a href="http://jira.jboss.com/jira/browse/JBWS-1554"&gt;JBWS-1554&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Important note&lt;/span&gt;: when using wstools for wsdl2java generation, don't forget to change "file" attribute to "location" in wstools-config.xml. In other case, you'll see NPE while instatiating java.io.File&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-5435724886500748460?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yxqHJfZUgRLcVJuFqzCD0Ba74Us/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxqHJfZUgRLcVJuFqzCD0Ba74Us/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yxqHJfZUgRLcVJuFqzCD0Ba74Us/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxqHJfZUgRLcVJuFqzCD0Ba74Us/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/_p9SpxrIgg0" height="1" width="1"/&gt;</content><link rel="related" href="http://labs.jboss.com/file-access/default/members/jbossws/downloads/ReleaseNotes-1.2.0.GA.txt" title="JBoss Web Services 1.2.0 has been released" /><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/5435724886500748460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/03/jboss-web-services-120-has-been.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/5435724886500748460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/5435724886500748460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/_p9SpxrIgg0/jboss-web-services-120-has-been.html" title="JBoss Web Services 1.2.0 has been released" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>0</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/03/jboss-web-services-120-has-been.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIFQ3Y5cSp7ImA9WBBaGEU.&quot;"><id>tag:blogger.com,1999:blog-4460194782217289102.post-6762798712991743734</id><published>2007-01-27T11:11:00.000+03:00</published><updated>2007-01-27T11:45:12.829+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-27T11:45:12.829+03:00</app:edited><title>Let's start</title><content type="html">Hi, Everyone!&lt;br /&gt;It is my first post to this new blog.&lt;br /&gt;You may find my old blog at &lt;a href="http://c14s.livejournal.com" target="_blak"&gt;c14s.livejournal.com&lt;/a&gt;&lt;sup&gt;[in&amp;nbsp;a&amp;nbsp;new&amp;nbsp;window]&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Всем привет!&lt;br /&gt;Это мой первый пост в новом БЛОГе.&lt;br /&gt;Мой старый БЛОГ можно посмотреть по этому адресу: &lt;a href="http://c14s.livejournal.com" target="_blak"&gt;c14s.livejournal.com&lt;/a&gt;&lt;sup&gt;[в&amp;nbsp;новом&amp;nbsp;окне]&lt;/sup&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4460194782217289102-6762798712991743734?l=maestro-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kBEDv8wYwzgHD50ibqYDlZs0goE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kBEDv8wYwzgHD50ibqYDlZs0goE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kBEDv8wYwzgHD50ibqYDlZs0goE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kBEDv8wYwzgHD50ibqYDlZs0goE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/RLiiv/~4/TsIYojSnlHk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://maestro-lab.blogspot.com/feeds/6762798712991743734/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://maestro-lab.blogspot.com/2007/01/lets-start.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6762798712991743734?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4460194782217289102/posts/default/6762798712991743734?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/RLiiv/~3/TsIYojSnlHk/lets-start.html" title="Let's start" /><author><name>Konstantin Pavlov</name><uri>http://www.blogger.com/profile/09971583435714464151</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://www.livejournal.com/userpic/24329027/4945317" /></author><thr:total>2</thr:total><feedburner:origLink>http://maestro-lab.blogspot.com/2007/01/lets-start.html</feedburner:origLink></entry></feed>

