<?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;DEACSX47eyp7ImA9WhRbGEU.&quot;"><id>tag:blogger.com,1999:blog-15320576</id><updated>2012-02-10T17:12:48.003+02:00</updated><category term="Glassbox" /><category term="2009" /><category term="Eric Evans" /><category term="Romania" /><category term="java cafe" /><category term="Talk" /><category term="web" /><category term="Ajax4JSF" /><category term="iPAQ" /><category term="maven" /><category term="soare" /><category term="JConsole" /><category term="BEA" /><category term="test" /><category term="redhat" /><category term="buildix" /><category term="java maven release snapshot scm artifact" /><category term="ejb3" /><category term="rails" /><category term="Exadel" /><category term="Olanesti" /><category term="dan puric" /><category term=".net" /><category term="germany" /><category term="BDT" /><category term="modul" /><category term="Iezeru" /><category term="securitate" /><category term="Pahomie" /><category term="Tubingen" /><category term="mentenanta" /><category term="JMeter" /><category term="VMWare" /><category term="OpenId" /><category term="programare" /><category term="cristina decembrie" /><category term="jsf" /><category term="MySQL" /><category term="anunt" /><category term="aplicatie" /><category term="java" /><category term="Creta" /><category term="cristian" /><category term="Corfu" /><category term="Gmail" /><category term="Darvari" /><category term="2007" /><category term="SSO" /><category term="vacanta 2008" /><category term="Blogger" /><category term="pocket" /><category term="Constantinopol" /><category term="framework web" /><category term="rencontres" /><category term="pachet" /><category term="build" /><category term="jpa" /><category term="Open Development Day" /><category term="Eclipse" /><category term="GPS" /><category term="Patmos" /><category term="2006" /><category term="dezvoltare" /><category term="release" /><category term="content" /><category term="J2EE" /><category term="GPRS" /><category term="svn" /><category term="shortcut-s" /><category term="ruby" /><category term="vara moeciu" /><category term="SOAPui" /><category term="1 aprilie" /><category term="JDepend" /><category term="Fport" /><category term="Analytics" /><category term="vacanta" /><category term="design patterns" /><category term="Microsoft" /><category term="vara" /><category term="client" /><category term="Bran" /><category term="mare" /><category term="arhitectura" /><category term="mihaela" /><category term="SonarJ" /><category term="capri" /><category term="fedora" /><category term="Toolbar" /><category term="roma" /><category term="Integration" /><category term="SPI" /><category term="Ford" /><category term="Oracle" /><category term="Domain" /><category term="Felix" /><category term="botez" /><category term="Picasa" /><category term="optimizari" /><category term="cms" /><category term="Equinox" /><category term="JavaRomania" /><category term="baden-baden" /><category term="continuum" /><category term="KnopflerFish" /><category term="september" /><category term="revelion 2009" /><category term="octomber" /><category term="windows" /><category term="uml" /><category term="elvetia" /><category term="effective java" /><category term="services" /><category term="JAX-WS" /><category term="DDD" /><category term="Spring" /><category term="browsere" /><category term="Bucuresti" /><category term="Zakynthos" /><category term="repository" /><category term="fedora core" /><category term="linux" /><category term="HP" /><category term="poze" /><category term="JBoss" /><category term="IDEA" /><category term="germania" /><category term="OSGi" /><category term="alfresco" /><category term="Roamania" /><category term="club" /><category term="RichFaces" /><category term="Arnota" /><category term="API" /><category term="Google" /><category term="tip" /><category term="folkfest" /><category term="arhitecturi" /><category term="stuttgart" /><category term="TCPMon" /><category term="Sun" /><category term="Structure 101" /><category term="wireless" /><category term="jerbera" /><category term="artifactory" /><category term="Grecia" /><category term="server" /><category term="Notebook" /><category term="Valcea" /><category term="basel" /><category term="napoli" /><category term="Ubuntu" /><category term="bundle" /><category term="magnolia" /><title>CRISTIAN OLARU BLOG</title><subtitle type="html">&lt;center&gt;
Cristian Olaru Blog
&lt;/center&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.cristianolaru.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>141</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/CristianOlaruBlog" /><feedburner:info uri="cristianolarublog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEACSX46eSp7ImA9WhRbGEU.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-655294724486567565</id><published>2012-02-03T13:47:00.003+02:00</published><updated>2012-02-10T17:12:48.011+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T17:12:48.011+02:00</app:edited><title>Scapa cine stie</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TBk1AW9M2-ZiJczD30cIZBGAxlk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TBk1AW9M2-ZiJczD30cIZBGAxlk/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/TBk1AW9M2-ZiJczD30cIZBGAxlk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TBk1AW9M2-ZiJczD30cIZBGAxlk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
"scapa cine stie" este un citat dintr-un interviu cu Gheorghe Mencinicopschi. Incerc in acest post sa adun pentru mine (si pentru voi) o serie de link-uri si informatii despre hrana sanatoasa.&lt;br /&gt;
&lt;br /&gt;
Mai intai cateva nume (ordinea conteaza)&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span class="st"&gt;Pavel Chirila&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=iFPy_5wyEG0"&gt;&lt;span class="st"&gt;interviu TVR &lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Catalin Marginean&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;blog: &lt;a href="http://drcalinmarginean.blogspot.com/"&gt;drcalinmarginean.blogspot.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Gheorghe Mencinicopschi &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kD8176FuXGA&amp;amp;feature=related"&gt;interviu TVR&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt; Virgiliu Stroescu&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;site: &lt;a href="http://www.stroescu.go.ro/"&gt;www.stroescu.go.ro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
O serie de filme:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Z0N0e7DV0eE&amp;amp;feature=player_embedded"&gt;Frumosul adevar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=O7ijukNzlUg"&gt;Furculite si nu cutite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Bloguri sanatete:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://retetecugust.com/"&gt;Retete cu gust &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ligiapop.com/"&gt;Ligia Pop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-655294724486567565?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/IH-4JYgKwlQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/655294724486567565/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2012/02/scapa-cine-stie.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/655294724486567565?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/655294724486567565?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/IH-4JYgKwlQ/scapa-cine-stie.html" title="Scapa cine stie" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2012/02/scapa-cine-stie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08BR30-fCp7ImA9WhRUE0w.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-4981225498147564162</id><published>2012-01-19T20:26:00.003+02:00</published><updated>2012-01-23T11:44:16.354+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-23T11:44:16.354+02:00</app:edited><title>Pentru Zarko</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hyc4V7vrchhTKdvmzyA1g_mRTDg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hyc4V7vrchhTKdvmzyA1g_mRTDg/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/hyc4V7vrchhTKdvmzyA1g_mRTDg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hyc4V7vrchhTKdvmzyA1g_mRTDg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://pentrudiaconulzarko.blogspot.com/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/-Y4hMtvMQBDI/Txgoa93jhYI/AAAAAAAAAA8/kXeIGa8eetg/s400/Diaconie_18decembrrie11-9_500.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pagina blog: &lt;a href="http://pentrudiaconulzarko.blogspot.com/"&gt;http://pentrudiaconulzarko.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Irina si Parintele Zarko s-au cunoscut in Macedonia la o intalnire intre tinerii crestin-ortodocsi din Balcani. Dupa putin timp, el a invatat romana si ea - macedoneana.&lt;br /&gt;S-au casatorit acum 6 ani si s-au stabilit in Bucuresti.&lt;br /&gt;&lt;br /&gt;Parintele Zarko a inceput sa lucreze la o firma si in paralel a urmat cursurile facultatii de Teologie Pastorala.&lt;br /&gt;Acum 2 ani, la 33 de ani, in urma unor analize Parintele Zarko a aflat ca are cancer. I s-a recomandat de urgenta operatie, chimioterapie, radioterapie.&lt;br /&gt;&lt;br /&gt;In urma primei operatii si a chimioterapiei intensive tumoarea aflata, foarte periculos, langa aorta, a inceput sa creasca. Au oprit radioterapia. Tumora ar fi - zic doctorii - inoperabila. Inoperabila in Romania.&lt;br /&gt;Au incercat multe tratamente timp de 2 ani. Tratamentul natural a transformat tumora preexistenta in teratom - tumoare benigna prin definitie, insa dimensiunile ajunse la 30cm, impun operatia. Tratamentul chimio si radioterapic nu este potrivit pentru ce are el.&lt;br /&gt;&lt;br /&gt;Anul trecut, inainte de Craciun, au avut bucuria – Irina zice ca a fost un dar - sa fie hirotonit Diacon pe seama Manastirii Antim. Acum Zarko este Parintele Zarko si slujeste in fiecare dimineata si seara.&lt;br /&gt;&lt;br /&gt;In urma trimiterii dosarului medical la peste 20 de clinici din lume au primit 5 raspunsuri pozitive. Cu cateva zile in urma au primit din partea unei clinici din Viena vestea ca ei il pot opera si ca fost programat  la operatie pentru data de 1 februarie. Suma estimata pentru operatie: 20.000 euro. Pe care ei nu-i au.&lt;br /&gt;&lt;br /&gt;Suntem un grup de prieteni care l-au indragit pe Zarko si care vor sa-l ajute in incercarea prin care trece acum. S-au strans deja 6500 euro pentru el. Suntem convinsi ca daca ne unim, putem sa-l ajutam sa faca operatia.  Mai sunt 10 zile. Parintele Zarko si Irina trebuie sa se prezinte la clinica pe 30 ianuarie.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conturi donatii:&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;Titular cont: ZARKO MARKOVSKI&lt;br /&gt;&lt;br /&gt;Banca Transilvania&lt;br /&gt;(Swift code: BTRLRO22) (Sucursala: Lizeanu)&lt;br /&gt;EUR: RO77BTRL0440420AH92632XX&lt;br /&gt;RON: RO36BTRL0440120AH92632XX&lt;br /&gt;&lt;br /&gt;BCR (Swift code: RNCBROBU)&lt;br /&gt;RON: RO27RNCB0738106166930001&lt;br /&gt;EUR: RO82RNCB0078106166930001&lt;br /&gt;&lt;br /&gt;BRD (Swift code: BRDEROB)&lt;br /&gt;RON: RO08BRDE441SV11513384410&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-4981225498147564162?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/LGQEI3YDVCQ" height="1" width="1"/&gt;</content><link rel="related" href="http://pentrudiaconulzarko.blogspot.com/" title="Pentru Zarko" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/4981225498147564162/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2012/01/pentru-zarko.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4981225498147564162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4981225498147564162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/LGQEI3YDVCQ/pentru-zarko.html" title="Pentru Zarko" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Y4hMtvMQBDI/Txgoa93jhYI/AAAAAAAAAA8/kXeIGa8eetg/s72-c/Diaconie_18decembrrie11-9_500.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2012/01/pentru-zarko.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUARn48eip7ImA9WhRbFUg.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-1019697172055370243</id><published>2011-12-14T17:35:00.008+02:00</published><updated>2012-02-06T19:44:07.072+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T19:44:07.072+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="browsere" /><category scheme="http://www.blogger.com/atom/ns#" term="securitate" /><category scheme="http://www.blogger.com/atom/ns#" term="test" /><title>Unelte mici si utile</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zVc8lCCUaVeBdYC-pZhFDnq_mR0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zVc8lCCUaVeBdYC-pZhFDnq_mR0/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/zVc8lCCUaVeBdYC-pZhFDnq_mR0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zVc8lCCUaVeBdYC-pZhFDnq_mR0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Cateva unelte mici si interesante pentru testare securitare, teste de performanta si testarea compatibilitatii cu diverse browsere:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href="http://ws.apache.org/commons/tcpmon/"&gt;TCPMon&lt;/a&gt; - pentru monitorizarea traficului HTTP&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.soapui.org/"&gt;SoapUI&lt;/a&gt; - pentru testat WS (SOAP)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jmeter.apache.org/"&gt;JMeter&lt;/a&gt; - pentru teste de load&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project"&gt;Zed Attack Proxy&lt;/a&gt; - pentru identificarea problemelor de securitate&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project"&gt;WebScarab&lt;/a&gt; - pentru testarea problemelor de securitate&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.my-debugbar.com/wiki/IETester/HomePage"&gt;IETester&lt;/a&gt; - verificarea compatibilitatii cu diverse versiuni de IE&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/rest-client/"&gt;Rest Client&lt;/a&gt; - client pentru REST WS &lt;/li&gt;
&lt;li&gt;&lt;a href="http://seleniumhq.org/"&gt;Slenium IDE&lt;/a&gt; - inregistrare si rulare teste functionale&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-1019697172055370243?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/1CTd0YQzQfI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/1019697172055370243/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2011/12/unelte-mici-si-utile.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/1019697172055370243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/1019697172055370243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/1CTd0YQzQfI/unelte-mici-si-utile.html" title="Unelte mici si utile" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2011/12/unelte-mici-si-utile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CQXk8eSp7ImA9WhZaE0k.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-8986759150893513779</id><published>2011-06-07T21:37:00.038+03:00</published><updated>2011-06-29T15:19:20.771+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T15:19:20.771+03:00</app:edited><title>De ce agile?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/51Wyrks-D_VT4SXQo8rHhwK5yMs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/51Wyrks-D_VT4SXQo8rHhwK5yMs/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/51Wyrks-D_VT4SXQo8rHhwK5yMs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/51Wyrks-D_VT4SXQo8rHhwK5yMs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Dupa toti acesti ani de programare, &lt;a href="http://www.agilemanifesto.org/iso/ro/"&gt;Agile&lt;/a&gt; tinde sa fie pentru mine abordarea cea mai naturala pentru dezvoltarea de software. Unul din principiile agile nescrise ma incanta cel mai mult: echipe care se organizeaza singure (&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;ofera-le mediul de lucru si suportul de care au nevoie, si ai incredere ca-si vor face treaba&lt;/span&gt;). Asemanarea cu echipele sportive mi se pare foarte potrivita. Acolo pe teren toti membrii comunica si joaca - intradevar este o anumita organizare dar nimeni nu-i poate aseja intr-un plan prestabilit - nici nu s-ar putea din cauza dinamicii jocului. Exista intradevar un leader care este capitanul dar antrenorul ramane pe banca. Sau mai demult era si antrenor jucator. Aceasta pozitie de leader seamna in Scrum cu cea de Scrum master. O introducere in Scrum facuta chiar de &lt;a href="http://scrum.jeffsutherland.com/"&gt;JEFF SUTHERLAND&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/O7cA1q0XwhE" allowfullscreen="" frameborder="0" height="300" width="450"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Una din metodologiile primare de dezvoltare (vechiul stil) este waterfall (cascada). Modelul de dezvoltare waterfall bate in cuie fazele prin care trece proiectul (ca apa care cade intr-o cascada la vale si nu se mai poate intoarce): analiza, design, implementare, testare, instalare, mentenanta. Considera ca fiecare dintre aceste etape este ireversbila: se considera ca in faza de design e imposibil sa intervina greseli sau ca o cerinta de functionalitate nu se poate modifica. Totul este coordonat de un plan initial. Trebuie tinut cont de asemenea ca intreg acest ciclu de viata ireversibil tine la ordin de luni (poate chiar ani) pana cand se va face o prima livrare. Aceasta abordare este falsa deoarece practica demonstreaza ca greseli se fac oricand si ele trebuie sa apara cat mai devreme la suprafata (in saptamani si nu luni - ani).&lt;br /&gt;&lt;br /&gt;Solutia pentru problemele din waterfall sunt metodologiile iterative (si incrementale pentru ca functionalitatile implementate intr-o iteratie sunt facute end to end - IID) care incearca sa livreze software functional (eventual doar intern si nu extern) cu o anumita cadenta de timp (fixa sau variabila). In aceasta categorie intra &lt;a href="http://www.ibm.com/developerworks/rational/library/4626.html"&gt;UP (RUP)&lt;/a&gt; dar si metodologiile agile (Scrum, XP). Ce apropie UP (RUP)  de waterfall este &lt;span style="font-style: italic;"&gt;ceremonia &lt;/span&gt;necesara in procesul de dezvoltare: un set de documente care trebuiesc scrise (centrare pe documente), plan initial facut in faza de &lt;span style="font-style: italic;"&gt;inception&lt;/span&gt;, cerinte functionale nemodificabile dupa iteratiile in care se face analiza (sau mai grav fiecare faza (R)UP poate deveni un mic waterfall de cateva luni din cauza intarzierilor generate de neatingerea &lt;span style="font-style: italic;"&gt;scopului &lt;/span&gt;propus). Pentru &lt;a href="http://www.ibm.com/developerworks/rational/library/4626.html"&gt;detalii &lt;/a&gt;fazele RUP sunt urmatoarele:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Inception phase:&lt;/b&gt; Scope the project, define the business                  case.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Elaboration phase:&lt;/b&gt; Refine the requirements, establish                  an architecture, mitigate the most technical risk.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Construction phase:&lt;/b&gt; Complete the system up to a point                  where it can be deployed in limited context ("beta version").&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transition phase:&lt;/b&gt; Finish the product and reach product                  final release.&lt;/li&gt;&lt;/ol&gt;O practica proasta in metodologiile neagile (includem si UP si RUP in aceasta categorie) este constituirea de echipe pe componente (subsiteme) care lucreaza in paralel asteptand sa se integreze printr-o interfata comuna negociata in prealabil (exista ownership pe cod si deci codul nu  este partajat). Sau mai complicat cazul in care se lucreaza in paralel in diferite layere ale aplicatiei asteptandu-se o integrare finala. Faza finala de integrare a componentelor se poate dovedi mai costisitoare decat dezvoltarea componentei in sine. Dezvoltarea in paralel duce la WIP (in Lean = work in progress) pentru ca partile se vor dovedi folositoare doar la final, dupa procesul de integrare. Pana atunci sunt WIP deci nefolositoare si nu pot aduce nici un beneficiu (existand mereu riscul de a fi rescrise pentru a fi posibila integrarea).&lt;br /&gt;&lt;br /&gt;Impartirea pe componente  induce si alte probleme: aparitia de noi roluri in echipa (de fapt constituirea de noi echipe specializate). In acest sens firmele aleg sa-si formeze departamente specializate: DEV, QA, etc (visul oricarei companii este sa aiba un proces prin care sa livreze in masa software pe banda rulanta - proiecte multe = multe incasari). Vor aparea business analisti pentru analiza functionalitatilor, arhitecti pentru definirea interfetelor intre componente, release managers - cel care trebuie sa aiba grija de release-ul feature-lor. De asemenea o echipa de testare care asteapta inevitabil ca echipa de dezvoltare sa predea produsul in testare.&lt;br /&gt;&lt;br /&gt;Apare si rolul de project manager care trebuie sa gestioneze toate celelalte roluri si artefactele pe care acestea le produc. Trebuie sa faca un plan inital (care practica va demonstra ca se va schimba saptamanal) si sa incerce sa puna presiune pe toti ceilati oameni - mai mult sa-i tina ocupati decat sa-i faca productivi sau produsul mai bun. Acest lucru pentru ca alocarea de task-uri si estimarile initiale nu vor fi niciodata conforme cu realitatea iar viteza cu care se dezvolta componentele este imprevizibila. Se creaza un ciclu de viata pentru proiect iar rolul managerului este acela de a avea grija de livrabile si de procesul de hands off/hands on, un proces dificil (si considerat ireversibil de waterfall). Cel mai complicat rol cu project managerul este ca ei cred ca adevarul se poate ascunde dupa rapoarte si numere (exista in Lean un principiu numit Go See care scoate pe manager din birou sil trimite in linia intai a luptei).&lt;br /&gt;&lt;br /&gt;Iata o parere foarte interesanta despre rolul de &lt;a href="http://kenschwaber.wordpress.com/2011/04/24/agility-and-pmi/"&gt;project manager&lt;/a&gt;:&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;We  have found that the role of the project manager is counterproductive in  complex, creative work. The project manager’s thinking, as represented  by the project plan, constrains the creativity and intelligence of  everyone else on the project to that of the plan, rather than engaging  everyone’s intelligence to best solve the problems.&lt;/blockquote&gt;&lt;br /&gt;Orice rol in plus implica complexitate din perspectiva responsabilitatilor (nu toti sunt la fel de responsabili) + creste complexitatea comunicarii. De asemenea poate aparea problema unei teoretizari accentuate din partea unor roluri (PM, etc) - mai ales a celor care nu participa efectiv in dezvoltarea de zi cu zi a proiectului in partea lui cea mai vie care este codul. Toate aceste roluri si echipe dintr-un proiect pleaca de la idea falsa ca un om nu e capabil sa dezvolte end to end ci doar pe o mica bucatica de cod: adica componenta pe care o implementeza. Dar experienta arata ca exista oameni care pot sa faca singuri functionalitati end to end fara nici o problema - in fapt sunt oameni care fac de zeci de ani programare zi de zi. Cu toate ca nu se pune problema ca ei sa faca tot produsul - ei pot acoperi zone largi din proiect (intr-o echipa de fodbal nu e doar un singur jucator care alearga pe tot terenul).&lt;br /&gt;&lt;br /&gt;Solutia ar fi crearea unei echipe totale (asa cum sunt echipele agile - Scrum de exemplu) - care sa stie sa implementeze orice functionalitate a apliactiei &lt;span style="font-style: italic;"&gt;end to end&lt;/span&gt; si nu in izolare. Echipa trebuie sa colaboreze si sa se integreze  zi de zi (exista toate unelte pentru integrare continua - &lt;span style="font-style: italic;"&gt;VCS, CI  server&lt;/span&gt;). Echipa trebuie sa comunice in fiecare zi: &lt;span style="font-style: italic;"&gt;stand up meetings&lt;/span&gt;. Toate skil-urile enuntate mai sus ar trebui sa se regaseasca in aceasta noua echipa capabila sa implementeze colaborand o intreaga functionalitate end to end (de la cerinte, design, implementare si pana la testare). Poate ca echipa seamana in acest caz cu o grupa de  lupta din armata in care pe langa cei care manuiesc pusca exista si un lunetist si un aruncator de grenade si un mitralior (in fapt puterea de lupta a grupei sta in cooperarea tuturor armelor; de fapt se poate zice ca in programare se duce o lupta cu complexitatea).&lt;br /&gt;&lt;br /&gt;Exista si o solutie extrema (si neagila) pe care am observat-o la unele companii, aceea de echipe de soft chirurgicale in care exista doar un rol important si anume cel de chirurg. Pe langa el stau cei care ii pregatesc instrumentele (de obicei juniori fara experienta), dar el este singurul care stie sa opereze - stie sa lucreze end to end. Au fost astfel de echipe in experienta mea - cu siguranta am ramas impresionat de chirurg, dar nu de echipa in sine - practic fara aceata persoana de baza echipa nu e nimic. Partea negativa in aceasta abordare este imposibilitatea refolosirii unei echipe si in alte proiecte (fara chirurg) - si mentalitatea gresita care impiedica o colaborare adevarata intre membrii echipei (cu toate ca se poate respecta si in acest caz principiul: &lt;span style="font-style: italic;"&gt;intregul este mai mare decat suma partilor&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Dar cei care programeaza de ani de zile (si nu au ales sa faca management dupa 2-3 ani de programare - un flagel al companiilor de soft de pe la noi)  cred ca simt ca sansele de a pierde bataliile cu metodologii neagile (waterfall, UP, RUP) sunt foarte mari. Cred ca toata zarva din jurul dezvoltarii agile (XP, Scrum) si lean (Kanban) are un sens. E o misare in randul dezvoltatorilor si nu a managerilor - mai mult un simtamant al celor care fac programare zi cu zi. Iarasi nu e o miscare impotriva project managementului clasic, e doar o constatare ca acesta este neproductiv si trebuie cautate alte cai alternative.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.extremeprogramming.org/"&gt;XP&lt;/a&gt; (agile) pare a fi mai preocupata de cod si unelte pentru productivitate&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=O7cA1q0XwhE&amp;amp;feature=related"&gt;Scrum&lt;/a&gt; (agile) pare a fi mai interesata de dezvoltare in echipa&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Kanban"&gt;Kanban&lt;/a&gt; (lean)  pare a fi orientata mai mult pe produsul final&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-8986759150893513779?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/iGQaw6bx_RA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/8986759150893513779/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2011/06/de-ce-agile.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/8986759150893513779?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/8986759150893513779?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/iGQaw6bx_RA/de-ce-agile.html" title="De ce agile?" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/O7cA1q0XwhE/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2011/06/de-ce-agile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINQXs6cSp7ImA9WhZQEkQ.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-7819825259160861150</id><published>2011-04-20T14:05:00.002+03:00</published><updated>2011-04-20T14:06:30.519+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-20T14:06:30.519+03:00</app:edited><title>Cismigiu - primavara</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lOLNzqW--lXY98xoZAxwI3QT3C4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lOLNzqW--lXY98xoZAxwI3QT3C4/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/lOLNzqW--lXY98xoZAxwI3QT3C4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lOLNzqW--lXY98xoZAxwI3QT3C4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Prin Cismigiu intr-o pauza da masa:&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;noautoplay=1&amp;hl=en_GB&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5597618424339566529%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCJOol6WS7rar5QE%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-7819825259160861150?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/7SXn2y7c650" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/7819825259160861150/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2011/04/cismigiu-primavara.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/7819825259160861150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/7819825259160861150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/7SXn2y7c650/cismigiu-primavara.html" title="Cismigiu - primavara" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2011/04/cismigiu-primavara.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUARXs7eCp7ImA9WhZSGUU.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-450374428003374775</id><published>2011-04-05T10:01:00.005+03:00</published><updated>2011-04-05T10:24:04.500+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T10:24:04.500+03:00</app:edited><title>Fabrica de soft</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xxYLNKU1JSNAEWt0KhFK8jpXTD8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxYLNKU1JSNAEWt0KhFK8jpXTD8/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/xxYLNKU1JSNAEWt0KhFK8jpXTD8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxYLNKU1JSNAEWt0KhFK8jpXTD8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Chiar daca nu are legatura cu programarea (sau poate ca da - sa ne gandim ca am construi o fabrica de soft) o sa sumarizez cateva impresii pastrate in niste notite dintr-o vizita facuta intr-o fabrica de masini (undeva in anii trecuti cand lucram pe un poiect din industria da constructii masini):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;in primul rand este impresia de integrator pe care mi-a dat-o firma care producea masini: componentele sunt produse de diversi (chiar si in Romania chiar daca fabrica nu era in tara); de asemenea robotii si celelalte unelte sunt produsi de diversi; firma producatoare de masini pune in schimb sigla ei pe masini pentru ca ea le poduce si are know-how-ul sa faca asta&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;aproape toata partea initiala este robotizata si robotii de acolo sunt in totalitate: &lt;/span&gt;&lt;span&gt;KUKA (de pe kuka.com poti cumpara si tu un robot care sa-ti automatizeze un proces); fiecare robot poate face un set de operatii; sunt programati sa lucreze intr-un anumit fel, un acelasi robot putand sa faca mai multe lucruri daca este programat corespunzator si i se aplica o unealta corespunzatoare (poate sa sudeza dar si sa vopseasca spre exemplu)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;caroseria si partea de motor cu axul masinii se fac separat (in paralel) si se unesc la un anumit momet care se vede foarte clar pe bada de lucru - rezulta viteza de executie&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;robotii nu sunt fixati in pamant - e o suprafata plana pe care se aseaza robotii fixati in niste stative; probabil in felul asta fabrica se poate muta foarte usor in alta parte&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;banda de asamblare finala (partea manuala) se poate accelera sau nu pentru a accelera sau nu ritmul de productie&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;masinile sunt deja comandate si asamblarea optiunilor cerute se face conform cerintelor pe parcursul fabricarii&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;deabia de la un moment dat masina capata identitate prin inscrierea  numarului pe sasiu - probabil clientul primeste o confirmare efectiva (daca e o problema cu masina in procesul de productie dupa scrierea numarului de sasiu - masina este practic aruncata)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;o masina se fabrica de la 0 in 4 zile&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;cladirile fabricii sunt legate prin coridoare pentru transport rapid - eventual benzi de transport&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt; partea initiala de fabricare a masinii este aproape total automatizata; partea finala este aproape total manuala (pe banda care ruleaza, muncitorul ''blue worker' se urca in masina si excuta un set de operatii; cand masina ajunge la un anumit marcaj, muncitorul iese pentru a permite altuia sa intre si sa faca alt set de operatii; muncitorii se rotesc intre ei pentru a nu face doar un set de operatii)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-450374428003374775?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/PW0ib6Uapaw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/450374428003374775/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2011/04/fabrica-de-soft.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/450374428003374775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/450374428003374775?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/PW0ib6Uapaw/fabrica-de-soft.html" title="Fabrica de soft" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2011/04/fabrica-de-soft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08MQnw_eyp7ImA9Wx9XF04.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-4571521408102234834</id><published>2010-12-23T13:43:00.006+02:00</published><updated>2011-01-11T09:44:43.243+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-11T09:44:43.243+02:00</app:edited><title>Manifest pentru Dezvoltarea de Software Agil</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_Gy49kA1EojAM7ZEmeStwkI9B-k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_Gy49kA1EojAM7ZEmeStwkI9B-k/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/_Gy49kA1EojAM7ZEmeStwkI9B-k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_Gy49kA1EojAM7ZEmeStwkI9B-k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Times New Roman","serif";  mso-ascii-font-family:"Times New Roman";  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:"Times New Roman";  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Traducerea mea pentru (&lt;a href="http://www.agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;color:black;"  &gt;Manifest pentru Dezvoltarea Agila de Soft&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Noi facem cunoscute cai mai bune de a dezvolta soft practicand dezvoltarea si ajutand pe altii sa o faca. Prin aceasta munca noi am ajuns la urmatoarele valori:&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="line-height: 115%; font-weight: bold;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Indivizi si interactiuni&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt; in defavoarea proceselor si uneltelor&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%; font-weight: bold;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Software care functioneaza&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt; in defavoarea documentatiilor atotcuprinzatoare&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%; font-weight: bold;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Colaborarea cu clientii&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt; in defavoarea negocierii contractelor&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%; font-weight: bold;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Raspuns la schimbare&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt; in defavoarea urmaririi unui plan&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;        &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Chiar daca este valoare in partea dreapta a frazei, pentru noi partea stanga a frazei este mult mai valoroasa&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;color:black;"  &gt;Principiile din spatele manifestului&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;color:black;"  &gt;Noi urmam aceste principii:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Prioritatea nostra de baza este aceea de a satisface clientul prin livrarea de soft util cat mai devreme si in mod neintrerupt.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Schimbarile cerintelor sunt binevenite, chiar si tarziu in procesul de dezvoltare. Procesele Agile exlploateaza schimbarea in avantajul competitional al clientului.&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Livrarea frecventa de soft functional, incepand de la cateva saptamani pana la cateva luni, cu preferinta la un interval de timp mai scurt.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Cei care cunosc domeniul aplicatiei  si dezvoltarorii trebuie sa lucreze impreuna pe tot parcursul proiectul&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Proiectele se construiesc in jurul indivizilor motivate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Ofera-le mediul de lucru si suportul de care au nevoie, si ai incredere ca-si vor face treaba.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Cea mai eficenta si efectiva metoda de a transmite informatiile spre si in inteirorul unei echipe de dezvoltare este conversatia fata catre fata.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Softul care functioneaza este principala unitate de masura pentru progres.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Procesele agile promoveaza dezvoltarea sustinuta.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Sponsorii, dezvoltatorii si utilizatorii trebuie sa fie capabili sa mentina un ritm constant pe o perioada nedefinita de timp.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Atentia continua la excelenta tehnica si un design bun dau valoare agilitatii.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Simplitatea--arta de a maximiza cantitatea de munca care nu e nevoie sa fie facuta--este esentiala.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;Cele mai bune arhitecturi, cerinte, si cel mai bun design sunt generate din echipele care se organizeaza singure&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:130%;color:black;"   &gt;La intervale regulate, echipele reflecteaza cum pot deveni eficiente, apoi isi inbunatatesc si isi ajusteaza corespunzator comportamentul.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;                            &lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-4571521408102234834?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/w6BslcXEv_g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/4571521408102234834/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/12/manifest-pentru-dezvoltarea-de-software.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4571521408102234834?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4571521408102234834?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/w6BslcXEv_g/manifest-pentru-dezvoltarea-de-software.html" title="Manifest pentru Dezvoltarea de Software Agil" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/12/manifest-pentru-dezvoltarea-de-software.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FSXk7eyp7ImA9Wx9RF00.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-6516455705410577611</id><published>2010-12-18T22:18:00.004+02:00</published><updated>2010-12-18T22:40:18.703+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-18T22:40:18.703+02:00</app:edited><title>Slobozia - Craciun 2010</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/efEmew2Ozo1rZmvTZ8jtuiuTiN8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efEmew2Ozo1rZmvTZ8jtuiuTiN8/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/efEmew2Ozo1rZmvTZ8jtuiuTiN8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efEmew2Ozo1rZmvTZ8jtuiuTiN8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Astazi am reusit sa ajungem in Giurgiu la aşezământul social „Sfinţii Mihail şi Gavril” din judeţul Giurgiu condus de preotul Valentin Ştefan. Mai este o saptamana pana la Craciun, deci inca mai este timp pentru firme sa-si indrepte cadourile spre acest asezamant. Urmatiti anuntul de mai jos. Un alt &lt;a href="http://isabellelorelai.wordpress.com/2010/02/11/parintele-stefan-valentin-despre-toti-copiii-domnului-care-stau-in-frig/"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;noautoplay=1&amp;amp;hl=en_GB&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5552116120589152321%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer" width="400" height="267"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;„&lt;span style="font-weight: bold;"&gt;O problemă stringentă cu care se confruntă copiii și mamele de la Asociația Pro Vita ”Sf. Brâncoveanu” filiala Giurgiu este frigul. De Sf. Spiridon a nins, și tot de atunci au început micuții să răcească. Lemnele Asociației sunt puține, în special cele uscate, căci de acelea este nevoie. Facem apel către toți cei cu inimă bună, către cei care ar putea dona lemne (uscate) sau reșouri, calorifere electrice sau orice altceva ce ar putea duce la obținerea unui pic de căldură pe timpul acestei ierni care se anunță a fi geroasă. Vă rog să ne iertaţi pentru că apelăm la bunăvoința dumneavoastră. Dumnezeu să vă răsplătească pentru dragostea pe care o arătaţi faţă de copiii și mamele Asociației, iar noi vă mulţumim anticipat.&lt;/span&gt; ” Cu mulţumiri şi dragoste duhovnicească, Preot Ştefan Valentin.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dacă puteţi şi vreţi să ajutaţi:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Telefon Părintele Valentin: 0720 906 635, 0762 656 077&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Asociatia Pro Vita „Sfântul Brâncoveanu” Filiala Giurgiu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CUI (Cod unic de înregistrare): 23247302&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conturi deschise la BCR – Giurgiu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RON: RO39 RNCB 0145 0983 4964 0001&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EURO: RO12RNCB0145098349640002&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cod SWIFT: RNCBROBU GR0 (ultimul caracter este cifra zero)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Blogul PRO VITA Giurgiu: &lt;a href="http://provitagiurgiu.wordpress.com/"&gt;http://provitagiurgiu.wordpress.com&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-6516455705410577611?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/eNy8iH0Ihns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/6516455705410577611/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/12/slobozia-craciun-2010.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/6516455705410577611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/6516455705410577611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/eNy8iH0Ihns/slobozia-craciun-2010.html" title="Slobozia - Craciun 2010" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/12/slobozia-craciun-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYMQ3c9fip7ImA9Wx9RFUs.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-5712794000226274024</id><published>2010-12-16T11:13:00.006+02:00</published><updated>2010-12-17T08:43:02.966+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-17T08:43:02.966+02:00</app:edited><title>LENOVO ThinkPad T410</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MTw-2r1DCY1OAxfWrVHNpAqoOsc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MTw-2r1DCY1OAxfWrVHNpAqoOsc/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/MTw-2r1DCY1OAxfWrVHNpAqoOsc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MTw-2r1DCY1OAxfWrVHNpAqoOsc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;In sfarsit aseara am pornit pentru prima oara laptopul mult visat Lenovo T410. Scorul obtinut este cel care urmeaza (este coborat in jos de placa grafica Intel Graphics Media Accelerator 5700MHD - AMT). &lt;span class="tableTitle"&gt;Configuratia ThinkPad T410 laptop with Automatic Switchable Graphics&lt;/span&gt;  ofererea si posibilitatea de a avea o placa grafica  NVIDIA NVS 3100m Optimus Graphics 512MB DDR3 with AMT):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZRhrImOKb64/TQr1MlkMnuI/AAAAAAAAFmo/vviQOjGXGRQ/s1600/T410.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 151px;" src="http://3.bp.blogspot.com/_ZRhrImOKb64/TQr1MlkMnuI/AAAAAAAAFmo/vviQOjGXGRQ/s400/T410.PNG" alt="" id="BLOGGER_PHOTO_ID_5551519087278726882" border="0" /&gt;&lt;/a&gt;Configuratia este urmatoarea:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Genuine Windows 7 Professional 64 bit&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Intel Core i5-560M @ 2.66GHz (3.2Ghz Turbo), 1066MHz system bus, 3MB L2 cache&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Intel Hyper-threading Technology, Intel Turbo Boost Technology&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;4GB PC3-8500 1066MHz DDR3&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Intel Graphics Media Accelerator HD - AMT&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;14.1" WXGA (1280 x 800) TFT w/ LED backlight&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;2.0 Megapixel Camera&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;320GB 7200rpm SATA HDD&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Thinkpad 11 b/g/n WiFi&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;5-in-1 card reader and modem (MMC, Memory Stick, Memory Stick Pro, SD, SDHC)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Ultranav (TrackPoint and Touchpad)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;DVD Recordable 8x Max Dual Layer, Ultrabay Slim SATA&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;6-cell Lithium Ion battery&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:small;"&gt;Genuine Lenovo Warranty 1 Year Depot (International Warranty 2516)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;             Primele impresii (in mare tin de experienta avuta in trecut cu un T60):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tastatura excelenta&lt;/li&gt;&lt;li&gt;Camera Web excelenta (chiar si cu putina lumina)&lt;/li&gt;&lt;li&gt;Mute si desablare sonor marcate prin led-uri&lt;/li&gt;&lt;li&gt;Windows 7 e ok (sunt dezorientat putin pentru ca de ani de zile lucrez cu Windows XP)&lt;/li&gt;&lt;li&gt;Start/stop pentru sistemul de operare e rapid dar nu foarte rapid&lt;/li&gt;&lt;li&gt;Pentru instalare sistemului este o partitie de disc speciala din care se pot crea disk-urile de boot (calculatorul a venit fara nici un CD/DVD)&lt;/li&gt;&lt;li&gt;Think Advantage si toate unelte Lenovo sunt updatate fata de T60 (mult mai clare)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eranul e wide putin prea scund (am senzatia ca nu incape in inaltime prea multa informatie) - folosesc un monitor extern pentru a compensa asta&lt;/li&gt;&lt;/ul&gt;Am folosit &lt;a href="http://ninite.com/"&gt;ninite.com&lt;/a&gt; pentru a instala bulk mai multe soft-uri. Foarte ingenios!&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-5712794000226274024?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/6hHnAJAjT3U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/5712794000226274024/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/12/t410.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5712794000226274024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5712794000226274024?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/6hHnAJAjT3U/t410.html" title="LENOVO ThinkPad T410" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_ZRhrImOKb64/TQr1MlkMnuI/AAAAAAAAFmo/vviQOjGXGRQ/s72-c/T410.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/12/t410.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYNSHs_cSp7ImA9Wx9QEE8.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-6710126606300946320</id><published>2010-12-07T21:47:00.006+02:00</published><updated>2010-12-22T15:56:39.549+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-22T15:56:39.549+02:00</app:edited><title>JAPAN 2010</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7N-poijZtC-4fXNai8sPMgSmZjE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7N-poijZtC-4fXNai8sPMgSmZjE/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/7N-poijZtC-4fXNai8sPMgSmZjE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7N-poijZtC-4fXNai8sPMgSmZjE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;noautoplay=1&amp;amp;hl=en_GB&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5548024728272667697%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCIiQ8_vdj6mRAw%26hl%3Den_GB" width="400" height="267"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ce m-a surprins in Japonia (fara a incerca sa compar cu Romania pentru ca nu se poate compara - sa zicem ca in matematica unde poti sa nu introduci o relatie de ordine intr-o multime pentru ca elementele nu se pot practic compara dupa nici un criteriu):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;principala senzatie cu care am ramas este aceea de siguranta si neagresivitate; chair daca e posibil sa fie doar o salvare a aparentelor (cred ca interiorul lor este mai agitat decat pare) totusi in alte parti ale lumii se poate simti o senzatie de agresivitate care in Japonia nu exista&lt;br /&gt;&lt;/li&gt;&lt;li&gt;in trenurile lor rapide (Shinkansen) de fiecare data cand intra sau iese din vagon, controlorul sau persoana care vinde mancare saluta facand o plecaciune  (chiar daca eram doar 2 prsoane in vagon); nu e intamplator, toti fac asta ca si cum ar fi in "job description"-ul lor&lt;/li&gt;&lt;li&gt;de cate ori am intrebat persoane de pe strada (nu erau functionari si nu aveau nici o obligatie in acest sens fata de noi) despre o locatie despre care nu stiam unde este si ne-a insotit 500 de metri pana a fost sigura ca am juns (ni s-a intamplat ca cineva sa fuga cu noi ca sa prindem trenul)&lt;/li&gt;&lt;li&gt;functionarii chiar daca nu stiu engleza (cei din gara de exemplu) fac orice sa-ti rezolve cazul&lt;/li&gt;&lt;li&gt;am avut supriza sa vad intr-o gara (deoarece conductorul nu stia engleza ne-a aratat un set de carduri in engleza cu datele fiecarui tren) un card pentru un tren pe care vroiam sa-l luam la unul din impegatii de miscare si am avut surpriza sa vad ca erau trecute nu doar minutele ci si secundele la care trebuia sa vina (ceva in genul 10:12:30); asa a si venit, la secunda&lt;/li&gt;&lt;li&gt;mancarea traditionala pare a fi foarte sanatoasa (in general fructe de mare) dar total nepotrivita pentru gusturile mele (am avut supriza ca pestele sa fie extrem de dulce - ca si cum l-ar fi facut cu zahar)&lt;/li&gt;&lt;li&gt;la intrarea in restaurantele traditionale (in care se mananca stand in genunchi pe jos) trebuie sa lasi incaltamintea la intrare (am avut supriza sa vad in Tokyo printre zgarie nori, incaltari lasate la intrarea in cladire - banui ca acolo ra un restaurant)&lt;/li&gt;&lt;li&gt;de cateva ori am fost intrebati de oameni in varsta de unde suntem - am avut surpriza ca una din persoane sa fi fost in Romaina - Transilvania/Brasov - avea o imresie foarte buna despre Romania&lt;/li&gt;&lt;li&gt;cafeau lor este foarte, foarte slaba (solutia a fost StarBuks care se gasesc cam peste tot in gari si metrou)&lt;/li&gt;&lt;li&gt;trenuri lor locale (si nu numai) opresc la un loc bine stabilit - locul unde o sa fie usile se stie in prealabil si este marcat; dimineata si nu numai ai supriza sa vezi cum oamenii stau in ordine pe 2 randuri la intrararile vagoaneleor, se dau la o parte sa iasa oamenii printre ei apoi se repliaza sa intre (e destul de inspaimantator sa vezi cum stau randuri, randuri asteptand trenul)&lt;/li&gt;&lt;li&gt;in trenurile locale (metrou) se motaie -  foarte multi oameni par obositi, se folosesc telefoanele (jocuri dar oamnii nu vorbesc la telefon in public ci doar ptesupun ca dau mail sau SMS)&lt;/li&gt;&lt;li&gt;am vazut in suprmarket-uri oameni maturi care citesc reviste de benzi desionate - am crezut initial ca sunt pentru copii dar am inteles ca orice poate fi scris asa (de fapt in librarii jumatate din carti sunt in scrierea lor si jumatate cu benzi desenate - probabil se suprapune intr-u fel cu modul lor de a gandi si scrie in concepte)&lt;/li&gt;&lt;li&gt;sunt foarte multe automade de bauturi reci si calde: ceai, cafea, sucuri (unele ceaiuri sunt foarte bunel, cafeau ori slaba ori fara zahar)&lt;/li&gt;&lt;li&gt;toamna sunt peisaje deosebite in gradinile lor: artar Japonez (cu frunze mici si rosii - se pare ca solul lor e important pentru culoare), ginkgo biloba cu frunze galbene si fructe urat mirositoare, etc; gradini foarte frumoase cum nu am mai vazut&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-6710126606300946320?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/9EOWp1W0fEA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/6710126606300946320/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/12/japan-2010.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/6710126606300946320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/6710126606300946320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/9EOWp1W0fEA/japan-2010.html" title="JAPAN 2010" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/12/japan-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUGQnw6fyp7ImA9Wx5WEU4.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-9052724982903122630</id><published>2010-09-21T18:24:00.006+03:00</published><updated>2010-09-22T08:43:43.217+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-22T08:43:43.217+03:00</app:edited><title>IBM Lenovo ThinkPad T60</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mAAw4-dOeG1TV5tLGyJhCRp0ZDw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mAAw4-dOeG1TV5tLGyJhCRp0ZDw/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/mAAw4-dOeG1TV5tLGyJhCRp0ZDw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mAAw4-dOeG1TV5tLGyJhCRp0ZDw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Chiar daca sunt aproape total dedicat dezvoltarii de soft, trebuie sa recunosc ca in final tot la o masina fizica ajungem si deci este foarte important unde dezvoltam aplicatiile nostre (in fapt si masina pe care lucram influenteaza productivitatea noastra - pentru ca aplicatia Java ruleaza intr-o masina virtual care este instalata peste un sistem de operare care sta instalat in final pe o masina fizica). Incerc in acest post sa fac un review pentru cel mai bun calculator cu care am avut ocazia sa lucrez IBM(Lenovo) ThinkPad T60.&lt;br /&gt;&lt;br /&gt;De-a lungul timplui am avut ocazia sa lucrez pe o multitudine de sisteme desktop/laptop atat acasa cat si la serviciu. Trebuie sa recunosc ca nimic nu m-a impresionat precum ultima masina pe care am avut-o in dotare: ThinkPad T60. Pe ea apareau atat siglele Lenovo cat si IBM – se pare ca dupa de IBM a externalizat partea de hardware spre Lenova le-a mai permis sa foloseasca logo-ul IBM pentru cativa ani (acum toate masinile mai noi din seria ThinkPad au doar sigla Lenovo). ThinkPad T60 este o masina pe care am simtit-o cu adevarat a indeplini majoritatea pretentiilor mele ca functionalitate si design in ceea ce fac in viata de zi cu zi – dezvoltarea de aplicatii. . Cred ca foarte greu m-ar putea convinge cinava ca un alt laptop este mai bun – pur si simplu am simtit ca este o masina foarte, foarte bine facuta.&lt;br /&gt;&lt;br /&gt;Clasa T este clasa de laptopuri ThinkPad pentru categoria business – se poate simti asta din liniile drepte ale carcasei fara a pune la socoteala performantele interne ale masinii. Este foarte compact fara nici un fel de infloritura in partea de design - asa cum au din nefericire mai toate calculatoarele destinate utilizatorilor obisnuiti. T60 are o tastatura perfecta – de negasit la o alta masina, functioneaza fara sa produca zgomot aproape deloc, are o carcasa plata si cu linii drepte si fara inflexiuni la atingere si foarte rezistenta, baterie extinsa tine foarte mult, are balamale din otel care functioneaza impecabil – acestea sant cateva din caracteristicile externe ale masinii.&lt;br /&gt;&lt;br /&gt;Referitor la performantele interne ale masinii – pare a fi facut pentru programare, multimedia sau orice implica procesare. Cateva dotari pe care le poate avea un T60. Procesor: Intel Mobile Core 2 Duo T5600 2x1.83GHz 2MB L2 cache 64biti. Eu am avut la dispozitie  3GB DDR2 PC6400 800MHz (permite 4M memorie). Perfomante la randare video prin placa video: ATi Mobility Radeon X1400 512MB vRam. Celerometer: hardul este monitorizat de un dispozitiv special - accelerometer - care, in functie de pozitia laptopului si de miscarile sesizate, opreste temporar hard disk-ul pentru a il proteja pe acesta (si implicit informatia de pe el) de eventualele socuri mecanice.&lt;br /&gt;&lt;br /&gt;Uitandu-ma pe magazinul firmei producatoare am observant ca Lenovo promoveaza in present alte laptopuri din clasa T: &lt;a href="http://shop.lenovo.com/us/notebooks/thinkpad/t-series"&gt;T410 si T510&lt;/a&gt;. Nu stiu daca se mai pot achizitional T60/T61 noi -  cele vechi (second hand) sunt pana in 500$ pe ebay.com si alte site-uri. Ce nu-mi place la T410 este hub-ul de 3 porturi USB care ii da un aspect neplacut pe latura stanga. La T510 nu-mi place restrangerea tastaturii pentru a face loc difuzoarelor in lateral (este mult mai pronuntata decat la T410). De asemenea in review-uri se pare ca sunt problem cu tastatuta la ambele modele – se produc inflexiuni ale carcasei la atingerea tastelor.&lt;br /&gt;&lt;br /&gt;Ma voi referi la cateva aspecte exterioare (bune si mai putin bune) pe care le-am observat in ultimii doi ani la T60 (nu sunt neaparat cele mai importante dar pe mine m-au incantat/dezamagit):&lt;br /&gt;&lt;br /&gt;Avantaje:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ThinkVantage – foarte usor de folosit in administrarea masinii – detectarea retelelor wireless e foarte intuitiva (accesss connection)&lt;/li&gt;&lt;li&gt;Butoanele multimedia foarte bine asezate si foarte intuitive&lt;/li&gt;&lt;li&gt;Fara zgomot la racire – caracteristica aceasta nu am mai intalnit-o la alte sisteme&lt;/li&gt;&lt;li&gt;ThinkLight – luminarea tastaturii pe timp de noapte&lt;/li&gt;&lt;li&gt;Se deschide perfect la 180 de grade&lt;/li&gt;&lt;/ul&gt;Dezavantaje:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; touchpad and UltraNav buttons sunt putin prea jos si pot fi atinse din greseala daca nu lucrezi la masa&lt;/li&gt;&lt;/ul&gt;Lucruri interesante:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Water resistant – foarte interesant a fost un caz in care unul din colegii mei a varsat suc si si-a stricat tastatura (sucul nu e ca apa)&lt;/li&gt;&lt;li&gt;Luminozitate crescuta – am avut ocazia sa-l compare cu un T61 si surprinzator T61 nu permitea acelasi nivel de luminozitate (alti colegi aveau T61 in dotare)&lt;/li&gt;&lt;/ul&gt;Prezentare video:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="400" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CsrOZisBNug?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/CsrOZisBNug?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-9052724982903122630?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/vrG5LvaiC9Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/9052724982903122630/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/09/ibm-lenovo-thinkpad-t60.html#comment-form" title="1 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/9052724982903122630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/9052724982903122630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/vrG5LvaiC9Y/ibm-lenovo-thinkpad-t60.html" title="IBM Lenovo ThinkPad T60" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/09/ibm-lenovo-thinkpad-t60.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEGQHcycCp7ImA9Wx5XFUg.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-1600928799839057738</id><published>2010-09-15T16:33:00.003+03:00</published><updated>2010-09-15T16:33:41.998+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T16:33:41.998+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Grecia" /><category scheme="http://www.blogger.com/atom/ns#" term="Patmos" /><title>Patmos</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0iILtWUTmlg8GWaB-aSkK5prz6o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0iILtWUTmlg8GWaB-aSkK5prz6o/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/0iILtWUTmlg8GWaB-aSkK5prz6o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0iILtWUTmlg8GWaB-aSkK5prz6o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;captions=1&amp;noautoplay=1&amp;hl=en_GB&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5510840785546704929%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-1600928799839057738?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/URezUuzR7wI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/1600928799839057738/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/09/patmos.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/1600928799839057738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/1600928799839057738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/URezUuzR7wI/patmos.html" title="Patmos" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/09/patmos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04MSH04fip7ImA9Wx9RFkw.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-4942450056079491990</id><published>2010-09-15T14:12:00.007+03:00</published><updated>2010-12-17T21:59:49.336+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-17T21:59:49.336+02:00</app:edited><title>Unelte utile</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CIPsT67_7qqJoM4VkD6pLBbRF2g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CIPsT67_7qqJoM4VkD6pLBbRF2g/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/CIPsT67_7qqJoM4VkD6pLBbRF2g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CIPsT67_7qqJoM4VkD6pLBbRF2g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;O lista de unelte care le consider utile (majoritatea sunt gratuite)  in orice mediu de lucru - la final am pus cateva specifice programarii (in Java). Am sa incerc sa intretin lista in timp.&lt;br /&gt;&lt;br /&gt;Acest post este un test - editarea lui s-a facut printr-un mai trimis la o adresa de email - o facilitate a &lt;span style="font-style: italic;"&gt;blogger.com&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://notepad-plus-plus.org/"&gt;Notepad ++&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ghisler.com/"&gt;Total Commander&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://get.adobe.com/reader/"&gt;Adobe Acrobat Reader&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.7-zip.org/"&gt;7Zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vmware.com/products/player/"&gt;WMWare Player&lt;/a&gt; (+ &lt;a href="http://www.thoughtpolice.co.uk/vmware/"&gt;some images&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mozilla-europe.org/en/firefox/"&gt;Firefox&lt;/a&gt; ( + &lt;a href="http://getfirebug.com/"&gt;FireBug plugin&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://kdiff3.sourceforge.net/"&gt;KDiff&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Beyound Compare (not free)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.klipfolio.com/"&gt;Klipfolio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/zscreen/"&gt;ZScreen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Yahoo Messenger&lt;/li&gt;&lt;li&gt;WebEx (NetMeeting)&lt;/li&gt;&lt;li&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;Turtoise SVN&lt;/a&gt;(&lt;a href="http://www.tortoisecvs.org/"&gt;CVS&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/"&gt;Putty&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://winscp.net/eng/index.php"&gt;WinSCP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.my-debugbar.com/wiki/IETester/HomePage"&gt;IETester&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eclipse&lt;/li&gt;&lt;li&gt;Hermes JMS&lt;/li&gt;&lt;li&gt;SoapUI&lt;/li&gt;&lt;li&gt;Navicat (MySQL)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;--&lt;br /&gt;Cristian Olaru&lt;br /&gt;weblog: &lt;a href="http://olaru.blogspot.com/"&gt;http://olaru.blogspot.com&lt;/a&gt;&lt;br /&gt;mobile: 0743163039&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-4942450056079491990?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/fnwp19G2pac" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/4942450056079491990/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/09/unelte-utile.html#comment-form" title="2 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4942450056079491990?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4942450056079491990?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/fnwp19G2pac/unelte-utile.html" title="Unelte utile" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/09/unelte-utile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MBRn4_eip7ImA9Wx5XFUk.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-5410227958957076686</id><published>2010-09-14T16:27:00.003+03:00</published><updated>2010-09-15T12:04:17.042+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T12:04:17.042+03:00</app:edited><title>Clean Code</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_AMR3_an6iVsiGB02YNnqYxQLCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_AMR3_an6iVsiGB02YNnqYxQLCs/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/_AMR3_an6iVsiGB02YNnqYxQLCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_AMR3_an6iVsiGB02YNnqYxQLCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://vig-fp.pearsoned.co.uk/bigcovers/0132350882.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 210px; height: 276px;" src="http://vig-fp.pearsoned.co.uk/bigcovers/0132350882.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Clean Code&lt;/a&gt; este o carte scrisa de &lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Robert C. Martin&lt;/a&gt; - care incearca sa surprinda experienta lui in scrierea de cod, experienta care se intinde pe cateva decenii  (in carte se remarca cum regulile s-au schimbat de-a lungul timpului odata cu evolutia limbajelor de programare). Am incercat sa citesc cartea (versiunea fizica) dar nu am avut timp decat pentru primele 5 capitole si sa le rasfoiesc pe celelate in una din saptamanile de vacanta din acest an - am remarcat cu ocazia asta cat de putin timp avem sa citim in mod clasic.&lt;br /&gt;&lt;br /&gt;In aceasta carte totul este de bun simt si ne poate salva de cosmarul debugingului continuu - cateodata ma gandesc ca printre programatori sunt unuii (cei care fac mentenanta)  care nu fac altceva decat sa caute in gunoaie (codul vechi). Din cate imi dau seama a aplica regulile din &lt;span style="font-style: italic;"&gt;Clean Code&lt;/span&gt; impreuna cu &lt;span style="font-style: italic;"&gt;TDD&lt;/span&gt; (Test Driven Development) reprezinta cea mai buna metoda de a creste calitetea interna a produselor software - a le face valoroase pe termen lung din perspectiva dezvoltarii ulterioare/mentenantei.&lt;br /&gt;&lt;br /&gt;Clean code pleaca de la urmatoarea premiza: cu siguranta codul pe care il scriem astazi va fi citit de catre cineva (toti speram ca nu noi) in viitor. De acea claritatea lui este foarte importanta. A fi usor de citit implica si a fi usor de modificat. Daca dezvoltarea unui proiect dureaza pana intr-un an, metinera lui (mentenance) va dura mai multi ani. Aceasta implica fixare de bug-uri, adaugare de mici feature-uri etc, care implica interactiuni cu codul respectiv. Desigur se poate face orice in debugger unde se poate vedea absolut orice. Dar este mult mai complicat decat a lucra cu un cod clar care exprima de la sine pentru ce a fost scris - intr-un fel exprima businessul implementat.&lt;br /&gt;&lt;br /&gt;Primul accent pus in carte este pe numele pe care le vom da claselor, metodelor, campurilor care compun aplicatiile noastre. Ele trebuie sa exprime de la sine scopul si contextul in care sunt folosite. Nu trebuie sa ne zgarcim cu lungimea pe care o va avea numele lor - cel mai important este ca ele sa fie cat se poate de expresive si clare. Codul trebuie schimbat si modificat pana indeplineste criteriile de calitate stabilite de noi - nu trebuie sa ne fie frica sa intervenim de oricate ori este nevoie (este o practica in metodologiile de agile de a partaja codul intre toti membrii echipei si a permite tuturor sa il modifice cu incredere)&lt;br /&gt;&lt;br /&gt;Surprinzator sau nu in capitolul dedicat comentariilor suntem sfatuiti sa nu le folosim deloc - doar in anumite situatii. Idea de a pune un comentariu care sa dubleze codul comentat nu este o idee buna - la o urmatoare interventie asupra codului comentariul poate deveni desincronizat fata de cod. Acest lucru nu poate introduce decat confuzie - codul trebuie sa exprime de la sine ceea ce implementeaza. Pentru aceasta trebuie sa exprime intentia noastra in asa maniera incat comentariile sa fie de prisos.&lt;br /&gt;&lt;br /&gt;Un aspet foarte important este modul in care scriem metodele (care dau functionalitatea claselor). Autorul ne propune metafora unui ziar (newspaper) in care stirile nu sunt prezentate toate in intregime pe prima pagina. Pe prima pagina ni se prezinta titlul si un rezumat urmand o trimitere la urmatoarea pagina unde este intreg continutul. Trebuie sa distingem astfel intre nivelurile de abstractizare dintr-o metoda si sa nu le amestecam. Asa vom avea pentru fiecare functonalitate implementata un arbore de metode care abstractizeaza pe niveluri diferite functionalitatea. Metodele care se refera la un acelari aspect de domeniu vor fi pastrate impreuna - intr-o aceasi unitate de compilare. Int-o metoda trebuie sa faca un singur lucru - daca vrem sa facem si altceva o putem face intr-o alta metoda pe care o vom apele.&lt;br /&gt;&lt;br /&gt;Testele unitare/integrare trebuie sa ghideze dezvoltarea - in fapt codul pe care il scriem o sa fie mai ingrijit daca o sa facem teste pentru el pentru ca este dificil sa testam un cod complicat (e greu de exemplu sa introducem multe mock objects daca avem prea multe dependinte in metoda noastra, e greu sa facem prea multe assert-uri daca metoda noastra face mai multe lucruri). Testele trebuie sa fie punctul de executie pentru orice functionalitate nou pa care o introducem in aplicatie (nu trebuie sa rulam toata aplicatia pentru asta si sa folosim logging &lt;si&gt; pentru a vedea ca ce am scris merge). Teoretic deployerea aplicatiei ar trebui sa o facem foarte rar, la final - dupa ce am dezvoltat local ghidati de teste unitare/integrare. De asemenea sugereaza sa folosim teste (unitare/integrare) si pentru a ne acomoda cu noile librarii pe care vrem sa le introducem in proiect.&lt;br /&gt;&lt;br /&gt;Clean code este un coplement la idea de stil de codare sau cea de conventii de nume:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;stil de codare - reprezinta un set consistent de reguli de sintaxa care trebuie respectate de intreaga echipa pentru coerenta codului. Se cunosc o serie de astfel de codari - Eclipse, &lt;a href="http://www.oracle.com/technetwork/java/codeconvtoc-136057.html"&gt;Sun(Oracle)&lt;/a&gt;, Apache; ele pot fi setate la nivel de IDE pentru a oferi coerenta in cod&lt;/li&gt;&lt;li&gt;conventii de nume - un set de cosistent de reguli pentru denumirile care se folosesc intr-o aplicatie pentru clase, metode, campuri - spre exemplu sufixarea anumitor categorii de clase (XyzService, XyzAction, XyzDAO)&lt;/li&gt;&lt;/ul&gt;In carte sunt enumerate si unele principii stiute de programare carora treuie sa le acordam atentia cuvenita:  &lt;a href="http://en.wikipedia.org/wiki/Open/closed_principle" jquery1284540096750="9" modo="true"&gt;Open Closed Principle&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" jquery1284540096750="10"&gt;Single Responsibility Principle&lt;/a&gt; si &lt;a href="http://www.dcmanges.com/blog/37" jquery1284540096750="11" modo="false"&gt;Law  of Demeter.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-5410227958957076686?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/4nlGbn6Kqog" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/5410227958957076686/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/09/clean-code.html#comment-form" title="1 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5410227958957076686?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5410227958957076686?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/4nlGbn6Kqog/clean-code.html" title="Clean Code" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/09/clean-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYHSX89fCp7ImA9Wx5QEkg.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-7361957266852883298</id><published>2010-08-31T15:32:00.000+03:00</published><updated>2010-08-31T15:35:38.164+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T15:35:38.164+03:00</app:edited><title>Londra</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WRo1lJu24kTiCufJb4MFMa__3Lk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WRo1lJu24kTiCufJb4MFMa__3Lk/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/WRo1lJu24kTiCufJb4MFMa__3Lk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WRo1lJu24kTiCufJb4MFMa__3Lk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;captions=1&amp;noautoplay=1&amp;hl=en_GB&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5497872442961920273%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-7361957266852883298?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/-ocPeAPPMec" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/7361957266852883298/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/08/londra.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/7361957266852883298?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/7361957266852883298?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/-ocPeAPPMec/londra.html" title="Londra" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/08/londra.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cAQHk4eyp7ImA9Wx5QEkk.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-4695619662259522351</id><published>2010-08-31T11:14:00.005+03:00</published><updated>2010-08-31T11:57:21.733+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T11:57:21.733+03:00</app:edited><title>Multiple themes and skins</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JHrOruuKlG4qGcGzPx0GivQDo6w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JHrOruuKlG4qGcGzPx0GivQDo6w/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/JHrOruuKlG4qGcGzPx0GivQDo6w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JHrOruuKlG4qGcGzPx0GivQDo6w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Este prima oara cand lucrez la o aplicatie Web care trebuie sa aiba mai multe look and feel-uri care pot fi schimbate in runtime (vom numi aceasta drept schimbarea temei aplicatie). Exista tehnologii web care permit schimbarea stilului (nu a a temei) in runtime – JSF, librarii de componente JS gen JQuery UI. Si in partea de clienti grei exista astfel de posibilitati: Swing LAF (o &lt;a href="http://www.javootoo.com/"&gt;lista a lor&lt;/a&gt;), sau mai noul Eclipse RCP 4 – &lt;a href="http://download.eclipse.org/e4/sdk/drops/R-4.0-201007271520/eclipse-news.html"&gt;look and feel dat chiar prin CSS&lt;/a&gt;. Dar eu vreau sa schimb tot layout-ul aplicatiei cu toate resursele implicate – css, javascript, resurse gen imagini, bannere, etc.&lt;br /&gt;&lt;br /&gt;Pentru mine definitiile pentru tema si skin arata mai mult in felul in care se definesc acestea in portlets (partal theme, portlet skin):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tema – modificarile se produc la nivel de layout si stil (chiar daca stilul este dat de CSS si poate influenta foarte fin si layout-ul totusi o tema implica o schimbare dramatica a modului in care arata site-ul)&lt;/li&gt;&lt;li&gt;Skin – modificarile au loc la nivel de stil (a se vedea &lt;a href="http://jqueryui.com/themeroller/#themeGallery"&gt;JQuery UI&lt;/a&gt; pentru exemplu)&lt;/li&gt;&lt;/ul&gt;Desigur notiunile de skin si theme sun folosite cu intelesuri diferite in tehnologii diferite. Un exemplu revelator pentru ce inseamna fiecare pentru mine este acest &lt;a href="http://www.woothemes.com/demo/?t=10"&gt;site cu teme pentru WordPress&lt;/a&gt; in care se poate face distinctia clara dintre cele doua. Intr-un fel tema poate fi modificata de catre administratorul site-ului deoarece implica modificari profunde in look and feel. Skin-ul poate fi modificat de user si pastrat de-a lungul sesiunii si dupa. Ambele schimbari trebuie sa se poata face in runtime – din panoul de administrare a aplicatiei.&lt;br /&gt;&lt;br /&gt;Partea de prezentare pentru aplicatia in cauza este facuta cu Struts 2, Sitemesh (este valabil si pentru alt framework web gen Spring MVC sau alt layout framework gen Tiles). Deoarece tema implica modificari de layout in cazul temei concluzia la care am ajuns este: sa folosesc facilitatea asta de Struts 2 numita &lt;a href="http://struts.apache.org/2.1.8.1/docs/wildcard-mappings.html"&gt;wildcards&lt;/a&gt;. Astfel &lt;span style="font-style: italic;"&gt;applicationConfiguration*&lt;/span&gt; va pinta spre &lt;span style="font-style: italic;"&gt;/WEB-INF/pages/admin/applicationConfiguration{1}.jsp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In form o sa se foloseasca ceva de genul (theme va fi tinuta la nivel de applicatie – Application Context (Servlet context in servlets)): &lt;span style="font-style: italic;"&gt;applicationConfiguration${theme}.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pentru fiecare tema se va crea un director in aplicatie sub un singur director parinte numit &lt;span style="font-weight: bold;"&gt;/themes&lt;/span&gt;. Structura unei teme ar arata ca aici cum e descrisa in &lt;a href="http://www.opensymphony.com/sitemesh/decorators.html"&gt;Sitemesh&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;/decorators    Directory containing all decorator files (e.g. main.jsp, printable.jsp).&lt;/li&gt;&lt;li&gt;/includes    Directory containing all files to be included into other files (e.g. header.jsp, footer.jsp, copyright.jsp).&lt;/li&gt;&lt;li&gt;/images    Directory containing all images (e.g. background.gif, logo.gif).&lt;/li&gt;&lt;li&gt;/styles    Directory containing all .CSS styles (e.g. ie4.css, ns4.css).&lt;/li&gt;&lt;li&gt;/scripts    Directory containing all scripts (JavaScript, VBScript files).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Vom avea cate un decorator de SiteMesh diferit pentru fiecare thema (care da layout-ul de baza pentru thema respectiva). Se refolosesc Action-urile de Struts pentru toate temele si in acest sens ele trebuie sa fie scrise o singura data si foarte bine definite - nu mai trebuie rescris nimic la nivelul lor in functie de tema - dar trebuie sa fie consistente pentru toate temele. Toate resursele grafice  vor fi sub tema respectiva. Se vor duplica jsp-urile aplicatiei (se folosesc in fiecare resurse specifice temei) - dar pentru  theme identice ca layout vor fi asemanatoare si deci se poate presupune ca vor putea fi refolosite.&lt;br /&gt;&lt;br /&gt;Deci implementarea este dependenta de Struts 2 si de Sitemesh adica de tehnologiile folosite in aplicatie. Intrebarea este daca exista ceva mai generic (poate independent de framework-uri) sau mai bun. Din ce imi dau seama nu – doar la nivel de stil prin introducerea de CSS-uri diferite – care pot sa contina si mici chestiuni de layout dar nu diferente mari. Sunt curios cum s-ar putea face acest lucru la nivel de JSF – probabil entry point-ul ar fi la nivel de &lt;a href="https://facelets.dev.java.net%20/"&gt;Facelets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anumite greutati in introducerea temelor multiple pentru o aplicatie apar in rescrierea de URL-uri (UrlRewrite), caching de pagini (OSCache) si securitate (ACEGI). O problema este introducerea unor variabile la nivel de aplicatie (numele temei, locatia temei in FileSystem) care trebuie folosite si repetate peste tot la nivel de JSP-uri.&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-4695619662259522351?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/RaWkZqFQAuo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/4695619662259522351/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/08/multiple-themes-and-skins.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4695619662259522351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4695619662259522351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/RaWkZqFQAuo/multiple-themes-and-skins.html" title="Multiple themes and skins" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/08/multiple-themes-and-skins.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcGSH8-eSp7ImA9Wx5XFUs.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-3587478738704203698</id><published>2010-07-25T19:31:00.003+03:00</published><updated>2010-09-15T18:20:29.151+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T18:20:29.151+03:00</app:edited><title>De vara</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b_MV0cJ6z-Ovt2GFl4NfjpmW2zM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b_MV0cJ6z-Ovt2GFl4NfjpmW2zM/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/b_MV0cJ6z-Ovt2GFl4NfjpmW2zM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b_MV0cJ6z-Ovt2GFl4NfjpmW2zM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Bicicleta de care nu m-am despartit niciodata in calartoriile cu masina din acesta vara(cred ca ar incapea doua in portbagaj daca m-as stradui putin). Ceva probleme doar in unele parcuri din Bucuresti unde biciclistii nu sunt foarte doriti. Pliabila, usoara si destul de scumpa.&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.ro/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.ro&amp;amp;captions=1&amp;amp;noautoplay=1&amp;amp;hl=en_GB&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.ro%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5497881336672669281%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCOC1yJ22xOPgHA%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer" width="400" height="267"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-3587478738704203698?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/PcqfMjE4d2g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/3587478738704203698/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/07/de-vara.html#comment-form" title="4 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/3587478738704203698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/3587478738704203698?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/PcqfMjE4d2g/de-vara.html" title="De vara" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/07/de-vara.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EFSXs4fSp7ImA9WxFaFU8.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-8567230252076287489</id><published>2010-07-16T13:16:00.010+03:00</published><updated>2010-07-19T09:40:18.535+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-19T09:40:18.535+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DDD" /><category scheme="http://www.blogger.com/atom/ns#" term="Domain" /><category scheme="http://www.blogger.com/atom/ns#" term="Eric Evans" /><title>Domain Driven Design</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5Ui3GTa2QTBDmRn3h03wROYRHZY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Ui3GTa2QTBDmRn3h03wROYRHZY/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/5Ui3GTa2QTBDmRn3h03wROYRHZY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Ui3GTa2QTBDmRn3h03wROYRHZY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://domaindrivendesign.org/sites/default/files/images/cover_small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 125px; height: 165px;" src="http://domaindrivendesign.org/sites/default/files/images/cover_small.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span lang="EN-GB"&gt;Sunt &lt;a href="http://martinfowler.com/eaaCatalog/"&gt;3 posibile patternuri&lt;/a&gt; care ofera metode de a modela domeniul aplicatiei (&lt;b&gt;Domain Logic Patterns&lt;/b&gt;) pe care Martin Fowler le prezinta in cartea sa &lt;cite&gt;&lt;a href="http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420"&gt;Patterns of Enterprise Application Architecture&lt;/a&gt; (P of EAA)&lt;/cite&gt;. Nu intamplator el pleaca de la domeniu in enumerarea patternutilor enterprise – practic domeniul trebuie sa reprezinte inima aplicatiei si acolo trebuie sa fie amplasat businessul aplicatiei – practic cea mai importanta parte a aplicatiei.&lt;span&gt;  &lt;/span&gt;Ele sunt dupa cum urmeaza:&lt;/span&gt;    &lt;ul&gt;&lt;li&gt;&lt;span lang="EN-GB"&gt;Transaction Script – domeniul este alcatuit din 2-3 grupari de clase – Services (numite de unii si Managers) care ascunde logica aplicatiei si DAO care ascunde persistenta (eventual facuta cu ORM); eventual un set additional de clase de Business care ofera calculabilitate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-GB"&gt;Table Module – bazat pe RowSet modificabil – mapare componenta la tabela – specific .NET&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-GB"&gt;Domain Model – un domeniu bogat de obiecte care implementeaza efectiv business-ul aplicatiei si reprezinta cu adevarat inima aplicatiei&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;        &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Cazul cel mai intalnit in J(2)EE este Transaction Script – se gasesc foarte multe aplicatii scrises in acest fel – aproape toate. Interfata face apeluri intr-un layer de servicii la nivelul carora se deschid tranzactii spre serverul de baze de date sau cozi de mesaje, etc. Business-ul se afla de obicei in servicii (care apeleaza clase DAO pentru persistenta) sau se mai creaza un pachet de obiecte BO care sa faca calculabilitate. Sunt foarte multe startere si exemple pe aceasta tema. Startere: Play, Roo, SpringFuse, Appfuse, (some MDA generators – Andromda, M2Spring, Sculptor) etc&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Table Module se intalneste mai ales in cazul in care interfata e component based gen Swing (desktop) sau chiar JSF (Web – dar nu request/response based). Cazul in care o componenta infasoara un ResultSet care infasoara la randul lui o tabela in baza de date. ResultSet-ul este un cursor spre tabala care permite modificarea ei in runtime – daca este UPDATABLE. Si astfel de exemple se pot gasi – in general IDE-urile permit crearea de astfel de aplicatii prin drag and drop: Matisse in NetBeans (pentru Swing), JDeveloper (pentru ADF), etc. Sincer eu am experimentat acest pattern din primele zile ca dezvoltator folosind JBuilder – care avea un foarte bun system de dezvoltare pentru Swing – in care aduceai cu drag and drop componenta in fereastra. Structurile tabelare (grid) se pretau la a comunica cu o componenta nevizuala care infasura o tabela in baza de date (continea un cursor updatabil spre BD).&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Cel mai rar intalnit pattern pentru a capta domeniul aplicatiei – sincer nu am avut niciodata sansa sa vad pana anul acesta o astfel de aplicatie - este Domain Model. Aici problema s-ar pune cam asa: intai construiesti un domeniu pentru aplicatia ta (un rich domain in sensul ca obiectele nu contin doar stare ci si functionalitate modeland in totalitate businessul abordat) apoi te gandesti cum ii asiguri o infrasctructura – adica aspectele tehnice vin la urma: persistenta, concurenta, securitate, tranzactionalitate, de ce nu si prezentare, etc. Nu e vorba doar de un domeniu sarac alcatuit spre exemplu prin maperi spre tabelele din baza de date – care sunt clase doar cu stare si fara functionalitati – asa cum se intampla in Transaction Script de obicei (o favoare pe care o ofera ORM-urile). Este vorba de un model complet pentru business testabil cu un framework de testare, neavand o parte de prezentare – eventual se poate folosi in faza initiala de dezvoltare o intefata de tip consola.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Teoretic (din perspective tehnologiilor existente pe piata), acesta a fost visul pentru EJB – de a feri dezvoltatorul de aspecte de infrastructura si a-l lasa se se concentreze pe business – dar tot ce s-a putut reusi cu EJB a fost sa se expuna un layer de servicii. Deci EJB-ul mai ales cum era initial cu Service Locator si fara Dependency Injection era parca facut pentru Transaction Script. Fara persistenta obiectuala cu ORM-uri (entity bean-urile initiale au fost un esec si deci initial se scria SQL native) si fara dependency injection (se punea mai mult problema pe a expune un serviciu pe care il localizai in runtime) cam greu sa te gandesti la altceva decat Transaction Script. Spring, Hibernate si mai nou EJB 3 (CDI + JPA) care le imita ofera un teren mai placut pentru o abordare a aplicatiilor la nivel tehnologic cu un domeniu bogat.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;&lt;a href="http://domaindrivendesign.org/"&gt;Domain Driven Design&lt;/a&gt; ofera o altfel de alternative dezvoltarii de aplicatii – care seamana oarecum cu ceea ce am invatat in facultate despre modelarea obiectuala dar nu coincide deloc cu ce am gasit in industrie dupa (a nu se intelege ca cred in academic). Ideea de a construe un model obiectual pentru businessul pe care il rezolvam. Aceasta problema ar fi fara iesire daca Eric Evans nu ar oferi in cartea lui o serie de patternuri pentru construirea unui astfel de domeniu – si chiar o arhitectura standard pentru o astfel de aplicatiei – si chiar o schita pentru un process de dezvoltare care impreuna diminueaza complexitatea unei astfel de abordari. Arhirtectura oferita este tot una stratificata (layered architecture) dar acomodata cu un domeniu bogat care trebuie creat initial si o infrastructura pentru el care vine ulterior.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Chiar daca pentru mine inca aceasta abordare reprezinta doar o curiozitate – sunt infectat cu stilul de programare actual din industrie bazat pe Transaction Script – trebuie sa recunosc dezavantajele abordarii curente. Surprinzator, este foarte dificila mentenanta – pentru ca logica este intradevar raspandita peste tot in aplicatie – de la prezentare pana in baza de date. Poate nu mententa in sine – pentru ca structura stratificata usureaza mentenanta. Dar cel mai sigur Transaction Script ingreuneaza intelegerea businesului abordat – direct din cod. Pentru ca, dezvoltator de Java (= total obiectual) fiind ar trebui sa fie foarte natural sa inteleg un model – care modeleaza o realitate decat un cod care este conceput sa transporte date din interfata spre baza de date si invers si amesteca businessul peste tot (ca sa nu mai spunem ca tendinta e de a-l duplica).&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Pe site-un DDD exista o aplicatie demo care poate fi folosita drept model. Este unul dintre cele mai bune lucruri care se puteau face pentru a promova DDD. In fapt este prima aplicatie scrisa in acest fel pe care am gasit-o si care pentru oricine vrea sa implementeze DDD poate fi un punct de start. Foloseste framework-uri moderne pentru infrastructura (+ build). Foloseste pattern-urile din cartea lui&lt;span&gt;  &lt;/span&gt;Erik Evens. Este conform arhitecturii din carte. Procesul de dezvoltare nu este ilustrat – putem doar presupune ca s-a pornit prima oara cu un model. &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Cred ca reprezinta o greseala sa abordam problema DDD partial, plecand de la un Transaction Script modificat, doar introducand diverse grupari de obiecte care par a imbogati businessul aplicatiei. O abordare radicala in modul de dezvoltare trebuie folosita pentru a face intradevar DDD. Pentru ca acum &lt;span style="font-style: italic;"&gt;usecase-urile&lt;/span&gt; din &lt;span style="font-style: italic;"&gt;cerintele utilizator&lt;/span&gt; se bazeaza pe descrierea interfetei si interactiunea utilizatorului cu interfata – deci accentual cade pe interfata = pornim de la interfata in dezvoltarea aplicatiei. Altii modeleaza mai intai baza de date – care releva intradevar entitatile aplicatiei&lt;span&gt;  &lt;/span&gt;- dar nu inima ei – in fapt abordeaza o simpla problema de infrastructura = persistenta. Dar ce ar fi sa pornim cu ceea ce e intradevar important – inima aplicatiei si sa o modelam obiectual. Oare suntem in stare sa facem un salt atat de mare in gandirea noastra?&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;PS: De curand am achizitionat cartea lui Eric Evans numita &lt;a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1238687848&amp;amp;sr=8-1"&gt;Domain-Driven Design: Tackling Complexity in the Heart of Software&lt;/a&gt; si acest articol este o censecinta a acestui lucru.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-8567230252076287489?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/d0ukVa5X5Mc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/8567230252076287489/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/07/domain-driven-design.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/8567230252076287489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/8567230252076287489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/d0ukVa5X5Mc/domain-driven-design.html" title="Domain Driven Design" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/07/domain-driven-design.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IMRHkycCp7ImA9WxFRGU0.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-3857828895419680044</id><published>2010-05-03T19:51:00.002+03:00</published><updated>2010-05-03T19:53:05.798+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-03T19:53:05.798+03:00</app:edited><title>Pluginabilitate in aplicatiile web | JavaRomania</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S9_uz1QfgI1EEuLGAdRkSJElJZo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S9_uz1QfgI1EEuLGAdRkSJElJZo/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/S9_uz1QfgI1EEuLGAdRkSJElJZo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S9_uz1QfgI1EEuLGAdRkSJElJZo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Introducere&lt;/h2&gt;&lt;div&gt;Unul  din lucrurile interesante pe care le-am observat in timp este  pluginabilitatea aplicatiilor. Aceasta inseamna adaugarea de  functionalitati noi in mod dinamic in runtime prin activarea/incarcarea  unor pluginuri. Este cazul multor soft-uri deja consacrate dintre care  cel mai cunoscut pentru dezvoltatorii de Java este Eclipse. Eclipse este  in sine un conglomerat de plugin-uri care de la o versine la alta se  bazeaza pe OSGi. Un alt exeplu pentru dezvoltatrii de Java este Hudson: &lt;a href="http://wiki.hudson-ci.org/display/HUDSON/Plugin+tutorial"&gt;http://wiki.hudson-ci.org/display/HUDSON/Plugin+tutorial&lt;/a&gt;.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;In  cazul aplicatiilor Web facute in Java exista deja cateva exemple de  pluginabilitate. Unul din ele ar fi Jira si in general produdsele de la  Atlassian care se bucura de asa ceva (a se vedea aici informatii despre  sistemul lor de plugin-uri: &lt;a href="http://confluence.atlassian.com/display/DEVNET/How+to+Build+an+Atlassian+Plugin"&gt;http://confluence.atlassian.com/display/DEVNET/How+to+Build+an+Atlassian+Plugin&lt;/a&gt;).  Aplicatiile din portofoliul companiei Atlassian permit crearea de  plugin-uri de catre terte persoane prin care se imbogatesc  functionalitatile aplicatiilor de baza.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;In Java  solutia clasica pentru pluginabilitate este OSGi (&lt;a href="http://www.osgi.org/"&gt;www.osgi.org&lt;/a&gt;) care reprezinta un  standardul incontestabil pe acest domeniu. OSGi permite crearea de  bundle-uri (care sunt de fapt jar-uri cu un manifest bine definit) care  reprezinta plugin-urile care se pot instala in mod dinamic. In mod  dinamic in runtime se rezolva dependentele bundle-ului de alte  bundle-uri si de asemenea poate inregistra dinamic servicii intr-un  registru de servicii.&lt;/div&gt;&lt;h2&gt;Cazul meu&lt;/h2&gt;&lt;div&gt;Eu sunt interesat in  pluginabilitate la nivel de interfata Web pentru o aplicatie deja  scrisa. In sensul ca vreau ca prin activare/deactivare de pluginuri sa  apara/dispara functionalitati din interfata Web (mai specific fragmente  din meniul lateral al aplicatiei care cuprind diverse statistici despre  articolele publicate).&lt;/div&gt;&lt;div&gt;  &lt;div id="ux8n" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_81fq7g37fh_b" style="height: auto; width: 252px;" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; In  acest sens am nevoie de o consola de administrare a pluginurilor:&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div id="v.eh" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_78gcwbk5dd_b" style="height: 164px; width: 457px;" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Spre exemplu  prin activarea pluginului &lt;i&gt;Balaur&lt;/i&gt; va aparea urmatorul (ultimului)  fragment in menu:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div id="r4o7" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_82cwg9k2g7_b" style="height: auto; width: 323px;" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;h2&gt;Resurse&lt;/h2&gt;&lt;div&gt;Exista  mai multe implementari de OSGi: Equinox, Felix, &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Pentru  a integra integra pluginabilitate in aplicatia mea am folosit Equinox  drept implementare de OSGi embedat in aplicatia mea deja facuta  (aplicatia de baza poarta numele de HOST application).  Am ales Equinox  deoarece pune la dispozitie un bridge - un servlet care este ridicat in  runtime din host application si toate call-urile (HTTP requests) peste  path-ul servit de acest servlet sunt redirectate spre  servletii/JSP-urile din bundleurile OSGi. O aplicatie web exemplu pentru  cum se embedeaza Equinox intr-un container de servlets se gaseste aici:  &lt;a href="http://www.eclipse.org/equinox/server/http_in_container.php"&gt;http://www.eclipse.org/equinox/server/http_in_container.php&lt;/a&gt;.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Deci  trebuie remarcat faptul ca sub bundle-urile de Equinox se pot  inregistra servlet-uri si JSP-uri ca sub o aplicatie web obisnuita -  declararea lor se face programatic dar se poate si declarativ folosind  extensii intr-un fisier plugin.xml. De asemenea exista suport de JSTL +  el. Prezint o lista a bundle-urilor necesare de pe equinox.org:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Equinox  bridge: &lt;a href="http://www.eclipse.org/equinox/server/http_in_container.php"&gt;http://www.eclipse.org/equinox/server/http_in_container.php&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;i&gt;.&lt;/i&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;org.eclipse.equinox.servletbridge.http&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Hooks  back into the servlet bridge and proxies requests through to the  servlet container to provide an OSGi Http Service.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;org.eclipse.equinox.http.servlet&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Provides  the HttpServiceServlet used by http.servletbridge that when initialized  registers an OSGi Http Service.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;[optional]  org.eclipse.equinox.http.registry&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Provides servlet, resource,  and httpcontext extension points based on an OSGi HttpService&lt;/i&gt;&lt;/li&gt;&lt;li&gt; &lt;b&gt;org.eclipse.equinox.servletbridge&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Launches  the framework and provides a place for the framework to hook back into  the servlet container.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;JSP suport:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;org.eclipse.equinox.jsp.jasper  (Bundle)&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Provides an OSGi friendly JSPServlet based on the  use of the Jasper 2 compiler and runtime.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;org.eclipse.equinox.jsp.jasper.registry  (Bundle)&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Provides a JSPFactory that allows JSP usage with the  org.eclipse.equinox.http.registry.servlets extension-point&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;JSTL  suport: &lt;a href="http://sourceforge.net/projects/sse-examples/files/sse-examples/Examples/org.eclipse.equinox.jsp.jstl-proj.zip/download"&gt;http://sourceforge.net/projects/sse-examples/files/sse-examples/Examples/org.eclipse.equinox.jsp.jstl-proj.zip/download&lt;/a&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;div&gt;Lista  completa a plugin-urilor incluzand si cele 2 plugin-uri custom este  aceasta:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="qunm" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_853k9685fw_b" style="height: 223px; width: 431px;" /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;Ca o curiozitate am instalat si un plugin de  Felix care este o consola web pentru gestionarea pluginurilor din  container - in mod surprinzator chiar daca este un bundle de Felix si nu  de Equinox a mers din prima incercare. Consola de administrare o puteti  vedea aici:&lt;/div&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div id="lp3v" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_86gpc7w9hf_b" style="height: 347px; width: 445px;" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Dezvoltare plugin-uri&lt;/h2&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;Desigur  pentru a testa sistemul am creat 2 plugin-uri custom folosind Eclipse  IDE. Un articol interesant despre cum se dezvolta plugin-uri de OSGi  este aici: &lt;a href="http://www.vogella.de/articles/OSGi/article.html"&gt;http://www.vogella.de/articles/OSGi/article.html&lt;/a&gt;.  Eclipse are o perspectiva aparte pentru dezvoltarea de plugin-uri (in  principiu plugin-uri de Eclipse care au definite niste extensii peste  OSGi). Se pot folosi drept model exemplele de pe equinox.org. Cele 2  plugin-uri construide mine sunt:&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div id="jy8g" style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfp3nm6q_87hq5rfrdn_b" style="height: auto; width: 328px;" /&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;div&gt;Primul plugin  (com.integrationpath.mengine.console) este folosit pentru a afisa in  host application lista de plugin-uri existente in aplicatie  (/com.integrationpath.mengine.console/web/consoleAsync.jsp), status-ul  lor si posibilitatea de activare/deactivare. De asemenea expune  informatii (/com.integrationpath.mengine.console/web/plugins.jsp) despre  plugin-urile active si locatia unde expun ele fragmentul ce trebuie  integrat in meniu (via JSON). In host application in meniul lateral  (sidebar) se vor agrega toate aceste fragmente folossind JQuery.&lt;/div&gt;&lt;h2&gt;Integrare&lt;/h2&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Cea  mai mare provocare este incampatibilitatea intre OSGi si oricare server  de aplicatii existent. Cea mai buna idee e sa rescrii aplicatia conform  OSGi dar in cazul meu aplicatia host este deja scrisa si deployata ca  war intr-un container de servlets. Containerul OSGi care este embedat in  aplicatia host este startat de aceasta si ruleaza in acelasi JVM, dar  definitiile claselor sunt gestionate de classloade-re diferite  (lucrurile sunt si mai complexe pentru ca la nivel de fiecare bundle  exista un class loader separat prin modul de constructie OSGi). Desigur  se pune problema comunicarii intre HOST application si bundle-urile din  containerul OSGi (de fapt in ambele sensuri) deoarece bundle-urile  trebuie sa prezinte functionaitati care au treaba cu buisinessul  aplicatiei de baza.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Prima incercare a fost de a  exporta pachetele de Spring dispre host app spre OSGi si a accesa web  application contex-ul de Spring din host application sub OSGi. Fara  success. O ultima solutie a ramas expunerea functionalitatilor din host  application ca Web Service (am preferat JSON) si consumarea lor in  bundle-urile de OSGi.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-3857828895419680044?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/mILRQ-_Ut0M" height="1" width="1"/&gt;</content><link rel="related" href="http://www.javaromania.com/mengine/content_Pluginabilitate-in-aplicatiile-web_108.xhtml" title="Pluginabilitate in aplicatiile web | JavaRomania" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/3857828895419680044/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/05/pluginabilitate-in-aplicatiile-web.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/3857828895419680044?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/3857828895419680044?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/mILRQ-_Ut0M/pluginabilitate-in-aplicatiile-web.html" title="Pluginabilitate in aplicatiile web | JavaRomania" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/05/pluginabilitate-in-aplicatiile-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADQ389eyp7ImA9WxBaEkk.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-2616076371237157469</id><published>2010-03-22T10:28:00.002+02:00</published><updated>2010-03-22T10:32:52.163+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-22T10:32:52.163+02:00</app:edited><title>Optimizarea performantei unei aplicatii Web</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_2fUEXdrvph1AqWlr24EckOSP9o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_2fUEXdrvph1AqWlr24EckOSP9o/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/_2fUEXdrvph1AqWlr24EckOSP9o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_2fUEXdrvph1AqWlr24EckOSP9o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Descriu in continuare o serie de unelte (biblioteci Java si tool-uri) folosite in optimizarea performantei pentru o aplicatie Web. Aplicatia are un spatiu limitat de memorie pentru a rula (&lt; 64 M); dupa cateva zile aplicatia cade - Out of memory; aplicatia se incarca greu in browser.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Posibile probleme&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. problema: entitatile sunt folosite si in prezentare si sunt incarcate cu date; solutia: de folosit fetching in mapari - lazy loading pentru colectii in general&lt;br /&gt;&lt;br /&gt;In mod implicit prin generare, maparile JPA contin lazy la nivelul colectiilor&lt;br /&gt;&lt;br /&gt;2. problema: pe sesiune se pun inutil obiecte; solutie: sa se foloseasca scopul potrivit; daca sunt pe sesiune deja nu se mai pun&lt;br /&gt;&lt;br /&gt;La nivel de session ma intreb mai intai daca sub atributul dat exista ceva (!=null); daca da nu fac nimic, daca nu pun valoare sub atribut&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Unelte folosite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0); font-weight: bold;"&gt;Glassbox - evidentierea problemelor din runtime&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Un tool util in urmarirea aplicatiei in runtime si determinarea punctelor ei slabe in ceea ce priveste performanta. Se instalaeaza in acelasi app server cu aplicatia care se vrea testata si ofera o consola in care sunt logate problemele de performanta care apar. Ofera sugestii pentru rezolvarea lor - destul de utile. Este o aplicatie utila care evidentiaza corect problemele dar nu poate inlocui un profiler.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0); font-weight: bold;"&gt;YSlow - optimizarea paginilor Web&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O unealta care concretizeaza experienta acumulata de Yahoo in optimizarea paginilor web. Este un plugin de Firefox care sta alaturi de FireBug si arata ce bune practici sunt incalcate in paginile aplicatiei tale. In general recomandarile sunt: sa se minimizeze numarul de call-uri HTTP prin concatenarea de resurse: javascript, css, introducerea unor atribute in headerul HTTP pentru a se face cache la nivel de proxy, etc. Ofera chiar tool-uri care te pot ajuta in fixarea acestor proble. A fosst nevoie si deun filtro pentru a modifica Expire date pentru resursele statice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;JProfiler - profiling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cel mai bun profiler pe care il stiu - cei care l-au creat au fost foarte inspirati. Arata in mod dinamic memoria HEAP, thread-urile, call-urile de metode si timpul lor de executie, thread-urile, etc. O unealta foarte utila in a vedea ce se intampla in codul aplicatiei tale in runtime. Evidentiaza clasele specifica de J2EE, permite introduerea de filtre doar pe clasele care ne intereseaza (face introspectie pe cele care ne intereseaza).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;WAPT - load test tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inlocuitor pentru JMeter - loat test tool. Permite inregistrarea unui script care sa fie executat ulterior pe mai multe thread-uri. Poate simula in acest caz mai mullti useri care folosesc aplicatia furnizand astfel datele necesare pentru profiler. Am preferat WAPT in defavoare JMeter pentru usurinta in folosire - JMeter e mai usor de folosit programatic pentru nightly test, etc (inregistrarea scripturilor se face prin activarea unui proxy). WAPT poate fi folosit cu 20 useri pe o periaoda scurta de timp.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;OSCache - cache in partea de prezentare&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OScache permite cacahe pentru pagini (filtru) sau fragmente (librarie de taguri). Cache-ul se face dupa chei diferite care pot fi incluse in grupuri. Se paote face flush programatic pe keie, pattern de chei, grupuri sau la intreg cache-ul. Stocarea se poate face in file sistem sau in memori. Configurarea intr-un fisier de configurare - filtrul direct in web.xml.&lt;br /&gt;&lt;br /&gt;Am preferat cache pe pagini - pagina principala in care sunt aratate toate articolele si cele in care se arata continutul articolelor. Au aparut probleme cu partea de securitate a aplicatiei si cu URL rewrite. Trebuie avut in vedere ca partea de administrare (aflata sub un user autentificat) nu trebuie sa intre in cache - un user nelogat poate vedea o pagina cu informatii disponibila doar userilor autentificati. O buna practica este selectarea foarte clara a paginilor care pot fi introduse in cache. Invalidarea cache-ului se face programatic la nivel de action in momentul in care se adauga  un articol sau comentariu. Efectele sunt vizibile cu ochiul liber.&lt;br /&gt;&lt;br /&gt;Folosirea de cache la nivel de fragmente de pagini este nefolositoare - as economisi doar timpul necesar randarii tag-urilor JSTL, deoarece call-ul spre /servici/DAO se face din action, care doar redirecteaza spre JSP. La nivel de pagini, cache-ul pot evita call-urile spre baza date in totalite (pana la invalidarea lui).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;EHCache - cache la nivel de Hibernate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;EHcache este folosit implicit de Hibernate ca cache de level 1 la nivel de Hibernate session. Pentru level 2 la nivel de session factory este nevoie de a configura explicit clasele care se vor cache-ui. Si in acest caz am preferat cache in file system. De asemenea cache-ul la niivel de query-uri trebuie configurat explicit pentru a fi creat. Pentru a verifica procesul de cache trebuie activat loggerul de ehcache. Configurarea de ehcache se face la nivel de fisier de configurare - numit implicit ehcache.xml.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;Compass - index pentru search&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Index la nivel de Hibernate - prin intermediul lui se indexeaza toate obiectele care sunt persistate (salvate/incarcate) in baza de date, oferind posibilitatea de a raspunde rapid la search-urile din aplicatie fara a mai face query-uri la nivel de baza de date. Clasele care se doresc indexate trebuie marcate (am ales fisiere de configurare pentrua nu introduce adnotari in entitati - prefer sa le generez pe cele de Hibernate de fiecare data cand schimb ceva in tabele). Indexul poate fi regenerat oricand programatic - si se reactualizeaza singur in runtime prin integrarea cu Hibernate. In spate foloseste Lucene pentru indexare - deci se vor face query-uri de tip Lucene pentru regasirea informatiilor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 0);"&gt;Log4J&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pentru a verifica functionarea librariilor de cache, Log4J a fost activat si setat pe un nivel corestunzator. De asemenea am preferat sa fac cache in file sistem pentru a urmari efectiv cache-ul.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alte unelte utile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eclipse - debug - pentru a verifica daca se fac call-uri in layerele aplicatiei - thread-ul ramane blocat in breackpoint.&lt;br /&gt;Firebug - analiza paginilor web - DOM, trafic, etc&lt;br /&gt;WireShark - analiza traficului de retea - la un nivel foarte detaliat in tot stack-ul TCP-IP&lt;br /&gt;Tomcat - un enviroment destinat numai testarii; in dezvoltare se foloseste Jetty&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solutii finale&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- folosire de cache-uri la nivel de prezentare si de persitenta&lt;br /&gt;- optimizarea incarcarii paginilor web generate&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pasi urmatori&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Un increase de memorie si mutarea cache-urilor in memory&lt;br /&gt;Optimizare riguroasa la nivelul query-urilor de Hibernate&lt;br /&gt;Pooling - verificarea parametrilor pentru thread pool in app server si connection pool pentru baza de date&lt;br /&gt;Eliminarea servlet filter nefolositi sau maparea lor pe url-uri mai stricte&lt;br /&gt;Eliminarea librariilor inutile din classpath - pentru a evita Permsize exception&lt;br /&gt;Scalabilitate - Teracotta, SpringS tc server&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-2616076371237157469?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/6gZs7RX2ZRE" height="1" width="1"/&gt;</content><link rel="related" href="http://www.javaromania.com/mengine/content_Optimizarea-performantei-unei-aplicatii-Web_104.xhtml" title="Optimizarea performantei unei aplicatii Web" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/2616076371237157469/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/03/optimizarea-performantei-unei-aplicatii.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2616076371237157469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2616076371237157469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/6gZs7RX2ZRE/optimizarea-performantei-unei-aplicatii.html" title="Optimizarea performantei unei aplicatii Web" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/03/optimizarea-performantei-unei-aplicatii.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMERHoyfCp7ImA9WxBbEEs.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-2234663541229640876</id><published>2010-03-08T17:57:00.002+02:00</published><updated>2010-03-08T18:06:45.494+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-08T18:06:45.494+02:00</app:edited><title>Interviu despre Java şi educaţie</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bRqsrKYJkGZlJwhE09InoSxfYyQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bRqsrKYJkGZlJwhE09InoSxfYyQ/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/bRqsrKYJkGZlJwhE09InoSxfYyQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bRqsrKYJkGZlJwhE09InoSxfYyQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;strong&gt;Un fragment dintr-un interviu acordat pentru &lt;a href="http://lec-academy.ro"&gt;lec-academy.ro&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;LEC Academy este un proiect Line Education Center care are ca scop sa va aduca zilnic  cate un tutorial video sau scris despre Java, PHP, Microsoft Office, dar si articole cu noutati  din industria IT. Prezentam un fragment, restul interviului il puteti urmari &lt;a href="http://lec-academy.ro/interviu-despre-java-si-educatie-cu-cristian-olaru/"&gt;lec-academy.ro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Ce sfaturi ai pentru cineva care ştie elementele de baza în programare şi vrea să “se apuce” de java?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Să înceapă să foloseasca limbajul Java în viaţa de zi cu zi în dezvoltarea de aplicaţii efective, începând de la API-ul standard dat de JSE şi continuând cu bibliotecile şi framework-urile enterprise. Să citeasca puţin şi să scrie mai mult cod. O bună idee este să disece o aplicaţie deja făcută în Java chiar dacă este imperfectă şi să înveţe din experienţa altora. Să se implice atât în partea de dezvoltare de aplicaţii pentru desktop cât şi în partea de Web pentru a-şi lărgi domeniul de experienţă. Să se acomodeze cu tool-urile specifice limbajului: IDE-uri, unelte de build, servere de aplicaţii, etc. Să nu se limiteze doar la cunoaşterea teoretică!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Care este, în opinia ta, diferenţa dintre un developer bun şi unul mediocru?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Consider că un adevărat dezvoltator, pe care eu îl numesc “pur sange” este cel care şi-a făcut o profesie (meserie) din programare. În sensul că nu este ataşat doar de un job sau o firma sau un proiect ci de limbaj, tehnologii, şi programare în general, cele din urmă având un scop şi o durată de viaţă mult mai mare decât primele. Desigur, e imposibil să ştii totul. Părerea mea este că ideea de “cache levels” este aplicabilă şi în afara programării. Întotdeauna avem un set de informaţii foarte des folosite pe care le ţinem în memorie la îndemână, dar ne vine uşor să căutăm dupa alte informaţii mai rar folosite pe Web, în cărţi, etc. Dar în general un bun programator are o înţelegere mai profundă a limbajului şi a tehnologiilor venită din pasiunea pentru programare deoarece este afectiv legat de acestea şi drept consecinţă acumulează mai uşor cunoştinţe.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ce sfaturi ai avea pentru cineva care este începător în “ale programării” indiferent de limbajul folosit? Cum ajungi un developer bun?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Sunt un susţinător al experienţei (şi oarecum împotriva sistemului academic) pe care o consider singura care poate să dea un folos efectiv învăţării. Teoria foarte rar are o aplicabilitate practică imediata mai ales dacă este adusă la un grad înalt de formalizare aşa cum se întâmplă în facultate. Consider ca anii consumaţi în facultate aproape inutil trebuie să fie răscumpăraţi prin ani de munca în producţie folosind efectiv tehnologii, unelte, etc.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Source: &lt;a href="http://lec-academy.ro/interviu-despre-java-si-educatie-cu-cristian-olaru/"&gt;http://lec-academy.ro&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-2234663541229640876?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/LjlwxUbFc8Y" height="1" width="1"/&gt;</content><link rel="related" href="http://www.javaromania.com/mengine/content_Interviu-despre-Java-şi-educaţie_102" title="Interviu despre Java şi educaţie" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/2234663541229640876/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/03/interviu-despre-java-si-educatie.html#comment-form" title="3 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2234663541229640876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2234663541229640876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/LjlwxUbFc8Y/interviu-despre-java-si-educatie.html" title="Interviu despre Java şi educaţie" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/03/interviu-despre-java-si-educatie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHRXo9eip7ImA9WxBWGUU.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-2593268244939231818</id><published>2010-02-12T15:40:00.003+02:00</published><updated>2010-02-12T15:45:34.462+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-12T15:45:34.462+02:00</app:edited><title>Barcelona</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A2Ag9nOSP6-SDsVAavxGuhDdHLI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A2Ag9nOSP6-SDsVAavxGuhDdHLI/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/A2Ag9nOSP6-SDsVAavxGuhDdHLI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A2Ag9nOSP6-SDsVAavxGuhDdHLI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="270" flashvars="host=picasaweb.google.com&amp;captions=1&amp;noautoplay=1&amp;hl=en_GB&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5436538792510882177%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-2593268244939231818?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/rr9OZwcCrZo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/2593268244939231818/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/02/barcelona.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2593268244939231818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/2593268244939231818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/rr9OZwcCrZo/barcelona.html" title="Barcelona" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/02/barcelona.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENQHY9fyp7ImA9WxBRGEs.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-5665015976667212988</id><published>2010-01-07T13:26:00.001+02:00</published><updated>2010-01-07T13:28:11.867+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-07T13:28:11.867+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="revelion 2009" /><category scheme="http://www.blogger.com/atom/ns#" term="Constantinopol" /><title>Constantinopol</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iTpGfqXGI5BXzCNLUXHTNU_4zlc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iTpGfqXGI5BXzCNLUXHTNU_4zlc/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/iTpGfqXGI5BXzCNLUXHTNU_4zlc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iTpGfqXGI5BXzCNLUXHTNU_4zlc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="width:400px;font-family:arial,sans-serif;font-size:13px;"&gt;&lt;div&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;captions=1&amp;noautoplay=1&amp;hl=en_GB&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fcolaru%2Falbumid%2F5423208757414926593%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;span style="float:left;"&gt;&lt;a href="http://picasaweb.google.com/colaru/Constantinopol?feat=flashalbum" style="color:#3964c2"&gt;View all&lt;/a&gt;&lt;/span&gt;&lt;div style="text-align:right;"&gt;&lt;a href="http://picasaweb.google.com/lh/getEmbed?feat=flashalbum" style="color:#3964c2"&gt;Get your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-5665015976667212988?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/XhTo9gMCth8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/5665015976667212988/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2010/01/cosstantinopol.html#comment-form" title="1 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5665015976667212988?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5665015976667212988?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/XhTo9gMCth8/cosstantinopol.html" title="Constantinopol" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.cristianolaru.com/2010/01/cosstantinopol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ASXs9eCp7ImA9WxNRFkg.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-5163100764207774268</id><published>2009-09-11T11:44:00.000+03:00</published><updated>2009-09-11T11:47:28.560+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-11T11:47:28.560+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="effective java" /><category scheme="http://www.blogger.com/atom/ns#" term="framework web" /><category scheme="http://www.blogger.com/atom/ns#" term="JavaRomania" /><title>Dezvoltarea aplicatiilor Web folosind Java</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/prDcjIyopPktIAOPD6maBy0EmM0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/prDcjIyopPktIAOPD6maBy0EmM0/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/prDcjIyopPktIAOPD6maBy0EmM0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/prDcjIyopPktIAOPD6maBy0EmM0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://docs.google.com/present/embed?id=dfp3nm6q_38g63qv9hh" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-5163100764207774268?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/jJe2sGqq1rA" height="1" width="1"/&gt;</content><link rel="related" href="http://docs.google.com/present/view?id=dfp3nm6q_38g63qv9hh" title="Dezvoltarea aplicatiilor Web folosind Java" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/5163100764207774268/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2009/09/dezvoltarea-aplicatiilor-web-folosind.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5163100764207774268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/5163100764207774268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/jJe2sGqq1rA/dezvoltarea-aplicatiilor-web-folosind.html" title="Dezvoltarea aplicatiilor Web folosind Java" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2009/09/dezvoltarea-aplicatiilor-web-folosind.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcHRXoyfSp7ImA9WxJaE0U.&quot;"><id>tag:blogger.com,1999:blog-15320576.post-4504696225864676384</id><published>2009-08-04T14:40:00.000+03:00</published><updated>2009-08-04T14:40:34.495+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-04T14:40:34.495+03:00</app:edited><title>Amazing Romania - Land of Choice | JavaRomania</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oqOnvFkga1W1DTgOtKl12CGLGsQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oqOnvFkga1W1DTgOtKl12CGLGsQ/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/oqOnvFkga1W1DTgOtKl12CGLGsQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oqOnvFkga1W1DTgOtKl12CGLGsQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Nimic legat de Java, doar de Romania. Clipul neoficial pentru promovarea turismului in Romania. &lt;a href="http://www.javaromania.com/mengine/content_Amazing-Romania---Land-of-Choice_84"&gt;Amazing Romania - Land of Choice | JavaRomania&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;From &lt;a href="http://olaru.blogspot.com"&gt; Olaru Cristian Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15320576-4504696225864676384?l=www.cristianolaru.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CristianOlaruBlog/~4/vLGn8vq4Nyk" height="1" width="1"/&gt;</content><link rel="related" href="http://www.javaromania.com/mengine/content_Amazing-Romania---Land-of-Choice_84" title="Amazing Romania - Land of Choice | JavaRomania" /><link rel="replies" type="application/atom+xml" href="http://www.cristianolaru.com/feeds/4504696225864676384/comments/default" title="Postare comentarii" /><link rel="replies" type="text/html" href="http://www.cristianolaru.com/2009/08/amazing-romania-land-of-choice.html#comment-form" title="0 comentarii" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4504696225864676384?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15320576/posts/default/4504696225864676384?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CristianOlaruBlog/~3/vLGn8vq4Nyk/amazing-romania-land-of-choice.html" title="Amazing Romania - Land of Choice | JavaRomania" /><author><name>Cristian Olaru</name><uri>https://profiles.google.com/112753247549530784381</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-tkXN1TokuE0/AAAAAAAAAAI/AAAAAAAAAAA/xwfxZWt5jU0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.cristianolaru.com/2009/08/amazing-romania-land-of-choice.html</feedburner:origLink></entry></feed>

