<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6297375736568060551</id><updated>2024-11-01T11:45:41.273+01:00</updated><category term="programming"/><category term="flex"/><category term="java"/><category term="linux"/><category term="books"/><category term="bricolage"/><category term="computing"/><category term="cose di altre case"/><title type='text'>La Duna</title><subtitle type='html'>PROGRAMMING | FLEX | JAVA | LINUX | BRICOLAGE | BOOKS</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-9140751334090803666</id><published>2010-09-24T20:03:00.004+02:00</published><updated>2010-09-28T13:55:06.941+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flex"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Flex è morto... anzi, no, aspetta!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
È ufficiale, come spiegato in &lt;a href=&quot;http://labs.adobe.com/technologies/flex/flexbuilder_linux/&quot;&gt;questa pagina&lt;/a&gt;, Adobe non svilupperà più Flex/Flash Builder per Linux, neanche uno straccio di versione alpha.&lt;br /&gt;
&lt;br /&gt;
Chi è riuscito a scaricare&amp;nbsp; l&#39;ultima versione avrà tempo di usarla fino  alla sua morte programmata, il 31 Dicembre. Con l&#39;anno nuovo o ci si  converte a un altro sistema, o si va di SDK.&lt;br /&gt;
&lt;br /&gt;
Forse era prevedibile, d&#39;altronde Adobe vuole monetizzare attraverso i tool legati a Flex - pur mantenendo l&#39;SDK gratuito - e non sembra esserci spazio nel ristretto mercato di sviluppatori Linux.&lt;br /&gt;
&lt;br /&gt;
Per chi non vuole rinunciare a Eclipse segnalo il plugin &lt;a href=&quot;http://new.axdt.org/&quot;&gt;Axdt&lt;/a&gt;, che agevola un po&#39; la scrittura e l&#39;esecuzione del codice. Purtroppo lo sviluppo è ancora agli inizi, e ad esempio non c&#39;è l&#39;evidenziazione della sintassi per i file &lt;i&gt;MXML&lt;/i&gt;, e l&#39;editor ActionScript non considera gli import di Flex, ad esempio spark.components.Label.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;(continua)&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/9140751334090803666/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/09/flex-e-morto-anzi-no-aspetta.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/9140751334090803666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/9140751334090803666'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/09/flex-e-morto-anzi-no-aspetta.html' title='Flex è morto... anzi, no, aspetta!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-8533990775603188857</id><published>2010-09-10T13:31:00.000+02:00</published><updated>2010-09-10T13:31:30.306+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books"/><title type='text'>Come la pensa Joel</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.joelonsoftware.com/pictures/books/JoelOnSoftware.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.joelonsoftware.com/pictures/books/JoelOnSoftware.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;Joel e il Software&lt;/b&gt;&lt;i&gt;, &lt;/i&gt;Mondadori Informatica, 2005 - 384 pagine&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&quot;La vita è troppo corta per permetterti di odiare il tuo lavoro&quot;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;Joel e il Software, p. xiv &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Comincia oggi la serie delle mie grandi recensioni!&lt;/div&gt;&amp;nbsp;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;Joel e il Software&lt;/i&gt; è una raccolta di alcuni articoli sulla programmazione, sull&#39;organizzazione aziendale e sul software in generale apparsi sul &lt;a href=&quot;http://www.joelonsoftware.com/&quot;&gt;blog&lt;/a&gt; di Joel Spolsky fino al 2004.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Qualcuno potrebbe chiedersi: &lt;i&gt;&quot;Perché mai dovrei leggere un libro del 2004?&quot;&lt;/i&gt;&lt;br /&gt;
Perché alcuni argomenti sono ancora attuali.&lt;br /&gt;
&lt;i&gt;&quot;Perché hai comprato un libro del 2004?&quot;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Perché l&#39;ho trovato in offerta, a un terzo del prezzo.&lt;br /&gt;
&lt;i&gt;&quot;Perché dovrei comprare un libro per leggere più o meno le stesse cose che&lt;br /&gt;
si possono trovare sul sito dell&#39;autore?&quot;&lt;/i&gt;&lt;br /&gt;
Non so, per leggerle più comodamente?&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Spolsky scrive con uno stile molto scorrevole (a differenza di me :-), che non stanca mai, e mentre ti intrattiene ti insegna anche qualcosa.&lt;br /&gt;
Si capisce che è una persona molto pragmatica, che bada al sodo e al risultato.&lt;br /&gt;
Alcuni capitoli sono delle perle, come il 25 sul &quot;segreto dell&#39;iceberg&quot;, altri meno, come il 20, una specie di &quot;guida al reclutamento del programmatore perfetto&quot;, che non mi trova molto d&#39;accordo (ebbene sì, caro Joel, &quot;logorroico&quot; è ben diverso da &quot;brillante&quot;!).&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Purtroppo la traduzione italiana è un po&#39; approssimativa, tra errori di battitura e veri e propri errori di traduzione.&lt;br /&gt;
Due esempi veloci.&lt;br /&gt;
A pagina 200 parla di &quot;numero primo&quot;, quando l&#39;articolo originale parla semplicemente di &quot;integer&quot;.&lt;br /&gt;
Poi, a pagina 324, &quot;the SQL Server classes&quot; diventano &quot;le classi Server di SQL&quot;!&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Concludendo, JoS è un libro che consiglio comunque a chi lavora in&lt;br /&gt;
questo ambito, programmatore o manager, possibilmente in versione originale, ma è leggibile anche in italiano.&lt;br /&gt;
&lt;br /&gt;
Buona lettura! &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/8533990775603188857/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/09/come-la-pensa-joel.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/8533990775603188857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/8533990775603188857'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/09/come-la-pensa-joel.html' title='Come la pensa Joel'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-4013808265658482518</id><published>2010-06-16T12:34:00.000+02:00</published><updated>2010-06-16T12:34:25.177+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bricolage"/><category scheme="http://www.blogger.com/atom/ns#" term="cose di altre case"/><title type='text'>Non fate come Urgo!</title><content type='html'>Primo post di bricolage!&lt;br /&gt;
&lt;br /&gt;
Dovevo riempire uno spazio vuoto tra il termosifone e il muro, quindi ho pensato di metterci uno scaffale. Non trovandone di misura adeguata ho pensato: &quot;Me lo faccio da me!&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKNHPsvoHq-oSH592cLp9MxhxtkBCHedOIjA9b7kO4VVDQQzW4b6dAMkEM6T9SOdseDeGltzbKKn32jjpjPG7PBvBjlxHULdBKhji7N2VraV1dtK641grMyYxeYHfbwB6iBnXGlIEbZfk/s1600/u1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKNHPsvoHq-oSH592cLp9MxhxtkBCHedOIjA9b7kO4VVDQQzW4b6dAMkEM6T9SOdseDeGltzbKKn32jjpjPG7PBvBjlxHULdBKhji7N2VraV1dtK641grMyYxeYHfbwB6iBnXGlIEbZfk/s320/u1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;i&gt;Non fate come Urgo!&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Usate il legno per qualcosa di utile!&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
Ecco cosa serve:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;una tavola di abete 40x100 (o meglio 20x200, anche se è più scomoda da trasportare vi risparmiate un po&#39; di taglio)&lt;/li&gt;
&lt;li&gt;un trapano/avvitatore&lt;/li&gt;
&lt;li&gt;un seghetto alternativo (o altro tipo di sega)&lt;/li&gt;
&lt;li&gt;12 viti da legno di lunghezza adeguata&lt;/li&gt;
&lt;li&gt;carta abrasiva &lt;/li&gt;
&lt;/ul&gt;L&#39;abete è un legno tenero, facile da lavorare, anche se si scheggia  facilmente, quindi attenzione!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsI1X4xz5SHH-10VEpYLmWdlPf3sCvzKVT3XnJKezuO6EGG0iBhyphenhyphenZl8Gp-GIUyPFzWG_LdiS7Zf1n-jMM8Y0vDBx6-i0g859Xr-C6JpJsew-U6AVjxYAd8NYyXHpB26CWF5gDovFDFgYQ/s1600/u2.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsI1X4xz5SHH-10VEpYLmWdlPf3sCvzKVT3XnJKezuO6EGG0iBhyphenhyphenZl8Gp-GIUyPFzWG_LdiS7Zf1n-jMM8Y0vDBx6-i0g859Xr-C6JpJsew-U6AVjxYAd8NYyXHpB26CWF5gDovFDFgYQ/s320/u2.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;i&gt;Non fate come Urgo!&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Usate gli occhialini di protezione!&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
Io ho usato un pannello 40x100, quindi per prima cosa l&#39;ho tagliato per la lunghezza in modo da ottenere due pezzi del genere:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7yF548Ys9ujXHAHTX6BZWOe02_SBBMuOnKSliPE1JLraItb4ev_wQri6XA7Sa18CFo8Mu9UiPrqn-F4Iwn4mlXLfhZia_uLXbBnCdMomWPubYB_bsL8FqiBWA9rSmAawxTNFIkb3dZQ/s1600/f1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7yF548Ys9ujXHAHTX6BZWOe02_SBBMuOnKSliPE1JLraItb4ev_wQri6XA7Sa18CFo8Mu9UiPrqn-F4Iwn4mlXLfhZia_uLXbBnCdMomWPubYB_bsL8FqiBWA9rSmAawxTNFIkb3dZQ/s320/f1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Dopo aver tagliato i due pezzi suddetti in tre &quot;sottopezzi&quot; ho preso quelli da 71 centimetri (i lati dello scaffale) e ho praticato 6 + 6 fori, così:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBXSDqgTCgP6BCnKLRnUCW1Inxi-hMu7Zk_P_ouBz4_yLmXZSPOOBzENyBrjkp_gr4jC-8-qfV1a5_yH6aHE24b-f8mwZaC7iPPnsr3y-acwgXnY8g-qnKr8JbrlP_XbPUYEVesdY_wxM/s1600/f2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBXSDqgTCgP6BCnKLRnUCW1Inxi-hMu7Zk_P_ouBz4_yLmXZSPOOBzENyBrjkp_gr4jC-8-qfV1a5_yH6aHE24b-f8mwZaC7iPPnsr3y-acwgXnY8g-qnKr8JbrlP_XbPUYEVesdY_wxM/s320/f2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Passiamo ora ai ripiani.&lt;br /&gt;
&lt;br /&gt;
Ho forato i bordi dei due ripiani &quot;interi&quot; (4 fori per pezzo):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi761rcNEI83qRaUI0YRhmCIbjk307uxcbYIXiz1AxHOkN51m_Uq6G_-efGx915_5NsWNcClMXOsdiMU3hRDbaUFJCvMBxKKNCI_lUZsJwt4XnoktNcTFv7DzbzDZo25-w3wNixLRo9hHY/s1600/f4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi761rcNEI83qRaUI0YRhmCIbjk307uxcbYIXiz1AxHOkN51m_Uq6G_-efGx915_5NsWNcClMXOsdiMU3hRDbaUFJCvMBxKKNCI_lUZsJwt4XnoktNcTFv7DzbzDZo25-w3wNixLRo9hHY/s320/f4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
E infine i bordi dei due ripiani piccoli, che vengono appesi da un lato solo (2 fori per pezzo):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8brYrw9Xi4HoltW5wiV4TuK7PSyK0xxN_-JNBygcW2Vs6sRF8_EZAysdoMNKPx7ND8DfUAZOEWbihz7MUMPKcJFK99HInX8yIWmJRTd9PKb8DM6Fh1Qc5Zm_GrRaICwA4e4ySP1G6no/s1600/f3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo8brYrw9Xi4HoltW5wiV4TuK7PSyK0xxN_-JNBygcW2Vs6sRF8_EZAysdoMNKPx7ND8DfUAZOEWbihz7MUMPKcJFK99HInX8yIWmJRTd9PKb8DM6Fh1Qc5Zm_GrRaICwA4e4ySP1G6no/s320/f3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Non resta che levigare tutti i pezzi con carta abrasiva (può andare a grana 120)&lt;br /&gt;
e assemblare il tutto con le viti.&lt;br /&gt;
&lt;br /&gt;
Ed ecco a voi il risultato finale!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGSYWVSpNNM6WGnMWkgCWF5EEdwNel4hMkCEmubVUA35PnKXuykUs7SeyL5PEZFlvc2CIaPDhunGLxwSdMHlBfUZW6NpnYlQv7NdBZgKkSQA4W_U8XL3Nv0d7c-B2yNJl4eez3spC5j4Y/s1600/scaffale.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGSYWVSpNNM6WGnMWkgCWF5EEdwNel4hMkCEmubVUA35PnKXuykUs7SeyL5PEZFlvc2CIaPDhunGLxwSdMHlBfUZW6NpnYlQv7NdBZgKkSQA4W_U8XL3Nv0d7c-B2yNJl4eez3spC5j4Y/s320/scaffale.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Alla prossima impresa!&lt;br /&gt;
&lt;br /&gt;
Disclaimer: Non fate come Urgo!</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/4013808265658482518/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/06/non-fate-come-urgo.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/4013808265658482518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/4013808265658482518'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/06/non-fate-come-urgo.html' title='Non fate come Urgo!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKNHPsvoHq-oSH592cLp9MxhxtkBCHedOIjA9b7kO4VVDQQzW4b6dAMkEM6T9SOdseDeGltzbKKn32jjpjPG7PBvBjlxHULdBKhji7N2VraV1dtK641grMyYxeYHfbwB6iBnXGlIEbZfk/s72-c/u1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-2151896261596554423</id><published>2010-06-07T14:08:00.004+02:00</published><updated>2010-06-28T13:32:26.170+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flex"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Comunicazione tra Flex, JavaScript e Applet Java</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;A volte può essere conveniente far comunicare un&#39;applicazone Flex con del codice JavaScript, o con un&#39;applet Java, magari per sfruttare il multithreading.&lt;br /&gt;
&lt;br /&gt;
Sembra una cosa complicata, ma non è così.&lt;br /&gt;
Supponiamo di voler chiamare il metodo &lt;code&gt;work&lt;/code&gt; della nostra applet, e di passargli una stringa come argomento.&lt;br /&gt;
Basta una riga di codice ActionScript:&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;
.code {
border: 1px solid;
margin-left: 1em;
padding: 1em;
font-family: mono;
}
/* Style definition file generated by highlight 2.10, http://www.andre-simon.de/ */
/* Highlighting theme definition: */
.hl.num { color:#000000; }
.hl.esc { color:#0000ff; }
.hl.str { color:#0000ff; }
.hl.dstr { color:#7f9fbf; }
.hl.slc { color:#2f9956; }
.hl.com { color:#717ab3; }
.hl.dir { color:#3f5fbf; }
.hl.sym { color:#006600; }
.hl.line { color:#000000; }
.hl.mark { background-color:#ffffbb;}
.hl.kwa { color:#7faa55; font-weight:bold; }
.hl.kwb { color:#7f0055; font-weight:bold; }
.hl.kwc { color:#7f0055; font-weight:bold; }
.hl.kwd { color:#666600; }
&lt;/style&gt;&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;ExternalInterface&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;call&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;hl str&quot;&gt;&quot;document.workerApplet.work&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt; arg&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Perché il metodo sia visibile deve essere dichiarato pubblico:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl kwa&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hl kwd&quot;&gt;work&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;hl kwc&quot;&gt;String&lt;/span&gt; arg&lt;span class=&quot;hl sym&quot;&gt;) {&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;hl com&quot;&gt;/* ... */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl sym&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Se la computazione è pesante ricordatevi di avviarla in un &lt;i&gt;thread&lt;/i&gt; separato, altrimenti l&#39;esecuzione si bloccherà finché il metodo non ritorna.&lt;br /&gt;
&lt;br /&gt;
Naturalmente l&#39;applet deve essere inclusa nello stesso &lt;i&gt;wrapper&lt;/i&gt; HTML:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl kwa&quot;&gt;&amp;lt;APPLET&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;id&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;workerApplet&quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;hl kwb&quot;&gt;code&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;WorkerApplet.class&quot;&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;codebase&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;.&quot;&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;align&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;baseline&quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;hl kwb&quot;&gt;width&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;0&quot;&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;height&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;0&quot;&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;MAYSCRIPT&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;hl kwa&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Passiamo ora alla comunicazione da un&#39;applet java a un&#39;applicazione Flex.&lt;br /&gt;
&lt;br /&gt;
In questo caso le cose si complicano un po&#39;.&lt;br /&gt;
Prima di tutto è necessario includere il parametro &lt;code&gt;MAYSCRIPT&lt;/code&gt; nel tag &lt;code&gt;APPLET&lt;/code&gt;.&lt;br /&gt;
Poi bisogna &lt;i&gt;registrare&lt;/i&gt; il metodo ActionScript in modo che sia accessibile tramite JavaScript:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl slc&quot;&gt;// registration&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl kwb&quot;&gt;private function&lt;/span&gt; &lt;span class=&quot;hl kwd&quot;&gt;registerCallback&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;():&lt;/span&gt;&lt;span class=&quot;hl kwb&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hl sym&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ExternalInterface&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;addCallback&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;hl str&quot;&gt;&quot;externalComputationComplete&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; externalComputationComplete&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl sym&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl slc&quot;&gt;// callback&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl kwb&quot;&gt;public function&lt;/span&gt; &lt;span class=&quot;hl kwd&quot;&gt;externalComputationComplete&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;hl sym&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;hl kwb&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;):&lt;/span&gt;&lt;span class=&quot;hl kwb&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hl sym&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Alert&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;hl str&quot;&gt;&quot;Applet returned: &quot;&lt;/span&gt; &lt;span class=&quot;hl sym&quot;&gt;+&lt;/span&gt; s&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl sym&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Ora si costruisce una funzione JavaScript che chiama il metodo registrato come &lt;code&gt;&quot;externalComputationComplete&quot;&lt;/code&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl kwa&quot;&gt;&amp;lt;SCRIPT&lt;/span&gt; &lt;span class=&quot;hl kwb&quot;&gt;LANGUAGE&lt;/span&gt;=&lt;span class=&quot;hl str&quot;&gt;&quot;JavaScript&quot;&lt;/span&gt;&lt;span class=&quot;hl kwa&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function callFlexApp(s) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var flexApp = document.getElementById(&lt;span class=&quot;hl str&quot;&gt;&quot;flexApp&quot;&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; flexApp.externalComputationComplete(s);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;span class=&quot;hl kwa&quot;&gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Da quanto ho sperimentato questa funzione deve essere dichiarata &lt;i&gt;dopo&lt;/i&gt; il tag APPLET affinché sia visibile al codice java.&lt;br /&gt;
&lt;br /&gt;
È ora possibile chiamare &lt;code&gt;callFlexApp&lt;/code&gt; da Java:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;netscape&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;javascript&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;JSObject&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;getWindow&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;hl kwa&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;call&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;hl str&quot;&gt;&quot;callFlexApp&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;hl kwa&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;hl kwc&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;[] {&lt;/span&gt;&lt;span class=&quot;hl str&quot;&gt;&quot;done&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;});&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Come si vede gli eventuali argomenti alla funzione JavaScript vanno passati in un array.&lt;br /&gt;
&lt;br /&gt;
Inoltre per usare &lt;code&gt;JSObject&lt;/code&gt; bisogna includere nel &lt;i&gt;classpath&lt;/i&gt; il &lt;i&gt;JAR&lt;/i&gt; &lt;code&gt;$JAVA_HOME/jre/lib/plugin.jar&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ulteriori informazioni sulla comunicazione tra Flex e JavaScript si possono trovare al seguente link:&lt;br /&gt;
&lt;a href=&quot;http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f17.html&quot;&gt;http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f17.html&lt;/a&gt;&lt;br /&gt;
Per la comunicazione Java - JavaScript si veda:&lt;br /&gt;
&lt;a href=&quot;https://jdk6.dev.java.net/plugin2/liveconnect/&quot;&gt;https://jdk6.dev.java.net/plugin2/liveconnect/&lt;/a&gt;&lt;br /&gt;
Mentre per una panoramica sui metodi di &lt;code&gt;JSObject&lt;/code&gt; il &lt;i&gt;javadoc&lt;/i&gt; si trova all&#39;indirizzo:&lt;br /&gt;
&lt;a href=&quot;http://java.sun.com/javase/6/webnotes/6u10/plugin2/liveconnect/jsobject-javadoc/netscape/javascript/JSObject.html&quot;&gt;http://java.sun.com/javase/6/webnotes/6u10/plugin2/liveconnect/jsobject-javadoc/netscape/javascript/JSObject.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
È tutto, buona programmazione!</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/2151896261596554423/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/06/comunicazione-tra-flex-e-applet-java.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/2151896261596554423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/2151896261596554423'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/06/comunicazione-tra-flex-e-applet-java.html' title='Comunicazione tra Flex, JavaScript e Applet Java'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-8935726089327807002</id><published>2010-05-16T13:57:00.002+02:00</published><updated>2010-05-17T12:04:56.469+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Mmmmercurial!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.selenic.com/hg-logo/logo-droplets-200.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.selenic.com/hg-logo/logo-droplets-200.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Se sentendo la parola Subversion vi si rimescola lo stomaco, se CVS per voi significa Come Volevasi Sfasciare, se non usate nessun tipo di &lt;a href=&quot;http://en.wikipedia.org/wiki/Revision_control&quot;&gt;controllo di versione&lt;/a&gt; perché temete di impazzire... Usate &lt;a href=&quot;http://en.wikipedia.org/wiki/Mercurial&quot;&gt;Mercurial!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Mercurial è un sistema di controllo di versione &lt;a href=&quot;http://en.wikipedia.org/wiki/Distributed_revision_control&quot;&gt;distribuito&lt;/a&gt;, in cui esistono più copie del repository, almeno una per sviluppatore/autore.&lt;br /&gt;
I vantaggi di questo approccio sono molteplici, per i dettagli vi rimando alla documentazione esistente, in particolare all&#39;ottimo tutorial di Joel Spolsky che si trova&lt;a href=&quot;http://hginit.com/&quot;&gt; qui&lt;/a&gt;, ma anche la documentazione sul &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;sito ufficiale&lt;/a&gt; non è male.&lt;br /&gt;
&lt;br /&gt;
Con &lt;code&gt;hg serve&lt;/code&gt; potrete esplorare graficamente i vostri repositori puntando il browser a http://localhost:8000/&lt;br /&gt;
&lt;br /&gt;
Se volete un&#39;interfaccia grafica più &quot;corposa&quot; potete installare &lt;a href=&quot;http://tortoisehg.bitbucket.org/&quot;&gt;TortoiseHg&lt;/a&gt;, che fornisce anche vari tool ed estensioni interessanti.&lt;br /&gt;
&lt;br /&gt;
Ci risentiamo tra qualche anno, con un post che comincerà pressappoco così:&lt;br /&gt;
&quot;Se solo a sentire la parola Mercurial vi vengono le convulsioni...&quot;</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/8935726089327807002/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/05/se-sentendo-la-parola-subversion-vi-si.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/8935726089327807002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/8935726089327807002'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/05/se-sentendo-la-parola-subversion-vi-si.html' title='Mmmmercurial!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-2827582227076040011</id><published>2010-05-08T19:54:00.003+02:00</published><updated>2010-05-22T14:23:24.494+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computing"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Nouveau... ou vieux?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Ubuntu_logo.svg/200px-Ubuntu_logo.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Ubuntu_logo.svg/200px-Ubuntu_logo.svg.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Ho appena installato&amp;nbsp;&lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 10.04 LTS&lt;/a&gt; su uno dei miei sistemi, e devo dire che, dopo i necessari aggiustamenti, si rivela una bella distribuzione.&lt;br /&gt;
Ho addirittura più che dimezzato i tempi di caricamento rispetto alla Kubuntu 8.04 che avevo prima!&lt;br /&gt;
&lt;br /&gt;
Uno degli &quot;aggiustamenti&quot; che si sono resi necessari ha riguardato il driver libero &lt;a href=&quot;http://nouveau.freedesktop.org/wiki/&quot;&gt;Nouveau&lt;/a&gt;, che sostituisce a partire da questa versione di Ubuntu il vecchio driver libero &quot;nv&quot;, e come quest&#39;ultimo fornisce solo l&#39;accelerazione 2D.&lt;br /&gt;
&lt;br /&gt;
Il sistema in questione è equipaggiato con una GeForce4 MX con memoria condivisa, e già all&#39;avvio del cd si sono presentati disturbi grafici degni di un vecchio televisore CRT (!) che rendevano lo schermo quasi illeggibile. Questi sono continuati anche nel sistema installato.&lt;br /&gt;
&lt;br /&gt;
La soluzione veloce è stata l&#39;installazione del driver proprietario di NVIDIA, attuata con pochi click da un&#39;icona che mi avvertiva della sua disponibilità.&lt;br /&gt;
&lt;br /&gt;
Quindi la morale della favola è: se avete una scheda NVIDIA, e dopo l&#39;installazione di Ubuntu 10.04 vi sembra che il vostro computer debba esplodere da un momento all&#39;altro, installate senza indugi il driver proprietario!&lt;br /&gt;
&lt;br /&gt;
Alla prossima!</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/2827582227076040011/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/05/nouveau-ou-vieux.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/2827582227076040011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/2827582227076040011'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/05/nouveau-ou-vieux.html' title='Nouveau... ou vieux?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-4450965659041663091</id><published>2010-04-30T21:49:00.009+02:00</published><updated>2012-03-05T19:10:01.255+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Java Base</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://duke.kenai.com/iconSized/duke4.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://duke.kenai.com/iconSized/duke4.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Ripubblico qui una guida alle basi del linguaggio Java che ho scritto un po&#39; di tempo fa.&lt;br /&gt;
&lt;br /&gt;
Essendo del 2006 prendete quello che c&#39;è scritto qui dentro con beneficio di inventario - anche se è sostanzialmente corretto.&lt;br /&gt;
&lt;br /&gt;
Al link seguente trovate la guida in formato HTML, leggibile e scaricabile, l&#39;archivio con un file HTML per ognuno dei 10 capitoli, e la guida in formato PDB per&amp;nbsp;&lt;a href=&quot;http://www.plkr.org/&quot;&gt;Plucker&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed; margin: 1ex; padding: 1ex;&quot;&gt;
&lt;a href=&quot;http://sites.google.com/site/luomoradioattivo/javabase&quot;&gt;Java Base&lt;/a&gt;&lt;/div&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una piccola correzione:&lt;br /&gt;
&lt;br /&gt;
Nella sezione Classi annidate, “inner” e “nested” sono considerati sinonimi. In realtà le classi nested sono genericamente definite nel corpo di un&#39;altra classe o interfaccia, mentre le classi inner sono classi nested non statiche. Una spiegazione dettagliata del tutto si può trovare nelle specifiche ufficiali:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/docs/books/jls/third_edition/html/classes.html&quot;&gt;http://java.sun.com/docs/books/jls/third_edition/html/classes.html&lt;/a&gt; - introduzione, secondo paragrafo, e capitolo 8.1.3, primo paragrafo. Grazie a PGI-Bis del forum di Hardware Upgrade per i chiarimenti.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;b&gt;Novità!&lt;/b&gt;&lt;/span&gt; Ho reso disponibile la guida come singolo file HTML - in fondo alla pagina trovate anche il link per scaricarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #ea9999;&quot;&gt;Novità2!&lt;/span&gt; &lt;/b&gt;Se vi interessa JavaCC - ovvero come creare automaticamente parser in java - ho scritto un piccolo tutorial, qui:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed; margin: 1ex; padding: 1ex;&quot;&gt;
&lt;a href=&quot;http://lamacchinadituring.blogspot.com/2012/03/javacc-in-30-minuti.html&quot;&gt;JavaCC in 30 minuti&lt;/a&gt;&lt;/div&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sperando che sia utile a qualcuno, alla prossima!</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/4450965659041663091/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/04/java-base.html#comment-form' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/4450965659041663091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/4450965659041663091'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/04/java-base.html' title='Java Base'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6297375736568060551.post-3721241239575124745</id><published>2010-04-29T17:43:00.005+02:00</published><updated>2010-06-28T13:36:42.835+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flex"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Flex file upload</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://upload.wikimedia.org/wikipedia/en/7/70/Flexicon.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Recentemente ho dovuto implementare l&#39;upload di file a una servlet con Adobe Flex. Poiché ho incontrato alcuni ostacoli ho deciso di postare la soluzione a cui sono arrivato, nell&#39;eventualità che sia utile ad altri nella stessa situazione.&lt;br /&gt;
&lt;br /&gt;
Come primo tentativo ho usato il metodo &quot;canonico&quot;, ovvero chiamare il metodo &lt;code&gt;upload&lt;/code&gt; di &lt;a href=&quot;http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html&quot;&gt;FileReference&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Nella risposta della servlet era immersa una rassicurante scritta - &lt;i&gt;&quot;file uploaded&quot;&lt;/i&gt; - ma il file caricato risultava irreperibile.&lt;br /&gt;
Dopo una verifica con &lt;a href=&quot;http://getfirebug.com/&quot;&gt;firebug&lt;/a&gt; ho scoperto che nella richiesta non veniva inviata la JSESSIONID, necessaria al server per identificare la sessione in cui viene fatto l&#39;upload.&lt;br /&gt;
Poco male, visto che basta appendere all&#39;URL di richiesta la stringa &quot;;jsessionid=&quot;, seguita dalla ID.&lt;br /&gt;
Il problema è che bisogna modificare l&#39;interfaccia web per recuperare in qualche modo questa ID.&lt;br /&gt;
Come se non bastasse l&#39;applicazione flash si blocca fino a che l&#39;upload non è completato, e questo non è un bene. Tra l&#39;altro, per file di dimensione superiore a qualche kilobyte, viene bloccato tutto il browser, con un consumo esorbitante di memoria RAM.&lt;br /&gt;
Questo evidentemente è dovuto a un memory leak nel Flash Player, e accade sia con Firefox che con Chrome che con Opera.&lt;br /&gt;
&lt;br /&gt;
Scartata questa soluzione, quando ormai mi stavo convincendo ad usare una &quot;pezza&quot; AJAX, mi sono rituffato in Google, e mi sono imbattuto in una comoda classetta ActionScript, &lt;a href=&quot;http://code.google.com/p/in-spirit/wiki/MultipartURLLoader&quot;&gt;MultipartURLLoader&lt;/a&gt;, che costruisce correttamente la richiesta HTTP per l&#39;upload contemporaneo di più file.&lt;br /&gt;
Ho quindi dovuto commentare alcune linee (in particolare la 374 e quelle dalla 408 alla 417) per adattarla al mio caso di file singolo.&lt;br /&gt;
&lt;br /&gt;
Per poter usare questa classe è necessario usare il caricamento di file locali, una caratteristica introdotta con la versione 10 del Flash Player, mediante il metodo &lt;code&gt;load&lt;/code&gt; di FileReference, chiamato nel gestore dell&#39;evento SELECT:&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;
.code {
border: 1px solid;
margin-left: 1em;
padding: 1em;
font-family: mono;
}
/* Style definition file generated by highlight 2.10, http://www.andre-simon.de/ */
/* Highlighting theme definition: */
body.hl { background-color:#ffffff; }
pre.hl { color:#000000; background-color:#ffffff; font-size:10pt; font-family:&#39;Courier New&#39;;}
.hl.num { color:#000000; }
.hl.esc { color:#0000ff; }
.hl.str { color:#0000ff; }
.hl.dstr { color:#7f9fbf; }
.hl.slc { color:#2f9956; }
.hl.com { color:#717ab3; }
.hl.dir { color:#3f5fbf; }
.hl.sym { color:#006600; }
.hl.line { color:#000000; }
.hl.mark { background-color:#ffffbb;}
.hl.kwa { color:#7faa55; font-weight:bold; }
.hl.kwb { color:#7f0055; font-weight:bold; }
.hl.kwc { color:#7f0055; font-weight:bold; }
.hl.kwd { color:#666600; }
&lt;/style&gt;&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl com&quot;&gt;/* in constructor or wherever you want */&lt;/span&gt;&lt;br /&gt;
fileRef.addEventListener( Event.SELECT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fileSelected );&lt;br /&gt;
fileRef.addEventListener( Event.COMPLETE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; loadComplete );&lt;br /&gt;
...&lt;br /&gt;
&lt;span class=&quot;hl com&quot;&gt;/* in fileSelected() */&lt;/span&gt;&lt;br /&gt;
fileRef.load();&lt;/div&gt;&lt;br /&gt;
Quando il file è caricato in memoria viene chiamato il gestore &lt;code&gt;loadComplete()&lt;/code&gt;, nel quale possiamo iniziare l&#39;upload:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;hl kwb&quot;&gt;private var&lt;/span&gt; multipartLoader&lt;span class=&quot;hl sym&quot;&gt;:&lt;/span&gt;MultipartURLLoader &lt;span class=&quot;hl sym&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;hl kwb&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl kwb&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new&lt;/span&gt; &lt;span class=&quot;hl kwd&quot;&gt;MultipartURLLoader&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;();&lt;/span&gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;span class=&quot;hl kwb&quot;&gt;var&lt;/span&gt; loader&lt;span class=&quot;hl sym&quot;&gt;:&lt;/span&gt;URLLoader &lt;span class=&quot;hl sym&quot;&gt;=&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; multipartLoader&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;loader&lt;span class=&quot;hl sym&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
loader&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;Event&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;COMPLETE&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; uploadComplete&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
loader&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl sym&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;ProgressEvent&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;PROGRESS&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; progressHandler&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
...&lt;br /&gt;
multipartLoader&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;addFile&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;fileRef&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fileRef&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl str&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;file&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;hl str&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;application/octet-stream&quot;&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
multipartLoader&lt;span class=&quot;hl sym&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;hl kwd&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;hl sym&quot;&gt;(&lt;/span&gt;urlString&lt;span class=&quot;hl sym&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Una volta completato l&#39;upload il gestore &lt;code&gt;progressHandler()&lt;/code&gt;&lt;br /&gt;
comincerà ad essere chiamato, fino allo scaricamento completo della risposta, che coinciderà con l&#39;invocazione del gestore &lt;code&gt;uploadComplete()&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
E questo è tutto!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy Flexing!</content><link rel='replies' type='application/atom+xml' href='http://luomoradioattivo.blogspot.com/feeds/3721241239575124745/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/04/flex-file-upload.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/3721241239575124745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6297375736568060551/posts/default/3721241239575124745'/><link rel='alternate' type='text/html' href='http://luomoradioattivo.blogspot.com/2010/04/flex-file-upload.html' title='Flex file upload'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/08541619553885157921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>