<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>fragment &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/fragment/</link>
	<description>Feed of posts on WordPress.com tagged "fragment"</description>
	<pubDate>Tue, 01 Dec 2009 21:12:08 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Ce petrecere reuşită!]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/29/ce-petrecere-reusita/</link>
<pubDate>Sun, 29 Nov 2009 10:03:14 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/29/ce-petrecere-reusita/</guid>
<description><![CDATA[Muzica în care se transformau lucrurile din jurul meu ca nişte culori amestecate la întâmplare avea ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/3TKsI2cOE60&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/3TKsI2cOE60&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span><br />
</strong></p>
<p>Muzica în care se transformau lucrurile din jurul meu ca nişte culori amestecate la întâmplare avea nevoie de un călător obosit şi lipsit de gânduri, de un al fel de cutie de rezonanţă. tristeţea mea nu era de ajuns, nici mâna mea pe jumătate visată care ardea cu o flacără albăstruie, nici ochiul meu care începuse să picure pe dinăuntru şi să se alungească ca o lămâie. stând în fotoliu, cu capul electrificat pe jumătate, pe jumătate mirosind a petrol, oscilând între cele două lumi ca între două sicrie în care ar trebui să mă închid, aşteptam să mă înlocuiască în ambele lumi altcineva şi să mă lase să plec. din când în când îmi roteam încheietura mâinii drepte şi pipăiam cu cealaltă mână limbile neclintite ale acelor de ceas, subţiri ca nişte dumnezei de vată de zahăr ca nişte fire de salivă. stăteam în fotoliu ca într-un osuar, perfect nemişcat, cu picioarele adunate sub mine, de pază. unele lucruri o luaseră înaintea timpului, mâna mea de exemplu care ardea cu o flacără albăstruie îmi zâmbea dintr-un viitor care se îndepărta mereu ca o durere în ploapa subţire. apoi cealaltă mână începea să fumeze ca un înger păzitor aşezat de-a dreapta mea, în silă. şi iată cum am coborât atunci pe covor, picioarele mele au traversat încăperea dintr-un romb în altul, ritualic, am început să simt insecte minuscule eclozându-mi sub piele cu pocnete înfundate şi scurte; unele îşi luau zborul, altele se adânceau tot mai mult în carnea şi în oasele mele, devorându-le ca o flacără albăstruie; când am reuşit să privesc pe geam, în jurul meu se umpluse de aripi minuscule şi rozalii, de la celălalt capăt al încăperii fotoliul mă privea neîncrezător şi eu i-am făcut un semn să vină, aş fi vrut să mă aşez acolo, la geam, insecte minuscule ţeseau în jurul meu o pânză lipicioasă şi fină cu găuri la fel de mici ca o pată oarbă de pe retină; trebuia neapărat să dau un telefon, să încerc ceva, viaţa mea nu trebuia să se dizolve în felul ăsta, eu avem alt destin, existenţa mea trebuia să străbată până în cealaltă cameră şi să iradieze de acolo în ceilalţi, să se multiplice ea însăşi ca nişte insecte, să-şi treacă făptura larvară asupra tuturor, să invadeze distanţa dintre mine şi lume ca o spumă; dar nu mai eram în stare să disting nimic, decât zumzetul miliardelor de aripi minuscule care gravitau în jurul meu şi care devorau flacăra albăstruie a mâinii mele intrând şi ieşind din mine ca dint-un stup. din mecanismul complex al trupului meu vorbitor rămăseseră numai câteva metafore cu rotiţele defecte şi câteva oase pline de crăpături şi de găuri; aş fi vrut să fac o ultimă încercare să transcend şi să plec, când am auzit pocnetul ascuţit de balon plin cu aer al inimii mele care se vărsase pe podea. şi numai privind mai atent, cu ochiul care se resorbise pe jumătate, am văzut că balonul ce tocmai plesnise era nu inima, ci vezica urinară, iar lichidul care se împrăştiase cu un miros dulceag era galben şi înţepător ca un aer stătut într-o cameră goală.</p>
<p>Ce petrecere reuşită!, m-am gândit, când ultimul electron în care locuia sufletul meu s-a desfăcut în trei cuarci minusculi cu aripi rozalii, dizolvându-mă eu însumi, în semn de moarte, ca un insecticid inofensiv, ca un cub de zahăr într-o cană cu lapte.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Visul (continuare)]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/28/visul-continuare/</link>
<pubDate>Sat, 28 Nov 2009 21:34:31 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/28/visul-continuare/</guid>
<description><![CDATA[Eu cine dumnezeului eram? mă îmbonăvisem de frica asta, de frigul care îmi dizolva pupilele dacă nu ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Eu cine dumnezeului eram? mă îmbonăvisem de frica asta, de frigul care îmi dizolva pupilele dacă nu ţineam ochii strâns închişi, atât de strânşi de parcă aş fi avut dinţi în loc de pleoape. ştiam că dacă deschideam ochii, cristalinul mi-ar fi îngheţat pe loc, că privirea mea s-ar fi făcut un fel de ace de sticlă şi că n-aş mai fi plâns niciodată; eu aveam nevoie să plâng, viaţa mea depindea de asta. era groaznic să nu poţi deschide ochii; era groaznic să stai la o distanţă atât de mare de lume, ca şi când ai fi murit deja. nici mâinile nu mi le mai simţeam, dar abia apucasem să mă gândesc la asta. simţeam numai că de la umăr în jos eu încetam să fiu şi începea altcineva. eu cine dumnezeului eram? mă chinuia întrebarea care ajunsese până la mine si care nu era a mea, într-adevăr, îmi dădeam seama de asta abia acum, eu n-aş fi putut întreba aşa, eu n-aş fi putut nici măcar vorbi; nu mi-ar fi trecut prin cap într-o mie de ani să mă gândesc la asta, eram mulţumit cu mult mai puţin, aş fi fost mulţumit să pot deschide numai o clipă ochii, să iau lumea cu mine, apoi aş putut să mă scufund iarăşi, întunericul ar fi fost mai uşor suportabil. şi atunci când planul începea să-mi mijească în minte, cineva a trebuit să gândească pentru mine gândul ăsta, eu cine dumnezeului eram?, ca şi când m-ar fi descoperit cu surprindere acolo unde s-ar fi aşteptat să fie cu totul altcineva. şi atunci, de mirare, de curiozitate, de ciudă, voind  să văd eu însumi cine eram, am deschis ochii; nici n-am mai apucat s-o întreb cine dumnezeului era ea, că mi-a răspuns înainte să reuşesc eu să mişc vreun cuvânt; ea era Mara. acum era rândul meu să aleg cine sînt.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Running On: George O'Gorman Stumbles for 39!]]></title>
<link>http://strunkenwhite.wordpress.com/2009/11/27/running-on-george-ogorman-stumbles-for-39/</link>
<pubDate>Fri, 27 Nov 2009 16:52:20 +0000</pubDate>
<dc:creator>strunkenwhite</dc:creator>
<guid>http://strunkenwhite.wordpress.com/2009/11/27/running-on-george-ogorman-stumbles-for-39/</guid>
<description><![CDATA[&#8220;In storybook fashion it all ended on an up note for Danaso as the other Steinert seniors who ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><em>&#8220;In storybook fashion it all ended on an up note for Danaso as the other Steinert seniors who refused to quit when faced with the kind of adversity in their careers that other players might have quit because of.&#8221;</em></p>
<p>I don&#8217;t know what I like most about this.  Is it the complete lack of punctuation?  Is it the fact that it ends with the word &#8220;of?&#8221; Is it the fact that, despite clocking in at a mind-bending 39 words, IT&#8217;S NOT EVEN A COMPLETE SENTENCE?!?</p>
<p>Yes, yes, and HELL YES!!!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Figé]]></title>
<link>http://kconstellation.wordpress.com/2009/11/26/figes/</link>
<pubDate>Fri, 27 Nov 2009 03:54:55 +0000</pubDate>
<dc:creator>kev C</dc:creator>
<guid>http://kconstellation.wordpress.com/2009/11/26/figes/</guid>
<description><![CDATA[Ça avait été vaine promesse, lancée au pas du seuil. Pendant un court moment, le coeur battant, Elle]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:left;"><a href="http://kconstellation.wordpress.com/files/2009/11/dsc_0004.jpg"><img class="size-medium wp-image-213 alignnone" title="DSC_0004" src="http://kconstellation.wordpress.com/files/2009/11/dsc_0004.jpg?w=300" alt="" width="300" height="200" /></a></p>
<p style="text-align:left;">Ça avait été vaine promesse, lancée au pas du seuil.</p>
<p style="text-align:left;">Pendant un court moment, le coeur battant,<br />
Elle avait décidé d&#8217;en immortaliser la fougue,<br />
Dans ce béton tout frais,<br />
Qu&#8217;on l&#8217;invitait à ne pas toucher.</p>
<p style="text-align:left;">Attendre qu&#8217;il sèche.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Speechless]]></title>
<link>http://themuseinmusic.com/2009/11/26/speechless/</link>
<pubDate>Fri, 27 Nov 2009 00:55:46 +0000</pubDate>
<dc:creator>Fred</dc:creator>
<guid>http://themuseinmusic.com/2009/11/26/speechless/</guid>
<description><![CDATA[That&#8217;s &#8220;Fragment VIII,&#8221; by Library Tapes, from their Fragment LP. Their Myspace pa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/jMc0MsKHqa0&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/jMc0MsKHqa0&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>That&#8217;s &#8220;Fragment VIII,&#8221; by <a href="http://www.myspace.com/librarytapes">Library Tapes</a>, from their <em>Fragment</em> LP.  Their Myspace page has much more.  Also try <a href="http://www.last.fm/music/Library+Tapes">their last.fm page</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[un fragment]]></title>
<link>http://cristinafilimon.wordpress.com/2009/11/25/un-fragment/</link>
<pubDate>Wed, 25 Nov 2009 09:02:47 +0000</pubDate>
<dc:creator>Cristina Filimon</dc:creator>
<guid>http://cristinafilimon.wordpress.com/2009/11/25/un-fragment/</guid>
<description><![CDATA[&#8220;Candva prindeam aripi si zburam pana la cer. Mai taziu aripile m-au dus acolo unde nu voiam s]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>&#8220;Candva prindeam aripi si zburam pana la cer. Mai taziu aripile m-au dus acolo unde nu voiam sa ajung. Pe varful cel mai inalt de unde tabla de sah a jocului, demult inceput, imi arata ca am pierdut  partida. Inima refuza sa se resemneze si dicteaza mintii sa construiasca strategii imposibile.. &#8220;</p>
<p>&#8230;</p>
<p>&#8220;In rolul principal o regina nebuna, ce sare calul, face ture si se transforma in pion la nevoie. Ar putea continua la nesfarsit in speranta ca isi va recuceri imperiul. Sa capitulezi cu demnitate poate fi cea mai mare victorie asupra propriei persoane. Intelege.  Regina ratacitoare isi pleaca fruntea, isi striveste lacrimile, isi promite sa uite. Imperiul acesta n-a fost niciodata al ei. Isi ridica privirea spre cer, stie ca atat timp cat n-a pierit speranta, va avea puterea sa paseasca departe, din nou, departe! Intr-o buna zi va construi un imperiul doar al ei , invincinbil. Timpul, viata, timpul&#8230; si Dumnezeu o asteptau.&#8221;</p>
<p>P.S.! recunoasteti fragmentul? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[frecuş-de-albuş-în-gălbenuş.]]></title>
<link>http://gabrielabadica.wordpress.com/?p=6501</link>
<pubDate>Tue, 24 Nov 2009 22:35:10 +0000</pubDate>
<dc:creator>GB</dc:creator>
<guid>http://gabrielabadica.wordpress.com/?p=6501</guid>
<description><![CDATA[vreau: motani care torc răguşiţi într-o după-amiază de septembrie chiulită în reverii; nori care îşi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div>
<p><span style="font-size:small;font-family:Times New Roman;"><strong>vreau:</strong> motani care torc răguşiţi într-o după-amiază de septembrie chiulită în reverii; nori care îşi plimbă portocalele în lesă; fluturi cu boabe de albastru-desculţ pe limbă; brotăcei care primăvara asta au chiulit la lecţia de verde; un albastru prea desculţ pentru adidaşi Reebok sau Nike, cu perle în gură şi dulciuri la gât; jumătaţi de miros alb de narcise rostogolite printre nervi şi buze rosii; înserări sfinte care se lasă în genunchi; plămâni burduşiţi de aer limpede şi epiderme prea leneşe ca să mai încălzească; dinţi albi şi nemiloşi, ca nişte corsete de iubite de îngeri,  ce ţin între ei grenade, dar uită asta, zâmbesc şi bum!!!; pumnii tălpilor puilor de îngeri deportaţi în gulaguri cereşti, care sparg cerul putred din albastrul zambilelor; vise scurtcircuitate într-o cană aburindă de cafea, băută înainte să pleci în căutarea celor mai nedespărţiri posibile; o vrăjitoare frumoasă care să-ţi deşire liniile din palmă şi să împletească din ele ciorapi de iarnă pentru pistruii nopţii, ca să nu le fie frig; maşini de transformat cuvintele în curcubeie înşurubate în petece de “la-margine-de-rai-aiurea-n-tramvai”; umbre portocalii învelind diatezele care, iarna, se ştie, dorm în acelaşi pat; periferii tandre, cu motani care se dizolvă în melancolii lascive şi unturi bleu, verzi sau aiurea; operaţii de schimbare de muză în umbra unor superbe apusuri de unghie; să iei luna, să o înveleşti în celofan şi să i-o dai unui om drag să muşte din ea, pentru că n-o sa mai fie plină sub urma paşilor dinţilor lui; soldăţei de plumb care adulmecă glezne de răsărituri şi alegeri incorect legate de piciorul stâng; vagoane pline cu zmeie, de care stau agăţate cuvinte limpezi, pe care femeia cu pălărie le cumpără la suprapreţ şi se răzbună furând şi pitind câte un soldăţel de plumb; petale care se încaieră sub pleoape şi licurici terfeliţi şi smotociţi şi împletiţi de chestii în trestii; bulgări de lumină cleioasă ca mierea; ochi larg deschişi, din care să împleteşti drumuri care să ducă oriunde, nicăieri, undeva, destinaţia &#8211; ala-bala-portocala; dimineţi calde, care zidesc balcoane şi care păşesc în vârfuri, ca să nu te trezească; doi copii teribili la colţ de stradă care îşi spun picant: &#8220;&#8230;hai în Rai cu troleul şi-o să ne compostăm îngerii păzitori cu dinţii şi-o să fumăm timpul cu bunici în loc de filtru&#8221;, frânturi de fulgi de ploaie în farfurii roz; vârfuri de linguri de soare oblic în ibric; scame de cer în pahar; pantofi de Cenuşărese, cu tocuri de ciocolată; simfonii de cuvinte care te tăvălesc, te scot din haine, te scot din minţi; vagoane de alb, încărcate cu 365 de zile limpezi, ba-mpărţite, ba-nmulţite, ba scăzute, ba adunate, of, să se astâmpere cu atâta frecuş-de-albuş-în-gălbenuş şi mai bine să  îşi înece în fundul ochilor marfarele alea căprui-negre, scurse pe şine unse cu rimel de firmă; trimbulinzi prin tuneluri orange şi epileptici electrocutaţi de îngeri, care nu vor să fie moşiţi şi să le fie scoasă reveria din tâmplă; un Dumnezeu care, în pauza de icoană, ascultă Rolling Stones, fumează şi mai ară carnea omului urban cu câte un înger; sfinţi moderni cărora iubitele le umplu gura cu săruturi de casă, făcute de mâinile lor fragede, grozave la gust şi coapte între dinţii lor albi şi nemiloşi, astfel încât la vederea grozaviei, simti cum îti creşte sub cerul gurii o grădina; poker cu un soare care patinează prin albastrul gravid, pompat dintr-un cord pufos; un moale roşu-concert-de-cireşe care, şontâc-şontâc, merge la un rendez-vous cu un verde crud; şi îngeri cu piercing-uri în aripi şi tălpi prea grele şi prea pline de un albastru mult prea desculţ ca să mai aibă nevoie sau habar de adidaşi Reebok sau Nike.</span> </p>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Fotografie (poiestire) - re-actualizare]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/24/fotografie-poiestire/</link>
<pubDate>Tue, 24 Nov 2009 21:45:07 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/24/fotografie-poiestire/</guid>
<description><![CDATA[Asta era tot. de-aici începea strada îngustă, cu aripile ferestrelor deschise deasupra mea ca într-u]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/Q7EMSEnMnKg&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/Q7EMSEnMnKg&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>Asta era tot. de-aici începea strada îngustă, cu aripile ferestrelor deschise deasupra mea ca într-un zbor nemişcat. trebuia să mă pierd în mulţime, să fiu la întâmplare oricare altul, să evadez exersând cu atenţie dansul complicat prin care devenim altcineva; uneori mi se întâmpla să mă ia prin surprindere; mişcările îmi reuşeau o secundă prea devreme şi atunci mă vedeam evadând, mă vedeam căutând cu mâna prin aerul încăperii după un semn de adio. eram eu şi nu eram eu; apoi altcineva îmi lua locul, prefăcându-se că nu m-a văzut, că gestul meu nu-l găsise acolo, învolburând numai întunericul nud în care pluteau lămpile cu petrol ale memoriei; celălalt îşi dezbrăca pălăria şi haina; era calm, devenea treptat eu însumi, mă lua în stăpânire nedureros, aproape plăcut şi trecea asupra mea gândurile lui ca pe nişte infuzii; eu îl observam din afară şi mă simţeam observat. apoi, brusc, jocul se termina aici, ca şi când cineva ar fi câştigat şi altcineva era învins; celui învins i se tăia o mână; înainte avea dreptul ultimului gest, gestul în care se aduna toată neputinţa lui şi care rata totul. se ştia dinainte întregul act, şi sala era plictisită. Durerea începea abia atunci când celălalt se retrăgea, dezvelind, ca un reflux, plaje întinse şi goale; apoi se împrăştia repede, se folosea de tot ce nu era ea ca să existe, intensificându-se până la paroxism; şi atunci eram iarăşi eu, întorcându-mă aproape în fugă, respirând alert, iar deasupra mea, ca nişte urme de paşi în nisip, ferestre deschise.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What to do in an emergency]]></title>
<link>http://philrudich.wordpress.com/2009/11/24/what-to-do-in-an-emergency/</link>
<pubDate>Tue, 24 Nov 2009 08:09:34 +0000</pubDate>
<dc:creator>phil rudich</dc:creator>
<guid>http://philrudich.wordpress.com/2009/11/24/what-to-do-in-an-emergency/</guid>
<description><![CDATA[Last summer, President Lyndon B. “Basketballs” Johnson called me and said, “Jack, I’m gonna need you]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Last summer, President Lyndon B. “Basketballs” Johnson called me and said, “Jack, I’m gonna need you to get a hold of a gun for me.”</p>
<p>“But Lyndon, why?” I asked. “I don’t even know anything about guns… What do you need a gun for?”</p>
<p>“It’s personal, Jack. Very personal. Hurry.” I sped out with a quickness to the nearest gunnery, around the corner from the Capitol building. I chose the Dirty Harry-style Magnum revolver. It was weighty and cold in my hands. Would Lyndon be satisfied? I wondered. I brought it to him in a very fancy cigar box, so as to not ruffle the feathers of any of the monkey-suit-wearing 9-to-5-types that littered the corridors of the White House.</p>
<p>“Yes, this’ll do,” he grumbled. “It’ll have to do.” He hesitated before looking up from his desk and into my eyes with his baby blues. “We’ve got a job to do tonight, Kennedy. We’ve got to kill the President.”</p>
<p>I was in shock. Dumbfounded.</p>
<p>“But Lyn…Lyndon, that’s me. <em>I</em> am the President,” I stuttered.</p>
<p>He turned his gaze back to his desk. “I know, Jack…” He looked back up at me and saw that I’d gone ghost-white, that my mouth was hanging open, slack-jawed like some sort of foolish country yokel. “And that’s what makes this so hard.”</p>
<p>“Lyndon, I…what’ll I tell Jackie…the kids…”</p>
<p>“Nothing, Jack. You can’t tell them a gosh-derned thing. Not a single. Gosh. Derned. Thing. We need this right now, Johnny-Boy. The <em>country</em> needs this.” Lyndon was stern-faced, and he meant every word he said.</p>
<p>“It needs me to die?!” I blurted. “I just don’t see how that could be!” Lyndon said nothing in rebuttal. “Can I at least…can I at least have the night to think about it? We can talk it over on the ship to San Diego tomorrow morning?” I saw a powerful fire cool in his eyes. My suggestion was reasonable to him, and we agreed to talk it over on the ship to San Diego tomorrow morning. I slept soundly that night, and dreamt of a well-advertised festival of animals that nonetheless was poorly attended. Only a koala bear, a toad, and a scantily clad sloth bothered to show up.</p>
<p>Out on the deck of the ship to San Diego the next morning, I sipped my orange juice, lightly salted the way I like it, while Lyndon sat, quietly, staring long and hard out the window as the Mmississibbippi River guided us west through America’s great Corn Belt. “It’s truly the World’s Greatest Corn Belt, you know that Lyndon?”</p>
<p>“Hm. I suppose it is, Johnny-Boy. I suppose it is.” I could see that he was waiting for me to restart yesterday’s discussion. I wasn’t afraid anymore.</p>
<p>“Lyndon, last night I had a dream, a beautiful dream about the bountiful splendors that this fine nation provides for its peoples.”</p>
<p>“That sounds wonderful.” He bit into a jelly-soaked bagel, and started coughing as a bready lump of it lodged itself in his throat. I was too caught up in the throes of my patriotic speech to notice, though, as he leapt up from his chair and threw himself against a railing to perform some sort of peculiar anti-choking maneuver on himself. If I had bothered to look, I would have seen that it was quite an odd sight.</p>
<p>“Yes, it was,” I continued. “It really was. And it…it changed me, Lyndon. It changed the way I see things. I can make whatever sacrifice is needed of me. This country was founded on the principles that, if need be, we give up everything we have for the greater good, for the little people, for the little things, for the little moments, the moments you photograph with the family camera, and then when you develop and print that roll of film, you tuck that photograph into your pants pocket and then maybe forget about it for a while, and then you wash those pants without checking the pockets and the photograph faded a bit, but you still remember what it looked like when it was new, and you move it to a different pair of pants, maybe one that you don’t wear as often, so when you put them on and find that photograph again, you can’t help but yelp, ‘Holy Moly – I remember this photograph. Hey, everybody! Come look at this photograph I took a long time ago but left in this pair of pants for some reason! I remember this day so clearly, but having this photograph really cements the moment in time, so that’s why I kept it in my pocket, because, after all, that’s just a basic right that our forefathers fought for.’ That’s what I’m fighting for, too, Lyndon. That’s what we’re all fighting for. That simple principle. The Romans called it, <em>Ecce Romani spiritum absoroturotatotita esritoim spuriutum</em>. Those Romans were really on to something, Lyndon. They got it. Really, a fantastic people. And I think, if we can all remember the wild-eyed ideals that our fine nation was built around, someday – someday – we can achieve what they did. I know it, Lyndon. I just know it.”</p>
<p>I looked off to the east, at the steadily rising sun, hoping that I looked as heroic as I felt.</p>
<p>“You really look quite heroic right now, Jack.” He paused, dramatically. “Well then…let’s get down to business. Here’s the plan. First – “</p>
<p>Before he could begin, his cell phone rang. It produced a harsh and uninviting sound, surely the boring default tone that he was either too lazy or too inept to change. As he gestured to inform me that he needed to take this, my phone rang as well, and I hope Lyndon recognized my smooth jazz ringtone to be something infinitely more interesting than his viciously dull series of beeps and boops that had irritated me so.</p>
<p> “Ahoy-hoy?”</p>
<p>“Good morning, pumpkin.” It was Jackie. My beautiful Jacqueline. “So have you talked to him yet?” she asked. She was, understandably, quite uneasy about the entire situation.</p>
<p>“Yes, I have. I’m doing it, sugar. I’ve got to do it. As the Romans said, <em>This spaghetti won’t make itself</em>. I have to do it, dear. I have to make my spaghetti.” I could only hope that she would understand.</p>
<p>“I understand, cinnamon” she said. I was relieved. “I suppose I just hope it isn’t too messy, is all…”</p>
<p>“Now, Jackie, I know that’s not the only thing on your mind. Talk to me, honey pie.”</p>
<p>“Oh, sweet pea, I know you have to do your patriotic duty, I’m just so selfish – I’m just not sure I want you to die, even for this most noble cause. Am I a bad person, my dearest biscuit?”</p>
<p>I couldn’t help but chuckle. “No, my delicious dumpling, you most certainly are not. You’ll be taken care of, though, twinkie, you know that. And I’ll always be there, metaphorically.”</p>
<p>This seemed to alleviate her uncertainty on the issue. “You’re right, burrito. Of course you’re right.”</p>
<p>“Do you feel better, my perfect pear?” I asked.</p>
<p>“I do, my steamy strudel,” I replied. “I do.” The call-waiting tone buzzed in my ear.</p>
<p>“See you in San Diego, candy pants!” I switched over to this mysterious new caller. “Moshi moshi?”</p>
<p>“Jack!” It was Lyndon. “It’s Lyndon! You’re ready to continue?”</p>
<p>“That I am, sir.” We hung up and continued the previous conversation about the plan.</p>
<p>“So, Jack, the first part of the plan goes like this…” Lyndon then laid out the whole complicated, extraordinary, intriguing, wonderful, heartrending, insane, shocking, arresting, intricate plot to assassinate me, none of which would matter a few hours later when I made the executive decision not to go through with it.</p>
<p>I thought I was prepared, mentally, but as I ate my pre-lunch snack of a toasted jellied ham and chipped beef sandwich, I saw that I was totally chicken. I accidentally found myself thinking, <em>If the country needs me to die, maybe it also needs me to live?</em> It seemed so logical, in my shaken pre-death state. I couldn’t tell Lyndon, though; I just didn’t want him to be disappointed in me. After all, he practically raised me from the cradle. I couldn’t have standed to see that look of hangdog dissatisfaction in his shimmering green eyes.</p>
<p>So I did the next most reasonable thing: I hired a man, whose name escapes me at the moment, though I think it sounded something like Moseph Mabarthy, to have his face surgically altered to look like mine. It was a quick surgery, only some minor scarring, and I was able to get the new Me out into the parade route with enough time to hole up in a downtown hotel that would have a good view of the shooting. </p>
<p>Lyndon pulled the trigger from a room a few floors below, and I had a quick thought as Moseph buckled over on to the sidewalk. I dialed out to room service for a bacon-egg-and-cheeseburger, a local specialty, and then called my doctor. He picked up on the first ring, as was a recognizable trait of his that is surely worth noting. “Dr. Falafel? It’s President Jack Kennedy.”</p>
<p>“Ah, yes, what can I do you for, President Jack?” He was a congenial man, despite his glaringly bald head.</p>
<p>“If I were to die anytime soon – “</p>
<p>“Oh, heaven forbid,” the doctor interrupted.</p>
<p>“Yes, indeed, heaven forbid. Anyhow, if I were to die anytime soon, I don’t want an autopsy. Just stuff me in that pine box and lay me in the ground.”</p>
<p>“I hear you loud and clear, President Jack. I’ll call your lawyer and let him know.”</p>
<p>“You’re a good man Doc. A good man, indeed.” I hung up just as the bellhop with my food rapped on the door. I took off all my clothes and answered. “Howdy, amigo – that my meal?”</p>
<p>“Indeed, Mr. President. And might I add, that’s an excellent penis you’re sporting today.” He was enthusiastic, and deserved the hefty tip I laid in his gloved palm before he turned to leave. I drew a bath and readied myself to eat the burger in the tub. My eyes were bigger than my esophagus, however, and I soon found myself choking on a sizable hunk of the sandwich.</p>
<p><em>This is no good!</em> I thought as my eyes watered, my chest constricted, and my heart pounded with fear. If only I had watched Lyndon perform that unusual maneuver on himself on the ship, I would have known the preferred way to dislodge food chunks from one’s throat. Instead, I found myself pounding my chest against a solid hotel desk chair, which resulted in several broken and bruised ribs, which ultimately was of no concern after I died due to asphyxiation, which I believe is a fancy word for “choked to death.”</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[De fiecare dată când respiram (poiestire)]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/20/de-fiecare-data-cand-respiram/</link>
<pubDate>Fri, 20 Nov 2009 20:29:15 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/20/de-fiecare-data-cand-respiram/</guid>
<description><![CDATA[Mi se părea că am o bucată foarte subţire de lamă în plămânul drept; seara, când mă puneam în pat si]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Mi se părea că am o bucată foarte subţire de lamă în plămânul drept; seara, când mă puneam în pat simţeam cum aluneca spre lobul superior, o vedeam foarte clar dacă închideam ochii, în spaţiul dintre pupilă şi pleoapă; pentru o secundă se muta acolo şi aproape că-mi era frică să clipesc; apoi respiram şi-mi dădeam seama că aerul o făcea să vibreze, că se mutase iarăşi în plămân, şi că dacă aş fi vrut, aş fi putut să-mi mişc pleoapele în voie. gândul că aş fi putut mă făcea să nu mai vreau. mă grăbeam să adorm, respiram atent, încercând să controlez poziţia lamei care se răsucea foarte uşor, secţionând capilare, de fiecare dată când respiram. în somn mă răsuceam pe o parte, uitând de ea, şi mă trezeam cu o durere ascuţită în stomac. mă ridicam din somn ca dintr-o stare de leşin; până la baie ajungeam sprijinindu-mă de mobile, aproape fără să deschid ochii, încercând să rezist. înainte să ajung nu mă mai puteam stăpâni, muşchii abdomenului se comprimau ca nişte pistoane care explodau în gât. vomitam cu capul aplecat deasupra chiuvetei până când auzeam sunetul clar al unui bucăţi de metal lovindu-se de pereţii din porţelan ai chiuvetei. apoi îmi era mai bine, durerea se dizolva, aş fi putut să mă întorc în pat. aş fi putut să adorm liniştit. nici nu ştiu cum se întâmplau toate astea. apoi, imediat, era dimineaţă şi trebuia să mă ridic din pat, să mă îmbrac şi să plec. Făcând toate astea, aproape că nici nu simţeam bucata foarte subţire de lamă care se mişca imperceptibil undeva, în partea de sus a plămânului drept, secţionând capilare de fiecare dată când respiram.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SUPREME X Fragment design X SOPH.]]></title>
<link>http://superbored.wordpress.com/2009/11/20/supreme-x-fragment-design-x-soph/</link>
<pubDate>Fri, 20 Nov 2009 08:28:14 +0000</pubDate>
<dc:creator>superbored</dc:creator>
<guid>http://superbored.wordpress.com/2009/11/20/supreme-x-fragment-design-x-soph/</guid>
<description><![CDATA[Japan’s uniform experiment, the lifestyle brand put together by SOPH. and fragment design has collab]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone" src="http://www.freshnessmag.com/wp-content/uploads/2009/09/uniform-experiment-x-supreme-supporter-muffler-1-570x227.jpg" alt="" width="416" height="166" /></p>
<h6><span style="color:#999999;">Japan’s <a href="http://www.uniformexperiment.jp/">uniform experiment</a>, the lifestyle brand put together by <a href="http://www.soph10th.net/">SOPH.</a> and <a href="http://www.fragment.jp/">fragment design</a> has collaborated with <a href="http://www.supremenewyork.com/">Supreme</a> on a new soccer inspired scarf, that is officially being called the Supporter Muffler. The item is a part of SOPH.’s 10th Anniversary Collection. The scarf itself features branding by Supreme, uniform experiment, and fragment design. The collaboration Supporter Muffler will be available at the beginning of October at select retailers in Japan including SOPH., the hnyee.Store, and Supreme.</span></h6>
<p><span style="color:#ffffff;">Yeah! we have it @ SUPERBORED &#38; brag garden! </span></p>
<p><span style="color:#999999;"><span style="color:#000000;"><img class="alignnone" src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc3/hs046.snc3/13347_1289638999232_1177920938_874222_6406920_n.jpg" alt="" width="438" height="583" /></span></span></p>
<p><span style="color:#999999;"><span style="color:#000000;"><img class="alignnone" src="http://photos-g.ak.fbcdn.net/hphotos-ak-snc3/hs046.snc3/13347_1289638079209_1177920938_874221_7181148_n.jpg" alt="" width="437" height="581" /></span></span></p>
<p><span style="color:#999999;"><span style="color:#000000;"><span style="color:#ffffff;">love this muffler in winter!</span><br />
</span></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ein Fragment aus Tagorien]]></title>
<link>http://wortman.wordpress.com/2009/11/19/ein-fragment-aus-tagorien/</link>
<pubDate>Thu, 19 Nov 2009 16:56:28 +0000</pubDate>
<dc:creator>Wortman</dc:creator>
<guid>http://wortman.wordpress.com/2009/11/19/ein-fragment-aus-tagorien/</guid>
<description><![CDATA[Die beiden weißen Gestalten schauten sich um. Sie standen inmitten eines schmalen Bergpasses. ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Die beiden <a href="http://wortman.wordpress.com/2009/10/16/gefahr-zieht-auf/" target="_blank">weißen</a> Gestalten schauten sich um. Sie standen inmitten eines schmalen Bergpasses.<br />
&#8220;Gabriel spinnt!&#8221;<br />
&#8220;Sei vorsichtig was du sagst, Sarael&#8221;.<br />
Yomael war auch nicht begeistert davon, hier mitten in den Bergen zu stehen. Sie mussten sich erst einmal orientieren.<br />
&#8220;Das Böse ist sehr stark!&#8221;<br />
&#8220;Ich weiß Yamael, aber ohne ihre Kraft werden wir diese Macht nicht brechen können.&#8221;<br />
&#8220;Dafür müssen wir sie zuerst finden. Das wird nicht einfach werden&#8221;, antwortete Sarael.<br />
&#8220;Unsere erste Aufgabe ist es, <span style="text-decoration:line-through;">Xerox</span> Xaroz zu finden. Gabriel sagte, er wäre der Hüter des Stabes.&#8221;<br />
Der Stab des Lichts war das einzige Werkzeug, der es ermöglichte, ihr die Macht wiederzugeben. Eine Macht, die auch ihnen beiden gefährlich werden konnte. Ohne diesen Stab war ihr Auftrag zum Scheitern verurteilt. Das würde Gabriel ihnen nicht verzeihen.<br />
Yamael überlegte kurz. &#8220;Wir werden in den Westen gehen. Ich spüre, dort sollten wir mit der Suche beginnen&#8230;&#8221;</p>
<p><strong>EDIT</strong><br />
Da alle beim Namen &#8220;<em>Xerox</em>&#8221; an einen Druckerhersteller dachten, habe ich den Namen jetzt geändert.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Song Analysis: Rob Thomas' "Someday"]]></title>
<link>http://garyewer.wordpress.com/2009/11/18/song-analysis-rob-thomas-someday/</link>
<pubDate>Wed, 18 Nov 2009 16:51:57 +0000</pubDate>
<dc:creator>garyewer</dc:creator>
<guid>http://garyewer.wordpress.com/2009/11/18/song-analysis-rob-thomas-someday/</guid>
<description><![CDATA[by Gary Ewer, from “The Essential Secrets of Songwriting” website. FOLLOW Gary on Twitter, for songw]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>by Gary Ewer, from “<a href="http://www.secretsofsongwriting.com/">The Essential Secrets of Songwriting</a>” website.<br />
<strong><a href="http://www.twitter.com/garyewer" target="_blank"><img class="alignleft size-full wp-image-941" title="Twitter" src="http://garyewer.wordpress.com/files/2009/11/twitter-161.gif" alt="" width="16" height="16" /></a> <a href="http://www.twitter.com/garyewer" target="_blank">FOLLOW Gary on Twitter</a></strong>, for songwriting tips and news.<br />
_____________</p>
<p><a href="http://garyewer.wordpress.com/files/2009/11/robthomas1.jpg"><img class="alignleft size-full wp-image-934" style="margin:5px;" title="Rob Thomas" src="http://garyewer.wordpress.com/files/2009/11/robthomas1-e1258632504201.jpg" alt="" width="135" height="90" /></a>Rob Thomas&#8217; latest single, &#8220;Someday&#8221;, from his &#8220;Cradlesong&#8221; album, features at least a couple of techniques that will interest songwriters. One is the concept of introducing a new melody as a &#8220;replacement chorus&#8221; in the latter half of a song; another is the overlaying of a persistent melodic fragment that could be best described as a &#8220;melodic badge.&#8221;</p>
<p>First, here&#8217;s a look at the song&#8217;s formal design:</p>
<p style="text-align:center;"><a href="http://garyewer.wordpress.com/files/2009/11/someday.jpg"><img class="size-full wp-image-925 aligncenter" title="Someday - Rob Thomas" src="http://garyewer.wordpress.com/files/2009/11/someday.jpg" alt="" width="400" height="198" /></a></p>
<p><strong>FORM</strong></p>
<p>Let&#8217;s deal with the new melody introduced in the last minute of the song. It is introduced at the 2&#8242; 50&#8243; mark, and provides the song with a great variation on the typical verse &#8211; chorus &#8211; bridge format. It would be typical (and perhaps too predictable?) to simply repeat the chorus again. It&#8217;s likely that after three renditions of the song&#8217;s chorus, the writers felt there was nothing much new that could be done to it, and keeping the song fresh was a concern. In such a circumstance, developing a new melody based on the old harmonic progression was a small stroke of genius.</p>
<p><strong>MELODY</strong></p>
<p>The song uses a background melodic figure, first presented in the introduction, as a type of musical adhesive, drawing the various formal elements together. The figure plays on three notes of the Bbsus4 chord, never really resolving (you might expect to hear the Eb from that chord resolve downward to D, but doesn&#8217;t happen), and this lack of tonal resolution imbues it with a strong sense of forward motion. Because it does its work mostly in the background, it can be thought of as a kind of musical &#8220;badge&#8221; rather than a hook <em>pre se</em>. And because the figure never develops or changes in any way, it would not be proper to think of it as a <em>motif</em>.</p>
<p><strong>HARMONY</strong></p>
<p>Except for the bridge, the song uses the same I &#8211; IV &#8211; ii progression (Bb Eb Cm) throughout. Harmonic fatigue is a risk if you choose to use the same chords, but you can combat this by moving the melodic plateau higher for the chorus. The melody for the verse dwells on the 3rd of the key (the D in the key of Bb major), while the chorus constantly hits on the note F.</p>
<p>So the compositional devices that songwriters should make note of that make this song work are:</p>
<ol>
<li><strong>Use of a melodic badge</strong> that provides cohesion throughout the song, remaining constant regardless of the changing harmonies beneath it.</li>
<li><strong>Use of a unique melody introduced in the latter half of a song </strong>that provides something novel and fresh, useful especially when the harmonic treatment of the verse and chorus are identical.</li>
<li><strong>Use of plateau pitches</strong> that provide a foundation for the notes of the melody to focus on, moving upward as the song moves from the verse to the chorus.</li>
</ol>
<p>The real beauty of &#8220;Someday&#8221;, and the techniques used, is <em>the simplicity of the final product.</em> It&#8217;s a reminder that great songs are measured in how individual elements support each other, and that most songs do quite well with just a touch of innovation and a healthy dose of predictable structure.<br />
_____________</p>
<p><strong><a href="http://www.secretsofsongwriting.com/prepurchase2.html"><img class="alignleft size-thumbnail wp-image-935" style="margin-left:5px;margin-right:5px;" title="Gary Ewer's Songwriting E-books" src="http://garyewer.wordpress.com/files/2009/11/all_6_refl6.jpg?w=120" alt="" width="120" height="150" /></a>Unleash the songwriter within you. <a href="http://www.secretsofsongwriting.com/prepurchase2.html">Check out The Essential Secrets of Songwriting e-book bundle by clicking here!</a></strong><a href="http://www.secretsofsongwriting.com/prepurchase2.html"> </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Conception d’un client Eclipse RCP et serveur OSGI avec Spring DM [step6]]]></title>
<link>http://angelozerr.wordpress.com/2009/11/17/rcp_springdm-step6/</link>
<pubDate>Tue, 17 Nov 2009 22:38:49 +0000</pubDate>
<dc:creator>akrogen</dc:creator>
<guid>http://angelozerr.wordpress.com/2009/11/17/rcp_springdm-step6/</guid>
<description><![CDATA[Dans le billet précédant [step5] nous avons mis en place les 3 couches Client/Services/Domain découp]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Dans le <a href="http://angelozerr.wordpress.com/2009/11/11/rcp_springdm-step5/">billet précédant [step5]</a> nous avons mis en place les 3 couches Client/Services/Domain découpées en plusieurs Bundles :</p>
<ul>
<li>Couche Domain gérée par le bundle <strong>org.dynaresume.domain</strong>.</li>
<li>Couche Services gérée par les 2 bundles :
<ul>
<li>API Services <strong>org.dynaresume.services</strong> qui contient l&#8217;interface UserService.</li>
<li>Implémentation Services <strong>org.dynaresume.services.impl</strong> qui exporte UserServiceImpl, l&#8217;implémentation de l&#8217;interface UserService dans le registre de services OSGi.</li>
</ul>
</li>
<li>Couche Client qui consomme via le registre de services OSGi, le service UserServiceImpl, géré par le bundle <strong>org.dynaresume.simpleosgiclient</strong>.</li>
</ul>
<p>Dans ce billet et le prochain nous allons montrer pas à pas l&#8217;interêt d&#8217;utiliser <a href="http://www.springsource.org/osgi">Spring Dynamic Module</a> en nous concentrant sur le bundle <strong>org.dynaresume.services.impl</strong> qui a pour rôle d&#8217;enregistrer une instance UserServiceImpl dans le registre de services OSGi. Dans ce billet nous allons utiliser basiquement <a href="http://www.springsource.org/">Spring </a>. Voici un schéma de ce que nous allons effectuer dans ce billet :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_step6overview.png" /></p>
<p>Ce schéma montre que :</p>
<ul>
<li>La classe ServicesFactory est basée sur un fichier <a href="#xmlBean">XML Spring applicationContext.xml</a> qui permet de déclarer la classe UserServiceImpl. C&#8217;est le conteneur Spring qui s&#8217;occupera d&#8217;instancier cette classe. Spring joue le rôle dans notre cas de factory de services.</li>
<li>la <a href="#TargetPlatform">Target Platform</a> doit être enrichie pour ajouter tous les bundles Spring.</li>
<li>le bundle <strong>org.dynaresume.services.impl</strong>  fera référence aux bundle Spring de la Target Platform via les dépendances Import Package.</li>
</ul>
<p>Le but de ce billet est d&#8217;introduire Spring en montrant comment déclarer l&#8217;instanciation du service UserServiceImpl via Spring  :</p>
<ul>
<li><a href="#springWithoutOSGiContext">dans un contexte non OSGi</a>. Nous repartirons des projets du <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step1/"> billet [step1]</a> et notre factory de services ServicesFactory se basera sur Spring. Nous montrerons qu&#8217;il existe 2 manières de déclarer le service UserServiceImpl avec Spring:
<ul>
<li><a href="#xmlBean">XML bean</a> : la déclaration s&#8217;effectue <strong>tout en XML</strong>.
        </li>
<li><a href="#serviceAnnotation">@Service annotation</a> : la déclaration s&#8217;effectue via l&#8217;<strong>annotation Spring @Service</strong>.</li>
</ul>
<p>  Nous verrons comment <a href="#Log4j">configurer Log4j dans un contexte non OSGi</a>.
</li>
<li><a href="#springWithOSGiContext">dans un contexte OSGi</a>. Nous partirons des projets <a href="http://angelozerr.wordpress.com/2009/11/11/rcp_springdm-step5/">du billet [step5]</a> et notre factory de services ServicesFactory se basera sur Spring. Nous tenterons d&#8217;utiliser les 2 modes de déclarations en mettant en évidence toutes les problématiques de mise en oeuvre de Spring dans un contexte OSGi (problème lié au classloader). Attention, ici nous n&#8217;utiliserons pas encore Spring DM, mais uniquement Spring Framework et dans le prochain billet nous verrons comment Spring DM simplifie le code expliqué dans cette section.
<p>Nous verrons comment <a href="#Log4jFragment">configurer Log4j dans un contexte OSGi</a> via un Fragment OSGi.</li>
</ul>
<p><!--more--></p>
<h2>I. Spring, mais pourquoi?</h2>
<p>Dans le projet <a href="http://code.google.com/p/dynaresume/">DynaResume</a> nous avons choisi d&#8217;utiliser <a href="">Spring Dynamic Module</a> qui permet entre autres de <strong>déclarer l&#8217;enregistrement/la consommation des services dans le registre de service OSGi</strong>. Ceci signifie que <strong>l&#8217;enregistrement/la consommation des services n&#8217;a plus besoin de s&#8217;effectuer programatiquement en utilisant l&#8217;API de OSGi (ServiceTracker&#8230;.) mais déclarativement à l&#8217;aide de XML</strong>, (et avec des annotations Spring).</p>
<p>La spécification OSGi propose aussi la possibilité de déclarer les services OSGi avec <a href="http://www.eclipsezone.com/eclipse/forums/t97690.rhtml">Declarative Services</a>. Pourquoi avons nous fait le choix d&#8217;utiliser Spring Dynamic Module au lieu de Declarative Services? Nous avons été séduit par Spring, car c&#8217;est &#8220;une solution tout en un&#8221;. En effet nous n&#8217;avons pas encore abordé les autres problématiques concernant le développement d&#8217;un client RCP et serveur OSGi, mais Spring est capable de gérer aussi les problématiques suivantes: </p>
<ul>
<li>Avoir accès aux puissantes fonctionnalités de DI <em>(Dependency Injection</em>) et d&#8217;AOP de Spring pour configurer ses services</li>
<li>le remoting (client/serveur) qui peut être géré via Spring remoting.</li>
<li>lla gestion des transactions de base de données qui peut être gérée via AOP de Spring.</li>
<li>la sécurité qui peut être géré via Spring Security.</li>
</ul>
<h2>I. JARs Spring</h2>
<h3>Distribution  (Spring DM)</h3>
<p>Vous pouvez trouvez les JARs de Spring utilisés dans ce billet dans le zip <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step6/org.dynaresume_step6_spring-target-platform.zip">org.dynaresume_step6_spring-target-platform.zip</a>. Mais je vous conseille de télécharger les JARs de Spring sur le site officiel de Spring, expliqué ci dessus.</p>
<p>Dans ce billet nous allons utiliser Spring <a href="#springWithoutOSGiContext">dans un contexte sans OSGi</a> et <a href="#springWithOSGiContext">dans un contexte avec OSGi</a>. Spring est découpé en plusieurs JARs (spring-core.jar&#8230;) que nous devons télécharger.  Dans le cas d&#8217;un contexte sans OSGi, nous aurrions pu télécharger les JARs standard de la distribution <a href="http://www.springsource.com/download?project=Spring%20Framework">Spring Framework</a>. Mais nous n&#8217;allons pas utiliser cette distribution mais celle de <a href="http://www.springsource.com/products/spring-community-download">Spring Dynamic Modules</a> qui contient aussi les même JAR (spring-core.jar) mais <em>OSGifier</em>, autrement dit chacun de ces jars contiennent en plus un fichier MANIFEST.MF enrichit avec les méta données OSGi (dépendances, packages exportés&#8230;). Ceci nous montrera qu&#8217;il est possible d&#8217;utiliser un JAR OSGifier dans un contexte non OSGi.</p>
<h3>Installation Spring DM</h3>
<p>Il existe plusieurs manières de récupérer les JARs de Spring DM : </p>
<ul>
<li>à l&#8217;aide du plugin Eclipse <a href="http://www.springsource.com/products/springide">Spring IDE</a></li>
<li>à l&#8217;aide de <a href="http://maven.apache.org/">Maven</a></li>
<li>en <a href="#downloadSpringDM">téléchargeant un zip de la distribution de Spring DM</a></li>
</ul>
<h3 id="downloadSpringDM">Téléchargement  (Spring DM)</h3>
<p>Dans la page de <a href="http://www.springsource.org/download">téléchargement des distributions de Spring</a>, téléchargez la distribution <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules">Spring Dynamic Modules</a> (la version actuelle est <strong>Current GA release &#8211; 1.2.0</strong>), ceci ouvre le formulaire suivant qui demande des informations pour pouvoir ensuite télécharger Spring :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_springdmdownload1.png" /></p>
<p>Après avoir rempli vos informations personnelles et cliquez sur le bouton <strong>Acess Download</strong>, ou plus simple encore, sauter cette étape en cliquant sur le lien &#8220;<em>(I&#8217;d rather not fill in the form. Just take me to the download page)</em>&#8220;, la page qui propose les liens de téléchargement sur Spring DM s&#8217;affiche :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_springdmdownload2.png" /></p>
<p>A l&#8217;heure actuelle, la dernière version de Spring Dynamic Modules est <strong>Current GA release &#8211; 1.2.0</strong>. Téléchargez la distribution (avec dépendances) <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules&#38;version=1.2.0">spring-osgi-1.2.0-with-dependencies.zip</a></p>
<h3>Contenu distribution (Spring DM)</h3>
<p>Ce zip contient plusieurs répertoires dont : </p>
<ul>
<li>lib qui contient tous les JArs de Spring (Framework) et ces dépendances.</li>
<li>dist qui contient tous les JArs de Spring Dynamic Module.</li>
</ul>
<h2 id="springWithoutOSGiContext">Spring (contexte sans OSGi)</h2>
<p>Le bundle <strong>org.dynaresume.services.impl</strong> enregistre dans le registre de services OSGi une instance de UserServiceImpl récupéré par la classe ServicesFactory. Dans ce billet nous allons nous concentrer sur cette factory de services qui aujourd&#8217;hui s&#8217;occupe <strong>d&#8217;instancier l&#8217;instance de UserServiceImpl programmatiquement</strong> :</p>
<pre class="brush: java;">public UserService getUserService() {
  if (userService == null) {
    userService = createUserService();
  }
  return userService;
}

private UserService createUserService() {
  UserService userService = new UserServiceImpl();
  return userService;
}</pre>
<p>Nous allons montrer qu&#8217;avec Spring il est possible de <strong>gérer l&#8217;instanciation des service déclarativement</strong> via un fichier XML Spring de configuration. Je ne vais pas faire un tutorial sur Spring car la documentation officielle est très détaillé et il existe une multitude de documentation sur Internet. Et ne vous arrêtez surtout pas à l&#8217;idée que Spring permet uniquement de déclarer en XML ses services!!! Il permet beaucoup plus que ca. <strong>Spring est un conteneur léger basé sur les principes de AOP et IOC</strong>. Cette définition effraie au début mais je tenterais d&#8217;expliquer ses concepts au fur et à mesure dans mes billets.</p>
<p>Dans cette section nous allons présenter les 2 mode de déclarations : </p>
<ul>
<li><a href="#xmlBean">XML bean</a> : la déclaration s&#8217;effectue <strong>tout en XML</strong>.
        </li>
<li><a href="#serviceAnnotation">@Service annotation</a> : la déclaration s&#8217;effectue via l&#8217;<strong>annotation Spring @Service</strong>.</li>
</ul>
<h3>Initialisation Spring</h3>
<p>Nous allons partir des projets <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step1/org.dynaresume_step1.zip">org.dynaresume_step1.zip</a> du <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step1/">billet [step1]</a> et modifier le projet Java <strong>org.dynaresume.services</strong>. </p>
<p>Nous allons ajouter les Jars de Spring via <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step1/#JavaBuildPathAddJar">Java Build Path</a>. Pour cela : </p>
<ul>
<li><strong>Créer un répertoire lib</strong> dans le projet java <strong>org.dynaresume.services</strong></li>
<li> copiez coller dans le répertoire lib les libraires Jars Spring suivantes de la distribution Spring :<br />
<table>
<tr>
<th>Jar</th>
<th>Description</th>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.api-1.5.0.jar</strong></td>
<td>L&#8217;API public de SLF4J</td>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.log4j-1.5.0.jar</strong></td>
<td>L&#8217;implémentation de SLF4J qui utilise log4j pour faire le logging</td>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar</strong></td>
<td>Un remplaçant d&#8217;Apache commons-logging (réputé pour ses problèmes liés au classloading) qui utilise SLF4J pour le logging</td>
</tr>
<tr>
<td>lib/<strong>log4j.osgi-1.2.15-SNAPSHOT.jar</strong></td>
<td>La version OSGifié de log4j</td>
</tr>
<tr>
<td>lib/<strong>org.springframework.beans-2.5.6.A.jar</strong></td>
<td>Extensions à spring (Spring Framework)</td>
</tr>
<tr>
<td>lib/<strong>org.springframework.context-2.5.6.A.jar</strong></td>
<td>Extensions à spring (Spring Framework)</td>
</tr>
<tr>
<td>lib/<strong>org.springframework.core-2.5.6.A.jar</strong></td>
<td>Extensions à spring (Spring Framework)</td>
</tr>
</table>
</li>
<li>Ajoutez ces libraires au classpath du projet :
  </li>
</ul>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_springstandalonelib1.png" /></p>
<h3 id="xmlBean">XML bean</h3>
<p>Vous pouvez télécharger <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step6/org.dynaresume_step6-spring-standalone.zip">org.dynaresume_step6-spring-standalone.zip</a> qui contient le code expliqué ci-dessous. </p>
<p>Créez le fichier XML Spring de configuration <strong>applicationContext.xml</strong> dans le package <strong>org.dynaresume.services</strong> :</p>
<pre class="brush: xml;">&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;beans xmlns=&#34;http://www.springframework.org/schema/beans&#34;
	xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
	xsi:schemaLocation=&#34;http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&#34;&#62;
	&#60;bean id=&#34;userService&#34; class=&#34;org.dynaresume.services.impl.UserServiceImpl&#34;&#62;&#60;/bean&#62;
&#60;/beans&#62;</pre>
<p>Cette configuration permet de <strong>définir un bean d&#8217;ID userService</strong> de classe org.dynaresume.services.impl.<strong>UserServiceImpl</strong>. Ce fichier XML Spring peut ensuite être chargé dans le contexte d&#8217;application Spring. Ce contexte est représenté par l&#8217;interface org.springframework.context.<strong>ApplicationContext</strong> qui hérite de org.springframework.beans.factory.<strong>BeanFactory</strong> qui possède entre autres la méthode :</p>
<pre class="brush: java;">Object ApplicationContext#getBean(String name) </pre>
<p>qui permet de retourner une instance d&#8217;une classe définit dans le fichier XML Spring chargé. Par exemple dans notre cas, pour récupérer une instance de UserServiceImpl, nous devons faire : </p>
<pre class="brush: java;">UserService UserService = (UserService)applicationContext.getBean(&#34;userService&#34;) </pre>
<p>Voici les classes implémentant l&#8217;interface org.springframework.context.<strong>ApplicationContext</strong> : </p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_springapplicationcontexthierarchy.png" /></p>
<p>Ce schéma met en évidence 2 implémentations : </p>
<ul>
<li>org.springframework.context.support.<strong>ClassPathXmlApplicationContext</strong>, qui permet de charger un fichier XML Spring de configuration stocké dans un package (c&#8217;est ce que que nous allons utiliser).</li>
<li>org.springframework.context.support.<strong>FileSystemXmlApplicationContext</strong>, qui permet de charger un fichier XML Spring de configuration stocké dans un répertoire</li>
</ul>
<p>Modifiez la classe org.dynaresume.services.<strong>ServicesFactory</strong> comme suit :</p>
<pre class="brush: java;">package org.dynaresume.services;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ServicesFactory {

	private static ServicesFactory INSTANCE = new ServicesFactory();
	private ApplicationContext applicationContext = null;

	private ServicesFactory() {

	}

	public static ServicesFactory getInstance() {
		return INSTANCE;
	}

	public UserService getUserService() {
		return (UserService) getApplicationContext().getBean(&#34;userService&#34;);
	}

	private ApplicationContext getApplicationContext() {
		if (applicationContext == null) {
			initalizeApplicationContext();
		}
		return applicationContext;
	}

	private void initalizeApplicationContext() {
		try {
			applicationContext = new ClassPathXmlApplicationContext(
					&#34;org/dynaresume/services/applicationContext.xml&#34;);
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}</pre>
<p>Le code </p>
<pre class="brush: java;">private void initalizeApplicationContext() {
	try {
		applicationContext = new ClassPathXmlApplicationContext(
				&#34;org/dynaresume/services/applicationContext.xml&#34;);
	} catch (Throwable e) {
		e.printStackTrace();
	}
}</pre>
<p>permet de charger la configuration XML Spring applicationContext.xml stocké dans le package org.dynaresume.services</p>
<p>Relancez et vous verrez dans la console : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).<br />
log4j:WARN Please initialize the log4j system properly.<br />
User [login=angelo, password=]<br />
User [login=djo, password=]<br />
User [login=keulkeul, password=]<br />
User [login=pascal, password=]</code></div>
<h3 id="Log4j">Configuration Log4j</h3>
<p>Le service a bien pu etre récupéré correctement via Spring, mais nous avons le warning log4j qui s&#8217;affiche : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).<br />
log4j:WARN Please initialize the log4j system properly.<br />
</code></div>
<p>Pour y remedier, nous allons configurer <a href="http://logging.apache.org/log4j/">Log4j</a> correctement. pour cela <strong>créez dans le répertoire src du projet, le fichier de propriétés log4j.properties</strong> avec ce contenu : </p>
<pre class="brush: plain;">log4j.rootLogger=info, con
log4j.appender.con=org.apache.log4j.ConsoleAppender
log4j.appender.con.layout=org.apache.log4j.PatternLayout
log4j.appender.con.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n</pre>
<p>Cette configuration basique de <a href="http://logging.apache.org/log4j/">Log4j</a> permet d&#8217;afficher dans la console les logs de niveau INFO.</p>
<p>Relancez et vous verrez dans la console : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>0    [main] INFO  org.springframework.context.support.ClassPathXmlApplicationContext  - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@b42cbf: display name [org.springframework.context.support.ClassPathXmlApplicationContext@b42cbf]; startup date [Tue Nov 17 14:34:41 CET 2009]; root of context hierarchy<br />
63   [main] INFO  org.springframework.beans.factory.xml.XmlBeanDefinitionReader  - Loading XML bean definitions from class path resource [org/dynaresume/services/applicationContext.xml]<br />
219  [main] INFO  org.springframework.context.support.ClassPathXmlApplicationContext  - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@b42cbf]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1c80b01<br />
235  [main] INFO  org.springframework.beans.factory.support.DefaultListableBeanFactory  - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1c80b01: defining beans [userService]; root of factory hierarchy<br />
User [login=angelo, password=]<br />
User [login=djo, password=]<br />
User [login=keulkeul, password=]<br />
User [login=pascal, password=]<br />
</code></div>
<p><a href="http://logging.apache.org/log4j/">Log4j</a> est configuré correctement. Sa configuration consiste à <strong>mettre le fichier de propriétés log4j.properties retrouvés dans le ClassLoader unique de l&#8217;application</strong><br />
.</p>
<h3 id="serviceAnnotation">@Service annotation</h3>
<p>Vous pouvez télécharger <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step6/org.dynaresume_step6-spring-standalone-annotations.zip">org.dynaresume_step6-spring-standalone-annotations.zip</a> qui contient le code expliqué ci-dessous.</p>
<p>Dans une vrai application, le nombre de services à déclarer peut devenir conséquent. Pour alléger le fichier XML Spring de configuration, Spring est capable de retrouver les services en les scrutant dans un package. Pour effectuez cela : </p>
<ol>
<li>il suffit d&#8217;indiquer le package de base des implémentation des services dans le fichier XML de configuration à l&#8217;aide de l&#8217;élement XML <strong>component-scan</strong>. Par exemple :
<pre class="brush: xml;">&#60;context:component-scan base-package=&#34;org.dynaresume.services.impl&#34; /&#62;</pre>
</li>
<li>indiquer l&#8217;ID du bean dans la classe d&#8217;implémentation de services à l&#8217;aide de l&#8217;annotation Spring org.springframework.stereotype.<strong>Service</strong>. Par exemple :
<pre class="brush: java;">import org.springframework.stereotype.Service;

@Service(&#34;userService&#34;)
public class UserServiceImpl ...</pre>
</li>
</ol>
<p>Modifiez le fichier XML Spring de configuration <strong>applicationContext.xml</strong> dans le package <strong>org.dynaresume.services</strong> :</p>
<pre class="brush: xml;">&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;beans xmlns=&#34;http://www.springframework.org/schema/beans&#34;
	xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
	xmlns:context=&#34;http://www.springframework.org/schema/context&#34;
	xsi:schemaLocation=&#34;
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd&#34;&#62;

	&#60;context:component-scan base-package=&#34;org.dynaresume.services.impl&#34; /&#62;

&#60;/beans&#62;</pre>
<p>Ajoutez l&#8217;annotation Spring org.springframework.stereotype.<strong>Service</strong> dans la classe org.dynaresume.services.impl.<strong>UserServiceImpl</strong> en indiquant l&#8217;ID du bean avec la valeur <strong>userService</strong> : </p>
<pre class="brush: java;">package org.dynaresume.services.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.dynaresume.domain.User;
import org.dynaresume.services.UserService;
import org.springframework.stereotype.Service;

@Service(&#34;userService&#34;)
public class UserServiceImpl implements UserService {
...
}</pre>
<p>Relancez et vous pourrez constatez que le service UserServiceImpl est instancié correctement via Spring.</p>
<h2 id="springWitOSGiContext">Spring (contexte avec OSGi)</h2>
<p>Dans cette section nous allons utiliser Spring dans un contexte OSGi et verrons que le ClassLoader/bundle pose problème et verrons comment y remédier. Nous allons partir des projets <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step5/org.dynaresume_step5-import-package.zip">org.dynaresume_step5-import-package.zip</a> du <a href="http://angelozerr.wordpress.com/2009/11/11/rcp_springdm-step5/">billet [step5]</a> et modifier le bundle <strong>org.dynaresume.services.impl</strong>. </p>
<h3 id="TargetPlatform">Target Platform</h3>
<p>Dans cette section nous allons enrichir la Target Platform <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#TargetPlatform">DynaResume Target Platform [step 2]</a> pour ajouter les bundles Spring. Vous pouvez télécharger <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step6/org.dynaresume_step6_spring-target-platform.zip">org.dynaresume_step6_spring-target-platform.zip</a> du projet Simple Eclipse <strong>spring-target-platform</strong> qui contient : </p>
<ul>
<li>les JARs Spring nécéssaire pour notre Target Platform.</li>
<li>le fichier target <a href="#TargetFile">DynaResume Target Platform.target</a> qui est la Target Platform que nous allons créé ci-dessous. Si jamais vous utilisez ce projet, les étapes suivantes ne sont pas nécéssaires. En effet Eclipse détecte l&#8217;existence de tous les fichiers *.target ouverts dans Eclipse et les affichent dans la page de Preferences des Target Platform. Il faut juste bien penser à activer cette target.</li>
</ul>
<p>Avant de modifier le bundle <strong>org.dynaresume.services.impl</strong> pour utiliser Spring, nous devons ajouter à la Target Platform les bundles Spring nécéssaires qui sont les mêmes JARs utilisés dans la section <a href="#springWithoutOSGiContext">Spring (contexte sans OSGi)</a>. Pour effectuer cela nous allons : </p>
<ul>
<li>Créer un projet Simple Eclipse qui contient les JArs Spring</li>
<li>Référencer dans la Target Platform, les JArs de ce projet Eclipse</li>
<li>Sauvegarder (si besoin) la Target Platform dans un fichier <a href="#TargetFile">DynaResume Target Platform.target</a>.</li>
</ul>
<p>Remarque : ici j&#8217;utilise un projet Simple Eclipse qui contiennent les JArs Spring, mais ceux-ci peuvent être contenus dans un répertoire de votre disque sans que ca soit un projet Simple Eclipse.</p>
<h4 id="TargetPlatformProject">Target Platform Project</h4>
<p>Ici nous allons créer le projet Simple <strong>spring-target-platform</strong> pour cela sélectionnez le menu <strong>File/New/Other</strong> puis <strong>Project</strong> :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_tpstep6project1.png" /> </p>
<p>Cliquez sur Next et renseignez le champs Project name avec <strong>spring-target-platform</strong> :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_tpstep6project2.png" /></p>
<p>Copiez collez dans le projet Eclipse créé, les JARs Spring suivant de la distribution <a href="http://www.springsource.com/download/community?project=Spring%20Dynamic%20Modules&#38;version=1.2.0">spring-osgi-1.2.0-with-dependencies.zip</a> : </p>
<table>
<tr>
<th>Jar</th>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.api-1.5.0.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.log4j-1.5.0.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>log4j.osgi-1.2.15-SNAPSHOT.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>org.springframework.beans-2.5.6.A.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>org.springframework.context-2.5.6.A.jar</strong></td>
</tr>
<tr>
<td>lib/<strong>org.springframework.core-2.5.6.A.jar</strong></td>
</tr>
</table>
<p>Le projet <strong>spring-target-platform</strong> est prêt à être référencé par la Target Platform.</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_tpstep6project3.png" /></p>
<h4>Définition Target Platform</h4>
<p>Ici nous allons modifier la Target Platform existante en ajoutant une référence sur les bundles Spring du projet Eclipse <strong>spring-target-platform</strong>.</p>
<p>Editez la Target Platform <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#TargetPlatform">DynaResume Target Platform [step 2]</a> en cliquant sur le bouton <strong>Edit&#8230;</strong> :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplaformaddspringbundle11.png" /></p>
<p>L&#8217;ecran suivant s&#8217;affiche :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplaformaddspringbundle2.png" /></p>
<p>Cliquez sur le bouton <strong>Add&#8230;</strong>, l&#8217;écran suivant s&#8217;affiche  :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplaformaddspringbundle3.png" /></p>
<p>Sélectionnez <strong>Directory</strong>, puis <strong>Next</strong>, l&#8217;écran suivant s&#8217;affiche  :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplaformaddspringbundle4.png" /></p>
<p>Saisissez <strong>${workspace_loc}/spring-target-platform</strong> pour faire référence au projet Eclipse <strong>spring-target-platform</strong> du workspace.</p>
<p>Cliquez sur <strong>Finish</strong> : </p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplaformaddspringbundle5.png" /></p>
<p>Cliquez sur <strong>Finish</strong> puis sur <strong>Finish</strong>. La Target Platform est initialisé correctement avec les bundles Spring du projet spring-target-platform</strong>.</p>
<h4 id="TargetFile">DynaResume Target Platform.target</h4>
<p>Dans un projet il est important de pouvoir partager ses Target Platform (c&#8217;est ce que nous avons fait dans le projet <a href="http://code.google.com/p/dynaresume/">DynaResume</a>). Pour récupérer la Target Platform que nous venons de crééer, le seul moyen que j&#8217;ai trouvé est de la récupérer dans le répertoire <strong>.metadata</strong> de votre workspace.</p>
<p>Accédez au repertoire <strong>.metadata\.plugins\org.eclipse.pde.core\.local_targets</strong> de votre workspace. Le répertoire .metadata contient toutes les méta données des plugin Eclipse. PDE stocke les targets définies dans les Prefrences dans le répertoire <strong>.local_targets</strong> : </p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_metadatapdelocaltarget.png" /></p>
<p>Dans ce répertoire, vous trouverez plusieurs fichiers *.target.  Pour connaître le fichier de la target correspondant à DynaResume Target Platform, vous pouvez ouvrir les fichiers *.target dans Eclipse qui ouvrira un Editor de Target. Voici dans mon cas le fichier 1258470547375.target ouvert dans l&#8217;Editor :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_targetplatformeditor.png" /></p>
<p>Vous pouvez copier coller ce fichier et le renommez en DynaResume Target Platform.target.</p>
<h3 id="xmlBean">XML bean</h3>
<p>Dans cette section nous allons utiliser Spring dans le bundle OSGi <strong>org.dynaresume.services.impl</strong> en full XML. Vous pouvez télécharger <a href="http://dl.dropbox.com/u/2903680/wordpress-blog/tutoriels/eclipse/rcp_springdm/step6/org.dynaresume_step6-spring-osgi.zip">org.dynaresume_step6-spring-osgi.zip</a> qui contient le code expliqué ci-dessous. </p>
<p>Créez le fichier XML Spring de configuration <strong>applicationContext.xml</strong> dans le package <strong>org.dynaresume.services.internal</strong> :</p>
<pre class="brush: xml;">&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;beans xmlns=&#34;http://www.springframework.org/schema/beans&#34;
	xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
	xsi:schemaLocation=&#34;http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&#34;&#62;
	&#60;bean id=&#34;userService&#34; class=&#34;org.dynaresume.services.impl.UserServiceImpl&#34;&#62;&#60;/bean&#62;
&#60;/beans&#62;</pre>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importez les packages</a> <strong>org.springframework.context</strong>  et<br />
<strong>org.springframework.context.support</strong> pour avoir accès à l&#8217;interface org.springframework.context.<strong>ApplicationContext</strong> et la classe org.springframework.context.support.<strong>ClassPathXmlApplicationContext</strong>.</p>
<p>Modifiez la classe ServicesFactory pour utiliser Spring et charger le fichier <strong>applicationContext.xml</strong> comme ce que nous avons effectué dans un contexte sans OSGi :</p>
<pre class="brush: java;">package org.dynaresume.services.internal; 

import org.dynaresume.services.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ServicesFactory {

	private static ServicesFactory INSTANCE = new ServicesFactory();
	private ApplicationContext applicationContext = null;

	private ServicesFactory() {

	}

	public static ServicesFactory getInstance() {
		return INSTANCE;
	}

	public UserService getUserService() {
		return (UserService) getApplicationContext().getBean(&#34;userService&#34;);
	}

	private ApplicationContext getApplicationContext() {
		if (applicationContext == null) {
			initalizeApplicationContext();
		}
		return applicationContext;
	}

	private void initalizeApplicationContext() {
		try {
			applicationContext = new ClassPathXmlApplicationContext(
					&#34;org/dynaresume/services/internal/applicationContext.xml&#34;);
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}</pre>
<p>Le probléme de compilation apparaît :</p>
<p><cite>The type org.springframework.core.io.support.ResourcePatternResolver cannot be resolved. It is indirectly referenced from required .class files</cite></p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_resourcepatternresolvercomplienok.png" /></p>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importez le package</a> <strong>org.springframework.core.io.support</strong></p>
<p>Le probléme de compilation apparaît : </p>
<p><cite>The type org.springframework.beans.factory.HierarchicalBeanFactory cannot be resolved. It is indirectly referenced from required .class files</cite></p>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importez le package</a> <strong>org.springframework.beans.factory</strong></p>
<p>Le Bundle doit compiler. Avant de relancer, assurez vous que les les <strong>3 bundles com.springsource.*</strong> et les <strong>4 bundles org.springframework.*</strong> ajoutés à la Target Platform sont bien lancé via la configuration OSGi DynaResume en éditant la configuration OSGi DynaResume : </p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_runconfigurationselectspringbundle.png" /></p>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2#Run">Relancez (via OSGi DynaResume) Equinox</a> et la console OSGi affiche l&#8217;erreur suivante : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org/dynaresume/services/internal/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [org/dynaresume/services/internal/applicationContext.xml] cannot be opened because it does not exist<br />
...<br />
Caused by: java.io.FileNotFoundException: class path resource [org/dynaresume/services/internal/applicationContext.xml] cannot be opened because it does not exist<br />
...</code></div>
<p>La classe ClassPathXmlApplicationContext est incapable de retrouver le fichier XML de configuration dans le package du bundle. Ce problème s&#8217;explique par le fait que chaque bundle à son propre ClassLoader. la classe ClassPathXmlApplicationContext qui appartient au bundle <strong>org.springframework.context.support</strong> cherche ce fichier dans le ClassLoader de son bundle, ce qui explique l&#8217;erreur.</p>
<p>Pour résoudre ce problème, il faut indiquer à l&#8217;instance ClassPathXmlApplicationContext le ClassLoader à utiliser qui doit être celui du bundle <strong>org.dynaresume.services.impl</strong>. Pour cela modifier la méthode privée <strong>ServicesFactory#initalizeApplicationContext()</strong> comme suit : </p>
<pre class="brush: java;">private void initalizeApplicationContext() {
	try {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext();
		applicationContext.setConfigLocation(&#34;org/dynaresume/services/internal/applicationContext.xml&#34;);
		applicationContext.setClassLoader(this.getClass().getClassLoader());
		applicationContext.refresh();
		this.applicationContext = applicationContext;
	} catch (Throwable e) {
		e.printStackTrace();
	}
}</pre>
<p>Un problème de compilation apparaît : </p>
<p><cite>Access restriction: The method setClassLoader(ClassLoader) from the type DefaultResourceLoader is not accessible due to restriction on required library D:\_Projets\Personal\workspace-gestcv-osgi-wordpress\step6\spring-target-platform\org.springframework.core-2.5.6.A.jar</cite></p>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importe les package</a> <strong>org.springframework.core.io</strong>. Le bundle doit compiler.</p>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2#Run">Relancez (via OSGi DynaResume) Equinox</a> et la console OSGi affiche l&#8217;erreur suivante : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]<br />
Offending resource: class path resource [org/dynaresume/services/internal/applicationContext.xml]<br />
...</code></div>
<p>Lors du chargement de la configuration Spring, le schema XML n&#8217;est pas trouvé car il est dans un autre Classloader. La solution trouvée à ce jour est de désactiver la validation du schéma XML. Pour cela créez la classe  org.dynaresume.services.internal.<strong>MyClassPathXmlApplicationContext</strong>:</p>
<pre class="brush: java;">package org.dynaresume.services.internal;

import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyClassPathXmlApplicationContext extends
		ClassPathXmlApplicationContext {

	@Override
	protected void initBeanDefinitionReader(
			XmlBeanDefinitionReader beanDefinitionReader) {
		beanDefinitionReader
				.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
	}
}</pre>
<p>Le problème de compilation apparaît, pour résoudre cela <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importez le package</a> <strong>org.springframework.beans.factory.xml</strong>.</p>
<p>Modifiez la méthode <strong>ServicesFactory#initalizeApplicationContext()</strong> pour utiliser notre classe MyClassPathXmlApplicationContext : </p>
<pre class="brush: java;">private void initalizeApplicationContext() {
	try {
		ClassPathXmlApplicationContext applicationContext = new MyClassPathXmlApplicationContext();
		applicationContext.setConfigLocation(&#34;org/dynaresume/services/internal/applicationContext.xml&#34;);
		applicationContext.setClassLoader(this.getClass().getClassLoader());
		applicationContext.refresh();
		this.applicationContext = applicationContext;
	} catch (Throwable e) {
		e.printStackTrace();
	}
}</pre>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2#Run">Relancez (via OSGi DynaResume) Equinox</a> et la console OSGi affiche : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>osgi&#62; Start Bundle [org.dynaresume.domain]<br />
Start Bundle [org.dynaresume.services]<br />
Start Bundle [org.dynaresume.simpleosgiclient]<br />
--- Get UserService from OSGi services registry with ServiceTracker ---<br />
 Cannot get UserService=&#62; UserService is null!<br />
Start Bundle [org.dynaresume.services.impl]<br />
log4j:WARN No appenders could be found for logger (org.springframework.core.io.support.PathMatchingResourcePatternResolver).<br />
log4j:WARN Please initialize the log4j system properly.<br />
--- Get UserService from OSGi services registry with ServiceTracker ---<br />
User [login=angelo, password=]<br />
User [login=djo, password=]<br />
User [login=keulkeul, password=]<br />
User [login=pascal, password=]</code></div>
<p>Cette trace montre que : </p>
<ul>
<li>Les 4 bundles sont lancés (trace de type Start Bundle)</li>
<li>le service UserService n&#8217;est pas publié :
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>--- Get UserService from OSGi services registry with ServiceTracker ---</code></div>
</li>
<li>Warning log4j qui indique que Log4j n&#8217;est pas configuré :
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>log4j:WARN No appenders could be found for logger (org.springframework.core.io.support.PathMatchingResourcePatternResolver).<br />
log4j:WARN Please initialize the log4j system properly.<br />
</code></div>
</li>
<li>le service UserService est ensuite publié et peut être consommé :
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>--- Get UserService from OSGi services registry with ServiceTracker ---<br />
User [login=angelo, password=]<br />
User [login=djo, password=]<br />
User [login=keulkeul, password=]<br />
User [login=pascal, password=]<br />
</code></div>
</li>
</ul>
<h2 id="Log4jFragment">Log4j Fragment</h2>
<p>Dans la console nous avons le message d&#8217;avertissement :</p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>log4j:WARN No appenders could be found for logger (org.springframework.core.io.support.PathMatchingResourcePatternResolver).<br />
log4j:WARN Please initialize the log4j system properly.</code></div>
<p>Ce qui signifie que <a href="http://logging.apache.org/log4j/">Log4j</a> n&#8217;est pas configuré. La configuration de log4j dans un contexte OSGi ne peut pas s&#8217;effectuer comme dans un contexte non OSGi car il n&#8217;y a pas de ClassLoader unique. Cette configuration s&#8217;effectue via un <strong>Fragment OSGi</strong>. Ce procédé est aussi valable pour d&#8217;autres bundles qui demande uen configuration (ex: paramétrage de la base de données).</p>
<p>Ici nous allons créer le Fragment (projet Plug-in) <strong>org.dynaresume.config.log4j</strong>. Pour cela sélectionnez le menu <strong>File/New/Other</strong> puis <strong>Plug-in Development/Fragment</strong> :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_newfragment1.png" /></p>
<p>Cliquez sur le bouton <strong>Next</strong>, puis :</p>
<ul>
<li>renseignez le champs Project name par <strong>org.dynaresume.config.log4j</strong>.</li>
<li>sélectionnez dans  la combo <strong>standard</strong> car notre Fragment n&#8217;a pas besoin de fonctionnalités spécifiques à <a href="http://www.eclipse.org/equinox/">Equinox</a> (conteneur OSGi aussi utilisé pour les Plug-in Eclipses). Il pourra ainsi fonctionner sur n&#8217;importe quel conteneur OSGI.</li>
</ul>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_newfragment2.png" /></p>
<p>Cliquez sur le bouton <strong>Next</strong>, le wizard qui permet de configurer le Fragment s&#8217;ouvre en pré-remplissant la plupart des champs. Voici une copie d&#8217;écran de ce wizard où j&#8217;ai mis en rouge ce que j&#8217;ai modifié :</p>
<ul>
<li>le champs <strong>ID</strong> est l&#8217;identifiant de notre Fragment. Il est pré-rempli en utilisant le nom du projet.</li>
<li>le champs <strong>Version</strong> est la version de notre Fragment. Il est pré-remplit avec <strong>1.0.0.qualifier</strong>.</li>
<li>le champs <strong>Name</strong> est le nom de notre Fragment. Cette information n&#8217;est pas très importante. Dans ce billet je l&#8217;ai renseigné avec <strong>DynaResume Log4j Config</strong></li>
<li>le champs <strong>Provider</strong> est généralement le nom de la société qui créé le Fragment. Cette information n&#8217;est pas très importante.
<li>le champs <strong>Execution Environment</strong> indique la version minimale de la JRE pour que le Fragment puisse être éxécuté.</li>
</ul>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_newfragment3.png" /></p>
<p>Cliquez sur le bouton <strong>Browse&#8230;.</strong> puis sélectionnez le bundle <strong>org.springframework.osgi.log4j.osgi</strong></p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_newfragment4.png" /></p>
<p>Cliquez sur OK :</p>
<p><img src="http://angelozerr.wordpress.com/files/2009/11/osgigestcv_newfragment5.png" /></p>
<p>Le Host est renseigné avec <strong>org.springframework.osgi.log4j.osgi</strong>. Cliquez sur Finish, le fragment est créé dans le workspace</p>
<p>Créez le fichier <strong>log4j.properties</strong> dans le répertoire <strong>src</strong> du fragment :</p>
<pre class="brush: plain;">log4j.rootLogger=info, con
log4j.appender.con=org.apache.log4j.ConsoleAppender
log4j.appender.con.layout=org.apache.log4j.PatternLayout
log4j.appender.con.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n</pre>
<p>Vérifiez que le bundle est bien coché dans le Run Configuration, puis, <a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2#Run">Relancez (via OSGi DynaResume) Equinox</a>. La console OSGi affiche la trace suivante : </p>
<div style="border:black solid 1px;background-color:#f6f6f6;"><code>osgi&#62; Start Bundle [org.dynaresume.domain]<br />
Start Bundle [org.dynaresume.services]<br />
Start Bundle [org.dynaresume.simpleosgiclient]<br />
--- Get UserService from OSGi services registry with ServiceTracker ---<br />
 Cannot get UserService=&#62; UserService is null!<br />
Start Bundle [org.dynaresume.services.impl]<br />
0    [Start Level Event Dispatcher] INFO  org.dynaresume.services.internal.MyClassPathXmlApplicationContext  - Refreshing org.dynaresume.services.internal.MyClassPathXmlApplicationContext@2ab653: display name [org.dynaresume.services.internal.MyClassPathXmlApplicationContext@2ab653]; startup date [Tue Nov 17 20:39:54 CET 2009]; root of context hierarchy<br />
46   [Start Level Event Dispatcher] INFO  org.springframework.beans.factory.xml.XmlBeanDefinitionReader  - Loading XML bean definitions from class path resource [org/dynaresume/services/internal/applicationContext.xml]<br />
78   [Start Level Event Dispatcher] INFO  org.dynaresume.services.internal.MyClassPathXmlApplicationContext  - Bean factory for application context [org.dynaresume.services.internal.MyClassPathXmlApplicationContext@2ab653]: org.springframework.beans.factory.support.DefaultListableBeanFactory@4bfe6b<br />
93   [Start Level Event Dispatcher] INFO  org.springframework.beans.factory.support.DefaultListableBeanFactory  - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4bfe6b: defining beans [userService]; root of factory hierarchy<br />
</code></div>
<p>Cette trace montre que <a href="http://logging.apache.org/log4j/">Log4j</a> est configuré correctement. Sa configuration consiste à créer un Fragment OSGi et mettre le fichier de propriétés log4j.properties dans ce fragment.</p>
<h3>@Service annotation</h3>
<p>Dans cette section je souhaitais utiliser les annotations @Service comme ce que nous avons pu faire dans un contexte non OSGi. Malheureusement je n&#8217;ai pas réussi à faire marcher les annotations @Service dans un contexte OSGi. Spring n&#8217;arrive pas a retrouver les classes. Nous verrons dans le prochain billet que Spring Dynamic Module permet d&#8217;utiliser ce mode de déclaration des services via l&#8217;annotation @Service. Je mets quand même les explications de ce qu&#8217;il faut faire pour utiliser les annotations @Service. </p>
<p>Créez le fichier de configuration Spring <strong>applicationContext.xml</strong> dans le package <strong>org.dynaresume.services.internal</strong> avec le contenu suivant :</p>
<pre class="brush: xml;">&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;beans xmlns=&#34;http://www.springframework.org/schema/beans&#34;
	xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
	xmlns:context=&#34;http://www.springframework.org/schema/context&#34;
	xsi:schemaLocation=&#34;
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd&#34;&#62;

	&#60;context:component-scan base-package=&#34;org.dynaresume.services.impl&#34; /&#62;

&#60;/beans&#62;</pre>
<p><a href="http://angelozerr.wordpress.com/2009/11/10/rcp_springdm_step2/#AddImportPackage">Importez le package<br />
</a> <strong>org.springframework.stereotype</strong>  pour pouvoir utiliser l&#8217;annotation Spring org.springframework.stereotype.<strong>Service</strong>. Modifiez la classe UserServiceImpl pour l&#8217;annoter en tant que service Spring avec l&#8217;ID userService : </p>
<pre class="brush: java;">package org.dynaresume.services.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.dynaresume.domain.User;
import org.dynaresume.services.UserService;
import org.springframework.stereotype.Service;

@Service(&#34;userService&#34;)
public class UserServiceImpl implements UserService {
...
}</pre>
<h2>Conclusion</h2>
<p>Dans ce billet nous avons introduit et montrer qu&#8217;il est possible de déclarer ses services en XML ou via l&#8217;annotation Spring @Service. Dans un contexte OSGi, nous avons vu que l&#8217;utilisation de Spring n&#8217;est pas très simple dù à la problématique des Classloader/bundle. Nous montrerons dans le prochain billet l&#8217;interêt de Spring Dynamic Module qui permet de déclarer facilement l&#8217;enregistrement/la consommation des services OSGi et simplifie grandement le développement des bundles qui doivent fournir/consommer des services OSGi via Spring. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Fragment (Jean Follain)]]></title>
<link>http://arbrealettres.wordpress.com/2009/11/17/fragment-jean-follain/</link>
<pubDate>Tue, 17 Nov 2009 19:47:12 +0000</pubDate>
<dc:creator>arbrealettres</dc:creator>
<guid>http://arbrealettres.wordpress.com/2009/11/17/fragment-jean-follain/</guid>
<description><![CDATA[&nbsp; La fenêtre donne sur la perspective dorée où vont des voitures à cochers silencieux. Une épai]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div style="text-align:center;"><span style="font-style:italic;font-weight:bold;font-size:17px;font-family:Comic sans-serif;color:blue;"><img class="aligncenter size-full wp-image-8967" title="Vénus" src="http://arbrealettres.wordpress.com/files/2009/11/venus.jpg" alt="" width="487" height="672" /></p>
<p>&#160;</p>
<p>La fenêtre donne<br />
sur la perspective dorée<br />
où vont des voitures<br />
à cochers silencieux.<br />
Une épaisse chevelure<br />
jusqu&#8217;aux hanches se tord<br />
le corps qui la possède<br />
de ses yeux grands ouverts<br />
contemple<br />
l&#8217;esprit perdu<br />
ce fragment du monde<br />
pour un temps offert.</p>
<p>(Jean Follain)</p>
<p><a href="http://mariedubois.artblog.fr/31/">Illustration</a></p>
<p></span></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cioburi de lacrimi - fragment de roman]]></title>
<link>http://mihaela13o.wordpress.com/2009/11/17/cioburi-de-lacrimi-fragment-de-roman/</link>
<pubDate>Tue, 17 Nov 2009 12:12:26 +0000</pubDate>
<dc:creator>mihaela13o</dc:creator>
<guid>http://mihaela13o.wordpress.com/2009/11/17/cioburi-de-lacrimi-fragment-de-roman/</guid>
<description><![CDATA[(Este interzisă reproducerea, copierea, editarea şi publicarea acestui text fără acordul scris al au]]></description>
<content:encoded><![CDATA[(Este interzisă reproducerea, copierea, editarea şi publicarea acestui text fără acordul scris al au]]></content:encoded>
</item>
<item>
<title><![CDATA[Marea]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/16/marea/</link>
<pubDate>Mon, 16 Nov 2009 06:39:10 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/16/marea/</guid>
<description><![CDATA[(Marei, pe care o imbratisez numai si mult mai mult de atat) Să mă risipesc în lucruri mărunte, fără]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>(Marei, pe care o imbratisez numai si mult mai mult de atat)</p>
<p>Să mă risipesc în lucruri mărunte, fără sens, şi să mi se pară firesc. la marginea fiecărei zile, ca o călăuză obosită, umbra mea recade în mine şi suntem unul. când am învăţat să scriu a trebuit să dau ceva mult mai important în schimb. mi-am dat seama prea târziu de asta. şi aşa a început totul, apoi a fost o dimineaţă în care m-am trezit lângă trupul gol al Marei, prins în îmbrăţişarea ei, respirând aerul respirat mai înainte de ea, ca şi când cu picioarele care-mi ieşeau de sub pătură aş fi putut face fotosinteza. pe rând o să-mi aduc aminte de toate, sunt sigur de asta, o să recuperez tot ce-am pierdut începând de atunci, şi nu în cuvinte, ci în altceva.</p>
<p>Respiraţia Marei îmi ventila plămânii şi căldura ei ţinea loc oxigenului de care eu aveam până la urmă nevoie. Mara râdea în somn, era felul ei de-a visa, şi trupul ei tremura vag, ca şi când ar fi fost scuturat de o criză uşoară de epilepsie care trecea imediat sau mi se transmitea mie. trupul meu se bucura de visul Marei, şi râdea deodată cu ea, numai că pe mine începuse de atunci să mă doară starea de trezie şi câteva locuri din cameră. unele lucruri nu pot fi spuse, aşa cum oricât ai alerga de repede nu te poţi depărta nici o clipă de tine. cuvintele nu sunt numai pleoapa care descopără, ci şi pleoapa care acoperă, surâsul care se ascunde în surâs, vederea care se ascunde în privire. era prea puţin, nu mai era nimic în afară de îmbrăţişarea Marei, camera era goală numai trupul ei adormit se răspândise în câteva lucruri pe care le păstrase ea acolo. doar eu eram treaz şi sufeream de gânduri care se multiplicau şi îmi îmbolnăveau organismul, nu înţeleg de ce mă trezisem, în îmbrăţişarea Marei ar fi fost atât de uşor să nu mă mai nasc, să fiu deodată cu ea şi să-mi fie de-ajuns. pe rând o să-mi aduc aminte de toate, sunt sigur de asta, o să recuperez tot ce-am pierdut începând de atunci, şi nu în cuvinte, ci în altceva.</p>
<p>Toate amintirile mele sunt dizolvate în cuvinte, numai întunericul dinaintea amintirii e tot ce-mi amintesc şi tot ce am trăit cu adevărat. apoi, imediat naşterea, îmbrăţişarea adormită a Marei, genunchii ei pe care îi mângâiam zguduit vag de râsul ei, de umbra visului ei care ne învelea ca o pleopă. când mă născusem nu ştiu, lucrurile erau dinaintea mea şi mă priveau fără să mă privească. eram dintr-o dată acolo cu buzele lipite de sânul Marei ca şi când aş fi sărutat un ochi închis, ea râdea, amintindu-mi dizolvam totul; mă mutam înainte de amintire, numai acolo se poate trăi. apoi, brusc, cineva mă proiecta în astăzi ca pe o piatră în geamul unei clădiri. cu o violenţă, cu o intensitate de nesuportat devenisem eu însumi, mă mişcam în lume ca un păianjăn printre cuvinte şi lucruri. întunericul fusese înlocuit de ţipetele luminii, îmi era silă de aerul tare şi rece. eram viu într-o lume dezmărginită, invadat de zgomotul aiuritor al respiraţiei miliardelor de oameni, de insecte, de lucruri. totul se învâtea ameţitor cu mine, până când m-am prăbuşit pe asfaltul moale al lumii, inconştient. lumea e locul în care am pierdut totul. pe rând, o să-mi aduc aminte de toate, sunt sigur de asta, o să recuperez tot ce-am pierdut începând de atunci, şi nu în cuvinte, ci în altceva,</p>
<p>Am auzit-o spunându-mi, şi am recunoscut-o abia atunci când a izbucnit în râs şi trupul ei a fost străbătut de spasmul unei stări vagi de delir. Mara râdea de mine, de inocenţa gândului pe care îl purtam cu mine ca pe o scoică în care aş fi putut auzi, din când în când, Marea.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Kde bloudí slova?]]></title>
<link>http://tufle.wordpress.com/2009/11/16/kde-bloudi-slova/</link>
<pubDate>Mon, 16 Nov 2009 00:45:29 +0000</pubDate>
<dc:creator>po(d)stava</dc:creator>
<guid>http://tufle.wordpress.com/2009/11/16/kde-bloudi-slova/</guid>
<description><![CDATA[Nebylo by bez užitku, kdybych se s náhodnými i nenáhodnými návštěvníky těchto digitálních míst nepod]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Nebylo by bez užitku, kdybych se s náhodnými i nenáhodnými návštěvníky těchto digitálních míst nepodělil o fotografie, které jsem zachytil na svůj mobil-ní foťáček, když jsem před dvěma lety navštívil Paříž. Tehdy jsme si to s T. šinuli po Montparnassu (tam se prý nyní schovává kouzlo Paříže) a náhodně prošli kolem jednoho z mnoha antikvariátů. Avšak daný antikvariát byl k nepřehlédnutí, byl natolik nepřehlédnutelný, že možná vzbuzoval i dojem přehlcenosti. Však posuďte sami&#8230;</p>
<p><!--more--></p>
<p><img class="alignnone size-full wp-image-518" title="Vytvor091" src="http://tufle.wordpress.com/files/2009/11/vytvor091.jpg" alt="Vytvor091" width="500" height="375" /></p>
<p><img class="alignnone size-full wp-image-521" title="Vytvor092" src="http://tufle.wordpress.com/files/2009/11/vytvor0921.jpg" alt="Vytvor092" width="500" height="375" /><img class="alignnone size-full wp-image-522" title="Vytvor093" src="http://tufle.wordpress.com/files/2009/11/vytvor0931.jpg" alt="Vytvor093" width="480" height="640" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Fragment, Office]]></title>
<link>http://annaroseadamsholistic.wordpress.com/2009/11/13/fragment-office/</link>
<pubDate>Fri, 13 Nov 2009 19:19:34 +0000</pubDate>
<dc:creator>annaroseadams</dc:creator>
<guid>http://annaroseadamsholistic.wordpress.com/2009/11/13/fragment-office/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone size-full wp-image-34" title="DSCF0671-42" src="http://annaroseadamsholistic.wordpress.com/files/2009/11/dscf0671-42.jpg" alt="DSCF0671-42" width="500" height="747" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AND YOU ASK YOURSELF]]></title>
<link>http://philrudich.wordpress.com/2009/11/11/and-you-ask-yourself/</link>
<pubDate>Thu, 12 Nov 2009 04:45:52 +0000</pubDate>
<dc:creator>phil rudich</dc:creator>
<guid>http://philrudich.wordpress.com/2009/11/11/and-you-ask-yourself/</guid>
<description><![CDATA[crossing the bridge blue and white monuments peek through between solid brown tenements this city’s ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>crossing the bridge<br />
blue and white monuments peek through between solid brown tenements<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad<br />
this city’s not so bad</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Nike Post]]></title>
<link>http://longwknd.wordpress.com/2009/11/09/nike-post/</link>
<pubDate>Mon, 09 Nov 2009 21:24:54 +0000</pubDate>
<dc:creator>-JordanLebeau-</dc:creator>
<guid>http://longwknd.wordpress.com/2009/11/09/nike-post/</guid>
<description><![CDATA[Whatup. Been gone for a minute, but it won&#8217;t be a long hiatus like some of the others.  Short ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Whatup. Been gone for a minute, but it won&#8217;t be a long hiatus like some of the others.  Short and sweet, kicks on feet.</p>
<p>Nike Post!</p>
<p>These first ones will hit in the coming weeks as part of the winter roll, they&#8217;re inside-out High Supremes. Can&#8217;t go wrong with a nice color brown over a white mid. Might rock em with the laces from the beige Bobbitos.</p>
<p><img class="aligncenter" src="http://www.hypebeast.com/image/2009/11/nike-air-force-1-high-supreme-inside-out.jpg" alt="" width="620" height="413" /></p>
<p>These next quickstrike is coming out sooner, I&#8217;m led to believe. Simple, I think Mr. Hiroshi Fujiwara was behind these, but that&#8217;s just what i was told. There&#8217;s no Fragment symbol anywhere, you be the judge.</p>
<p>&#160;</p>
<p><img class="aligncenter" src="http://www.hypebeast.com/image/2009/11/nike-sportswear-match-classic-hf-1.jpg" alt="" width="620" height="413" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Gocce di pioggia]]></title>
<link>http://youpaintyourselfwhite.wordpress.com/2009/11/09/gocce-di-pioggia/</link>
<pubDate>Mon, 09 Nov 2009 02:19:07 +0000</pubDate>
<dc:creator>youpaintyourselfwhite</dc:creator>
<guid>http://youpaintyourselfwhite.wordpress.com/2009/11/09/gocce-di-pioggia/</guid>
<description><![CDATA[..Riders on the Storm Riders on the Storm&#8230; La radio diffonde la melodia nel silenzio della not]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><blockquote></blockquote>
<blockquote><p><em>..Riders on the Storm<br />
Riders on the Storm&#8230;</em></p></blockquote>
<p>La radio diffonde la melodia nel silenzio della notte, mi giro, sento le coperte, morbide e calde contro le mie guance, mi abbracciano.  Apro gli occhi: tutt&#8217;intorno oscurità, gli occhi si abituano a poco a poco, finalmente distinguo le ombre degli oggetti, il profilo della lampada, la pila di libri sulla scrivania, i miei jeans poggiati sulla sedia.</p>
<p>Sento forti i battiti del mio cuore, seguono lenti il ritmo della canzone, poi un nodo alla gola, i pensieri che fuggono via, veloci: luoghi lontani,  un senso di vuoto,  forte e inafferrabile.. Socchiudo gli occhi, li riapro..</p>
<blockquote><p><em>..Girl ya gotta love your man..<br />
Take him by the hand..<br />
Make him understand..</em></p></blockquote>
<p>Mi abbandono lentamente. Fuori piove e il rumore delle gocce di pioggia che cadono sul tetto si mescola alle note..</p>
<blockquote><p><em>..Like a dog without a bone..<br />
And actor out on loan..<br />
Riders on the storm&#8230;</em></p></blockquote>
<blockquote><p><em><br />
</em></p></blockquote>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Bolile de piele la trilobiti 13]]></title>
<link>http://paulgsandu.wordpress.com/2009/11/08/bolile-de-piele-la-trilobiti-13/</link>
<pubDate>Sun, 08 Nov 2009 19:13:49 +0000</pubDate>
<dc:creator>paulgsandu</dc:creator>
<guid>http://paulgsandu.wordpress.com/2009/11/08/bolile-de-piele-la-trilobiti-13/</guid>
<description><![CDATA[8. O abordare mai ştiinţifică S-a vorbit numai foarte rar şi de cele mai multe ori s-au spus numai j]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/-PEGm3R4dtU&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/-PEGm3R4dtU&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>8. O abordare mai ştiinţifică</p>
<p>S-a vorbit numai foarte rar şi de cele mai multe ori s-au spus numai jumătăţi de adevăruri despre dispunerea constelaţiilor şi influenţele astrale sub zodia cărora se afla planeta noastră în zbuciumatul veac al XVIII-lea, în care căpitanul Saragoza se deştepta la viaţă, pentru a muri, câteva decenii mai târziu. Până aici n-am spus încă nimic nou. Adevărul care nu mai poate fi ascuns omenirii de către grupurile masonice conspiratoare, de către asociaţiile secrete care moştenesc sângele divin sau care se află în contact cu civilizaţii mult mai înaintate decât a noastră, este că pe vremea aceea timpul ca şi spaţiul aveau altă consistenţă şi erau altfel percepute. Bunul nostru părinte fizician, maestru al viorii, Einstein, a depus eforturi concentrate pentru a demonstra nişte fapte care ţin, de-acum, de certitudine, dar care au trebuit să fie tăinuite secole în şir, din aceleaşi motive pentru care <em>Suferinţele tânărului Werter</em> au beneficiat de o continuare foarte comercială, un secol şi jumătate mai târziu, în care eroul nostru îmbrăţişa cariera militară şi le dădea dracului de femei. Altfel am fi riscat ca omenirea de astăzi se fie compusă integral din frumoase specimene feminine.</p>
<p>Dar să revenim acum la ale noastre. Merită spus – şi este, cred, în interesul tuturor – că documente care au fost păstrate cu sfinţenie –  unde altundeva decât în Arhivele Casei Regale a Portugaliei? – şi care aveau să treacă în parte în arhivele Vaticanului, au ajuns, printr-un întâmplare foarte complicată, în mâinile noastre. Nu ne ferim să spunem că ne asumăm întreaga răspundere pentru afirmaţiile pe care le vom face aici şi care vor schimba, în unele cazuri poate radical, imaginea pe care o avem despre propriul nostru trecut.</p>
<p>Să spunem deci că datorită unui context astral care va să se repete abia într-o sută cincizeci de mii de ani, în secolul XVIII poziţia pământului în cosmos făcea ca timpul – şi spaţiul mai ales – să aibă alte caracteristici decât cele cu care suntem familiari astăzi. Ideea de succesiune temporală, care este o invenţie exclusivă a deceniilor recente, era pe atunci înţeleasă ca o complementaritate temporală care presupunea ca oricărei fapte sau întâmplări să îi corespundă o alta, dar de sens contrar. Astfel, dacă am vorbit despre schimbul de însemne ale celor două nave implicate în conflictul încheiat pe cale amiabilă, ar fi trebuit să vorbim, în acelaşi timp, despre desfăşurarea sângeroasă a conflictului şi despre păstrarea însemnelor. Cele două evenimente nu trebuie însă înţelese ca simultane, ci ca aflându-se într-un raport de derivare logică, cam aşa cum se întâmplă în silogismul prin care Socrate este ucis pentru simplul fapt că este om. Ceea ce, între noi fie spus, mi se pare barbar!</p>
<p>S-a folosit, în mediile academice, conceptul de bifurcare temporală, dar nici acesta nu este o alegere tocmai fericită, pentru că ar presupune existenţa a două orizonturi temporale. Ceea ce, după cum am văzut, nu este cazul. Aici e poate potrivit să amintim că dovezi ale acestui fapt au rămas sedimentate în limba vorbită, în tot felul de expresii de genul „tot răul spre bine” şi altele, care surpind tocmai această complementaritate spaţio-temporală despre care fu vorba mai devreme. Cu alte cuvinte, ori de câte ori un lucru rău se produce, este necesar ca din el să ia naştere contrariul său, pentru ca continuumul spaţio-temporal să-şi găsească împlinirea.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Fragment din primul capitol!]]></title>
<link>http://academiacosmarurilor.wordpress.com/2009/11/07/fragment-din-primul-capitol/</link>
<pubDate>Sat, 07 Nov 2009 09:14:17 +0000</pubDate>
<dc:creator>Vlad</dc:creator>
<guid>http://academiacosmarurilor.wordpress.com/2009/11/07/fragment-din-primul-capitol/</guid>
<description><![CDATA[Dacă până acum nu eraţi hotărâţi dacă merită să citiţi Academia Coşmarurilor, de Dean Lorey, acum vă]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignleft" src="http://thebookspot.files.wordpress.com/2009/10/academia-cosmarurilor.jpg?w=253&#038;h=353#38;h=353" alt="" width="253" height="353" />Dacă până acum nu eraţi hotărâţi dacă merită să citiţi <em><strong>Academia Coşmarurilor</strong></em>, de Dean Lorey, acum vă puteţi hotărî! Editura Corint Junior vă prezintă <strong><a href="http://thebookspot.files.wordpress.com/2009/10/academia-cosmarurilor_roxi.pdf">UN FRAGMENT</a></strong> din primul capitol al cărţii. Bucuraţi-vă de el!</p>
<h5><span style="color:#ff0000;"><strong>Copyright: Toate drepturile asupra acestei ediţii sunt rezervate Editurii CORINT JUNIOR, parte componentă a GRUPULUI EDITORIAL CORINT.</strong></span></h5>
<blockquote><p><strong>CÂND CHARLIE BENJAMIN DOARME, MONŞTRII SE TREZESC LA VIAŢĂ.</strong></p>
<p>Este greu să te adaptezi când coşmarurile tale deschid portaluri în Adâncuri, unde locuiesc creaturi oribile – cum ar fi Arahnida de Adâncuri care a dat buzna la o petrecere în pijama şi a făcut urât.</p>
<p>Din fericire, există un loc pentru Charlie – Academia Coşmarurilor. Construită din nave naufragiate plasate între crengile celei mai incredibile fortăreţe-copac din lume, Academia îi instruieşte pe copii pentru ca aceştia să îşi poată folosi harurile unice ca să se lupte cu monştrii.</p>
<p>Dar Charlie este mult mai puternic decât şi-a imaginat cineva vreodată, iar examenul lui de admitere deschide un portal drept în inima Adâncurilor, unde răul suprem pune la cale distrugerea Pământului.</p>
<p>Charlie va avea nevoie de toată isteţimea lui – şi de ajutorul noilor săi prieteni – ca să îşi salveze familia şi pe sine şi ca să îi ducă pe băieţii ăştia răi la culcare odată pentru totdeauna.<em> </em></p>
<p><strong>Ce-aţi spune dacă monştrii celor mai tenebroase coşmaruri ale voastre ar fi reali?</strong></p>
<p>Dar nu vă îngrijoraţi – <em>Academia Coşmarurilor</em> îi va instrui pe adancomanţii şi expulzatorii ca voi, pentru a-i putea distruge!</p>
<h2>ACUM ÎN LIBRĂRII!</h2>
</blockquote>
</div>]]></content:encoded>
</item>

</channel>
</rss>
