<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2794566328585739125</atom:id><lastBuildDate>Tue, 29 May 2012 09:15:48 +0000</lastBuildDate><category>Python</category><category>PHPersonalBookmarks</category><category>Contest</category><category>Elettronica</category><category>Game</category><category>C</category><category>Didattica</category><category>Sql Database</category><category>Editor di testo</category><category>Mint</category><category>Windows</category><category>Modulo Softwar Developer</category><category>Hyde</category><category>Apple</category><category>Gambas</category><category>Strutture dati</category><category>Grafica Raster</category><category>Hybris</category><category>Meganalotto</category><category>Git</category><category>Operser</category><category>OpenERP</category><category>Social Network</category><category>Risorse utili</category><category>Elettrocolor</category><category>Qrcode</category><category>News</category><category>Modulo</category><category>C-Ohm</category><category>MeteoMachine linux</category><category>Il resto del Pinguino</category><category>Parlas</category><category>Mobile</category><category>Classe</category><category>CAD</category><category>Calcolatrice</category><category>Debian</category><category>Google Code</category><category>GNU/Linux</category><category>Free Mind</category><category>Curiosità</category><category>Diaspora</category><category>OpenOffice</category><category>Java</category><category>Algoritmi</category><category>Gnome</category><category>Ocvc</category><category>VirtualBoard</category><category>Grafica Vettoriale</category><category>ProBash-ide</category><category>Guide</category><category>Celyon</category><category>Django</category><category>Tombyla</category><category>Scribble</category><category>html</category><category>Php</category><category>Risoluzione problemi</category><category>Terminale</category><category>Hacking</category><category>Ubuntu</category><category>Bash</category><category>Gestione</category><category>The Greys</category><title>SoluzioniSoftware 3°</title><description>Blog basato su un storia vera!&lt;br&gt;&lt;br&gt;</description><link>http://soluzionisoftware.blogspot.com/</link><managingEditor>noreply@blogger.com (OpenCode)</managingEditor><generator>Blogger</generator><openSearch:totalResults>227</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/soluzionisoftware" /><feedburner:info uri="soluzionisoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-525207408213748392</guid><pubDate>Sat, 26 May 2012 08:57:00 +0000</pubDate><atom:updated>2012-05-26T10:57:24.831+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Risoluzione problemi</category><category domain="http://www.blogger.com/atom/ns#">Ubuntu</category><title>Wirlesse su HP Compaq NX6110 con Ubuntu 12.04</title><description>&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Gli avanzamenti di versione delle distribuzioni GNU/Linux portano sempre importanti novità e molte migliorie ma può capitare che portino anche problemi.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
È il caso di un &lt;b&gt;HP Compaq NX6110&lt;/b&gt;, passatomi sotto mano, che dopo il passaggio dalla versione 11.10 alla 12.04 di Ubuntu ha visto il wireless smettere di funzionare immediatamente.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-iI9dpZR-W-M/T8Ca0TWAlsI/AAAAAAAABOs/FHNZdiZc0rQ/s1600/HP-Compaq-nx6110.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://1.bp.blogspot.com/-iI9dpZR-W-M/T8Ca0TWAlsI/AAAAAAAABOs/FHNZdiZc0rQ/s320/HP-Compaq-nx6110.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La cosa interessante era notare come il gestore di rete indicasse che il wireless risultava disabilitato mediante l'apposito tasto e che lo stesso non sortisse alcun effetto se premuto. A questo punto è stato necessario risalire alla scheda di rete.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Entrando nel terminale e digitando&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;lspci&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
si è trovato un output simile al seguente:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;/div&gt;
&lt;i&gt;00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)&lt;br /&gt;00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)&lt;br /&gt;00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)&lt;br /&gt;00:1d.0 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)&lt;br /&gt;00:1d.1 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)&lt;br /&gt;00:1d.2 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)&lt;br /&gt;00:1d.3 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)&lt;br /&gt;00:1d.7 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)&lt;br /&gt;00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)&lt;br /&gt;00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)&lt;br /&gt;00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)&lt;br /&gt;00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)&lt;br /&gt;00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03)&lt;br /&gt;&lt;b&gt;02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)&lt;/b&gt;&lt;br /&gt;02:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller&lt;br /&gt;02:06.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller&lt;br /&gt;02:0e.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Nella riga evidenziata si vede che il portatile in questione monta una scheda di rete wireless Intel modello 2200BG.&lt;br /&gt;
&lt;br /&gt;
Per riabilitare nuovamente questo modello di schede su Ubuntu 12.04, pertanto, basta entrare nel terminale e digitare in successione i seguenti comandi:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo rfkill unblock 0&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo rfkill unblock1&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo rfkill list all&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;---------- &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Riavviate ed avrete nuovamente il wireless attivo.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-525207408213748392?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iIxKMdESfQMmRzV9AL-hyXQeg9A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iIxKMdESfQMmRzV9AL-hyXQeg9A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iIxKMdESfQMmRzV9AL-hyXQeg9A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iIxKMdESfQMmRzV9AL-hyXQeg9A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/KXfYj7aY-U0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/KXfYj7aY-U0/wirlesse-su-hp-compaq-nx6110-con-ubuntu.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-iI9dpZR-W-M/T8Ca0TWAlsI/AAAAAAAABOs/FHNZdiZc0rQ/s72-c/HP-Compaq-nx6110.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/05/wirlesse-su-hp-compaq-nx6110-con-ubuntu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-4395997435522008699</guid><pubDate>Sat, 19 May 2012 08:07:00 +0000</pubDate><atom:updated>2012-05-19T10:07:23.000+02:00</atom:updated><title>Testython: Controllare ogni parametro del proprio codice Python</title><description>&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Sviluppare del &lt;i&gt;buon codice&lt;/i&gt; vuol dire sicuramente sottoporre ciò che si scrive ad un continuo controllo di integrità, stabilità ed affidabilità. I software migliori, infatti, oltre a proporre all'utente un elevato numero di features e strumenti, sono veloci nell'eseguire le operazioni e leggeri su ogni tipo di memoria che viene messa loro a disposizione. &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Avere degli &lt;i&gt;ottimi strumenti di debug&lt;/i&gt; sicuramente aiuta lo sviluppatore che così può vagliare diverse opzioni al fine di garantire ai suoi utenti lo snippet di codice migliore all'interno dei suoi software.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Proprio da quest'idea nasce &lt;a href="https://github.com/OpenCode/testython" target="_blank"&gt;&lt;b&gt;Testython&lt;/b&gt;&lt;/a&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="https://github.com/OpenCode/testython" target="_blank"&gt;Testython&lt;/a&gt; è un semplicissimo modulo per python (attualmente minimale ed in fase di prova) che si pone l'obiettivo di proporre degli strumenti agli sviluppatori che garantiscano il pieno controllo su molte sfaccettature del codice al fine di poter aiutare nella scelta delle migliori alternative vagliate così da poter scrivere ottimi software sia per quanto riguarda il peso (in termini di memoria utilizzata) che la velocità. Lo scopo di questo modulo è quello di essere un coltellino svizzero, semplice da usare e facile da imparare.&lt;br /&gt;
&lt;br /&gt;
Attualmente il modulo si compone di due classi: &lt;b&gt;test_time&lt;/b&gt; e &lt;b&gt;test_memory&lt;/b&gt;. Come è facilmente intuibile, la prima si occupa di analizzare le tempistiche di esecuzione del codice mentre la seconda l'uso della memoria da parte delle variabili utilizzate.&lt;br /&gt;
&lt;br /&gt;
All'interno della cartella dei sorgenti è possibile trovare un semplice memento che potrà essere utile per una rapida consultazione ed inoltre è presente uno script di esempio completo che permette di analizzare l'uso dei diversi strumenti che il modulo, allo stato attuale, propone.&lt;br /&gt;
&lt;br /&gt;
Come sempre sono ben accette tutte le forme di sostegno ed aiuto. Ogni suggerimento che può aiutare il software a crescere sarà vagliato e sviluppato.&lt;br /&gt;
&lt;br /&gt;
Buon uso...&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-4395997435522008699?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JNlje3LJc0r4bDwpxAj3L2Xnhoo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JNlje3LJc0r4bDwpxAj3L2Xnhoo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JNlje3LJc0r4bDwpxAj3L2Xnhoo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JNlje3LJc0r4bDwpxAj3L2Xnhoo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/ceOje1QfBEE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/ceOje1QfBEE/testython-controllare-ogni-parametro.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/05/testython-controllare-ogni-parametro.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-8169773973723821728</guid><pubDate>Tue, 15 May 2012 11:23:00 +0000</pubDate><atom:updated>2012-05-15T16:30:49.217+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Sql Database</category><title>Sql: Aggiornamento o inserimento in una sola query</title><description>&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Quando si scrivono applicazioni che utilizzano un database per il salvataggio dei dati, è sempre importante tenere presente che la velocità è uno dei fattori più influenti per la buona riuscita del nostro lavoro. Bisogna infatti pensare che in ogni banca dati possono essere memorizzati milioni di record che, se analizzati e trattati, possono richiedere tempo e risorse che vengono sottratti ad altre attività che nello stesso momento girano sulla macchina in uso. Proprio per questo motivo quando si lavora su db sql è sempre preferibile demandare ogni tipo di attività al database stesso poiché la sua struttura ed i suoi strumenti sono programmati affinché le operazioni siano il meno dispendiose possibile.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Una delle attività più ricorrenti da effettuare su una serie di dati è il loro aggiornamento (se i dati sono presenti) o il loro inserimento (qualora essi non esistano ancora) all'interno del database in base ad una serie di variabili campione (ad esempio l'imput di un utente in una form). Questo lavoro richiede sicuramente un'estrazione di dati per effettuare un confronto ed un'analisi al fine di capire se eseguire un aggiornamento o un inserimento. Se volessimo analizzare le operazioni da eseguire con una serie di step, rappresentanti un algoritmo, essi si presenterebbero così:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;APRO LA CONNESSIONE AL DB&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;CERCO I DATI NEL DB&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;SE I DATI SONO PRESENTI:&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AGGIORNA I DATI CON I NUOVI VALORI&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;ALTRIMENTI:&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERISCI I DATI NEL DB&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;CHIUDO LA CONNESSIONE AL DB&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Come si può vedere, nonostante il codice sia il più minimale possibile, esso richiede una serie di passaggi che portano via una notevole quantità di tempo. Basti pensare che se il database in questione contiene 1 milione di record esso verrà (nella migliore delle ipotesi) "percorso" 2 volte (non necessariamente nella sua interezza) e ciò significa analizzare una grande mole di dati. Se a ciò aggiungiamo la complessità dei vari moduli dei diversi linguaggi di programmazione che dovrebbero aiutarci in questo lavoro allora capiamo quanto risparmiare secondi preziosi diventi fondamentale.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
A giungerci in aiuto in questo contesto arriva uno strumento sql davvero molto potente: &lt;b&gt;ON DUPLICATE KEY&lt;/b&gt;. Esso ci permette di eseguire le operazioni appena viste sopra (aggiornamento o inserimento) in una sola query senza preoccuparci di estrazioni e confronti. Il suo funzionamento è molto semplice. Esso si prende in carico il compito di analizzare la presenza di una determinata chiave e nel caso essa sia presente aggiornarla altrimenti inserirla. La sintassi si presenta come segue (l'esempio è riferito ad un db MySql):&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;b&gt;INSERT INTO&lt;/b&gt; tabella (chiave, campo1, campo2, ..., campoN) &lt;b&gt;VALUES&lt;/b&gt; (valchiave, val1, val2, ..., valN) &lt;b&gt;ON DUPLICATE KEY UPDATE&lt;/b&gt; campo1=val1, campo2=val2, ..., campoN = valN&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
In pratica la query si occupa di cercare all'interno del db il record in base al valore della chiave primaria (nel nostro caso &lt;i&gt;chiave&lt;/i&gt;) qualora esso sia presente verrà aggiornato con i valori della tupla che segue VALUES altrimenti verrà creata una nuova voce con i valori definiti dopo UPDATE. Si noti che nell'esempio che il valore di chiave nel caso di inserimento non è definito poiché il database conterrà una chiave con autoincremento ma qualora (per nostre scelte strutturali) la chiave deve essere definita manualmente la si potrà passare come un qualsiasi altro parametro. La query diventerebbe così:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;b&gt;INSERT INTO&lt;/b&gt; tabella (chiave, campo1, campo2, ...&lt;/i&gt;&lt;i&gt;, campoN&lt;/i&gt;&lt;i&gt;) &lt;b&gt;VALUES&lt;/b&gt; (valchiave, val1, val2, ...&lt;/i&gt;&lt;i&gt;, valN&lt;/i&gt;&lt;i&gt;) &lt;b&gt;ON DUPLICATE KEY UPDATE&lt;/b&gt; chiave=valchiave, campo1=val1, campo2=val2, ...&lt;/i&gt;&lt;i&gt;, campoN = valN&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Grazie all'uso di ON DUPLICATE KEY i vecchi step dell'algoritmo diventano:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;APRO LA CONNESSIONE AL DB&lt;/i&gt;&lt;/div&gt;
&lt;i&gt;ESEGUO QUERY&lt;/i&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;CHIUDO LA CONNESSIONE AL DB&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La scelta di questo strumento si è dimostrata appropriata in un test eseguito di persona. Si è visto, infatti, che confrontando i tempi di esecuzione di uno script python non ottimizzato con db mysql in locale popolato da 96000 record di prova, i due diversi algoritmi (con e senza ON DUPLICATE KEY) hanno portato una differenza di tempo di circa il 15%.&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-8169773973723821728?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YplVzcQkumkzx9JacTtIax5yo-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YplVzcQkumkzx9JacTtIax5yo-E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YplVzcQkumkzx9JacTtIax5yo-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YplVzcQkumkzx9JacTtIax5yo-E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/PNFGMfZ5giA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/PNFGMfZ5giA/my.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/05/my.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-5827940858391170106</guid><pubDate>Mon, 23 Apr 2012 09:28:00 +0000</pubDate><atom:updated>2012-04-23T11:28:07.932+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Python</category><title>ReportLab e Python: Creare codici a barre</title><description>&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Come abbiamo avuto modo di vedere, mediante l'uso della libreria offerta da ReportLab, è possibile creare in maniera molto flessibile dei PDF che soddisfino tutti le nostre necessità. Ora però, una volta capito come creare un documento, abbiamo la necessità che esso venga riempito con qualcosa di utile.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
In ogni contesto lavorativo, e quindi a maggior ragione in un contesto industriale come quello oggetto d'esame nello&lt;a href="http://soluzionisoftware.blogspot.it/2012/04/reportlab-creare-pdf-con-python.html" target="_blank"&gt; scorso articolo&lt;/a&gt;, la praticità che l'informatica può offrire, è lo strumento migliore che aiuta l'utente a disfarsi di un grosso carico di lavoro ritenuto inutile. Dotare il proprio documento di un codice a barre può servire per effettuare numerose operazioni utili nel futuro come&amp;nbsp; ricerche, organizzazione di documenti, generazione di riferimenti rapidi da riportare su eventuali documenti cartacei, etc...&lt;/div&gt;
&lt;br /&gt;
Ora vediamo come sfruttare ReportLab per creare un codice a barre da inserire nel nostro documento.&lt;br /&gt;
Il codice da esaminare è il seguente:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;----- Python -----&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;from reportlab.pdfgen import canvas &lt;span style="color: #cccccc;"&gt;(1)&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;span style="color: black;"&gt;from reportlab.lib.units import mm&lt;/span&gt; (2)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;span style="color: black;"&gt;from reportlab.graphics.barcode import code39&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt; &lt;span style="color: #cccccc;"&gt;(3) &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mio_pdf = canvas.Canvas('mio.pdf') &lt;span style="color: #cccccc;"&gt;(1)&lt;/span&gt;&lt;br /&gt;# ----- imposta le dimensioni&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;mio_pdf.setPageSize((204, 65)) &lt;span style="color: #cccccc;"&gt;(1)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;# ----- genera ed imposta il barcode&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;span style="color: #cccccc;"&gt;&lt;i style="color: black;"&gt;barcode = code39.Extended39('1234', barWidth=0.5*mm,barHeight=8*mm&lt;/i&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color: #cccccc;"&gt; (4)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;span style="color: black;"&gt;barcode.drawOn(&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;mio_pdf&lt;/i&gt;&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;span style="color: black;"&gt;, 10*mm, 10*mm)&lt;/span&gt; (5)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;&lt;span style="color: #cccccc;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;# ----- genera e salva il pdf&lt;br /&gt;mio_pdf.showPage() &lt;span style="color: #cccccc;"&gt;(1)&lt;/span&gt;&lt;br /&gt;mio_pdf.save() &lt;span style="color: #cccccc;"&gt;(1)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;

&lt;i&gt;----------&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Anche questa volta, il sorgente da analizzare è molto semplice e racchiude solo lo stretto necessario affinché venga compreso l'uso dei codici a barre.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Il codice che è già stato esplicato nel precedente articolo (1) non verrà ritrattato e pertanto vi invito ad una rilettura del &lt;a href="http://soluzionisoftware.blogspot.it/2012/04/reportlab-creare-pdf-con-python.html" target="_blank"&gt;precedente post&lt;/a&gt; per comprenderne il significato ed il comportamento.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Innanzitutto partiamo dall'inclusione di una nuova voce (2) che ci permette di convertire al volo tutte le unità di misura (che vengono richieste in pollici) in millimetri. In questo modo la generazione dei documenti ed il calcolo delle misure risulterà molto più semplice ed immediata. Successivamente (3) è presente la vera e propria importazione del modulo che si occupa di generare il nostro codice a barre. La funzione da utilizzare è &lt;b&gt;Extended39&lt;/b&gt;. Essa riceve un parametro e restituisce il riferimento all'oggetto barcode. Il parametro da passare alla funzione è la stringa da trasformare in codice a barre. Nel nostro esempio si è scelto di convertire la stringa '1234'. Si tenga presente che la funzione accetta altri parametri opzionali e due di essi sono stati inseriti nell'esempio. &lt;b&gt;barWidth&lt;/b&gt; e &lt;b&gt;barHeight&lt;/b&gt; servono, infatti, ad impostare, rispettivamente, larghezza ed altezza dell'immagine che verrà generata. Si noti come per tale situazione si sia usata la variabile &lt;b&gt;mm&lt;/b&gt;, precedentemente (1) importata. Come già detto, essa converte automaticamente i millimetri indicati in punti. Subito dopo aver generato il nostro oggetto barcode possiamo "disegnarlo" all'interno del pdf con il suo metodo &lt;b&gt;drawOn&lt;/b&gt;. Esso accetta tre parametri: un oggetto di tipo canvas (quello che stiamo usando per generare il nostro pdf), nel quale inserire l'immagine, la posizione sull'asse orizzontale e quella sull'asse verticale nel nostro documento della stessa.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Come si può notare anche la generazione dei codici a barre è molto elastica e potente con questo strumento e nella documentazione ufficiale si possono trovare altri riferimenti ad altre funzioni certamente utili.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-5827940858391170106?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kLdDPiPKOQAeswlR2V3MHeysbuc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kLdDPiPKOQAeswlR2V3MHeysbuc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kLdDPiPKOQAeswlR2V3MHeysbuc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kLdDPiPKOQAeswlR2V3MHeysbuc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/RpCncJoH0Ag" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/RpCncJoH0Ag/reportlab-e-python-creare-codici-barre.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/reportlab-e-python-creare-codici-barre.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-5906048643513171597</guid><pubDate>Wed, 18 Apr 2012 10:10:00 +0000</pubDate><atom:updated>2012-04-18T12:10:26.104+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">News</category><title>Disponibili i sorgenti dell'originale Prince of Persia</title><description>&lt;br /&gt;
Come era stato preannunciato in un &lt;a href="http://soluzionisoftware.blogspot.it/2012/04/ritrovato-prince-of-persia.html" target="_blank"&gt;precedente post&lt;/a&gt;, una fortuita coincidenza aveva permesso a &lt;b&gt;Jordan Mechner&lt;/b&gt; di riottenere i sorgenti dell'orginale &lt;b&gt;Prince of Persia&lt;/b&gt; che risultavano perduti ormai da numerosi anni. Lo stesso sviluppatore, dopo il ritrovamento del proprio tesoro, aveva promesso che dopo un aggiornamento del codice avrebbe provveduto a caricarlo in modo da rendere il tutto idoneo ad un rilascio Open Source in grande stile. La notizia a fatto il giro del mondo e la gente era in attesa che quanto detto divenisse realtà.&lt;br /&gt;
Per tutti i nostalgici e per i curiosi finalmente la parola è stata promessa e grazie all'hosting offerto da &lt;a href="https://github.com/jmechner/Prince-of-Persia-Apple-II" target="_blank"&gt;GitHub&lt;/a&gt; ora è possibile esplorare, scaricare e, perchè no, forkare il progetto per far nascere qualcosa di nuovo o ridar vita a qualcosa di vecchio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.jailbreakscene.net/wp-content/uploads/2011/06/Prince-of-Persia-DOS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://www.jailbreakscene.net/wp-content/uploads/2011/06/Prince-of-Persia-DOS.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp; &lt;br /&gt;
Sicuramente la notizia è tra le più interessanti dell'ultimo periodo e c'è la certezza che qualcuno e già all'opera o lo sarà a breve per portare questo piccolo capolavoro della storia dell'informatica sulle più recenti piattaforme in circolazione. Forse lo troveremo a breve su le nostre linux box o nei nostri mac oppure vedremo il principe eseguire i celebri salti in una finestra di Windows. Rimane comunque il fatto che la storia e storia e questo&amp;nbsp; codice ne è sicuramente un pezzo importante.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-5906048643513171597?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ylWFPW_X9pt0PIvH4sTeFY7dFlg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ylWFPW_X9pt0PIvH4sTeFY7dFlg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ylWFPW_X9pt0PIvH4sTeFY7dFlg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ylWFPW_X9pt0PIvH4sTeFY7dFlg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/b42M2BCsyUA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/b42M2BCsyUA/disponibili-i-sorgenti-delloriginale.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/disponibili-i-sorgenti-delloriginale.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-3257095065242336793</guid><pubDate>Mon, 16 Apr 2012 07:33:00 +0000</pubDate><atom:updated>2012-04-16T09:33:44.191+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Python</category><title>ReportLab: Creare PDF con Python</title><description>&lt;div style="text-align: justify;"&gt;
Ritorniamo un po' a parlare di quello che più ci piace fare di più: sviluppare software!&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Tempo fa ero alla ricerca di un ottimo metodo che mi permettesse di stampare etichette per un processo industriale. La scelta ricadde su Python per una serie di motivi particolari legati al sistema in uso su le macchine presenti in loco. Ora il dilemma era scegliere la libreria migliore per generare dei PDF da inviare alle macchine di stampa. Scriverne una nuova sarebbe stata un'enorme perdita di tempo e visto che, fortunatamente, viviamo in un mondo costellato di ottimi progetti Open Source, dove è possibile trovare sempre quello che fa al caso proprio, mi sono messo alla ricerca di qualcosa che mi aiutasse in questa problematica. Nelle ricerche effettuate mi sono imbattuto in numerosi progetti interessanti ma uno in particolare pare essere completo ed altamente funzionante: la libreria pdfgen di &lt;a href="http://www.reportlab.com/software/opensource/" target="_blank"&gt;reportlab&lt;/a&gt;. Esistono due versione della stessa libreria, quella base e quella plus. Per i nostri scopi quella più semplice va benissimo ed è anche quella che troveremo nei nostri repository.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Per iniziare ad utilizzare pdfgen dobbiamo prima installare il necessario. Basterà recarsi nel proprio gestore di pacchetti ed installare python-reportlab o digitare nel terminale (per sistemi debian.based):&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;# apt-get install python-reportlab&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
A questo punto possiamo includere la libreria nei nostri sorgenti python con:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;import reportlab.pdfgen&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Analizziamo ora un semplice script per vedere il funzionamento di questo strumento:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;----- Python -----&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;#!/usr/bin/env python&lt;br /&gt;&lt;br /&gt;from reportlab.pdfgen import canvas &lt;span style="color: #cccccc;"&gt;(1) &lt;/span&gt;&lt;br /&gt;from datetime import datetime&lt;br /&gt;&lt;br /&gt;mio_pdf = canvas.Canvas('mio.pdf') &lt;span style="color: #cccccc;"&gt;(2)&lt;/span&gt;&lt;br /&gt;# ----- imposta le dimensioni a 7.2 x 2.3 cm&lt;br /&gt;mio_pdf.setPageSize((204.0944882400, 65.1968504100)) &lt;span style="color: #cccccc;"&gt;(3)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;# ----- scrive la data di oggi nel pdf&lt;br /&gt;mio_pdf.drawString(0,54,str(datetime.today()))&lt;span style="color: #cccccc;"&gt; (4)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;# ----- genera e salva il pdf&lt;br /&gt;mio_pdf.showPage() &lt;span style="color: #cccccc;"&gt;(5)&lt;/span&gt;&lt;br /&gt;mio_pdfp.save() &lt;span style="color: #cccccc;"&gt;(6)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;----------&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Come si vede il codice è molto semplice ma molto potente. Analizziamolo passo per passo anche se i commenti dovrebbero essere di per sè molto chiari. Partendo dal primo rigo di codice utile, si importa semplicemente la funzione canvas dalla libreria (1). Tale funzione è quella che si occupa di "disegnare" il documento ed il suo contenuto. Sarà la funzione che più utilizzerete nel vostro codice e perciò vi conviene studiarla per bene. Successivamente (2) viene generato il contenitore per i nostri dati e si definiscono le dimensioni in punti (3). Al suo interno poi si definiscono le coordinate in stile cartesiano (a partire dal punto in basso a sinistra che rappresenta lo 0,0) in cui inserire il nostro contenuto. Qui (4) si è scelto di stampare la data di oggi in un punto indicativamente in alto a sinistra. Infine (5) si genera il PDF con tutto ciò che è stato creato e lo si salva (6) nella path in cui viene eseguito il nostro script.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
La libreria è molto potente e permette di definire numerosissimi valori per generare al meglio il nostro documento secondo le nostre esigenze. Per la &lt;a href="http://www.reportlab.com/apis/reportlab/dev/pdfgen.html" target="_blank"&gt;documentazione completa&lt;/a&gt; vi rimando al sito ufficiale che risulta essere completo ed esaustivo nella maggior parte dei casi.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Per ogni dubbio non esitate ad utilizzare i commenti. Cercherò di aiutarvi.&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-3257095065242336793?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YFu7XyNcLgEhlLv4PoSJyHPHQ5c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YFu7XyNcLgEhlLv4PoSJyHPHQ5c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YFu7XyNcLgEhlLv4PoSJyHPHQ5c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YFu7XyNcLgEhlLv4PoSJyHPHQ5c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/JzvPO2lBzB0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/JzvPO2lBzB0/reportlab-creare-pdf-con-python.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/reportlab-creare-pdf-con-python.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-5840902305091281776</guid><pubDate>Fri, 13 Apr 2012 07:59:00 +0000</pubDate><atom:updated>2012-04-13T09:59:36.030+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Game</category><category domain="http://www.blogger.com/atom/ns#">News</category><category domain="http://www.blogger.com/atom/ns#">Contest</category><title>Liberated Pixel Art</title><description>&lt;div style="text-align: justify;"&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
L'ormai diffuso interesse verso l'open source è il sintomo predominante di una nuova serie di idee nate per infoltire di ottimi progetti questo già consolidato mondo. Sempre più iniziative, anche promosse dalle aziende più blasonate del settore informatico, nascono e permettono a ottimi prodotti di venire al mondo.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Ultimo, ma solo in ordine cronologico, è il progetto partorito dalle menti di &lt;b&gt;Creative Commons&lt;/b&gt;, &lt;b&gt;Free Software Foundation&lt;/b&gt; ed &lt;b&gt;OpenGameArt&lt;/b&gt; che hanno promosso un contest, &lt;b&gt;Liberated Pixel Art&lt;/b&gt;, che prevede la creazione di un &lt;i&gt;videogame 100% open source&lt;/i&gt;. Il lavoro che sarà decretato il vincitore otterrà un premio di &lt;i&gt;10000$&lt;/i&gt; che attualmente è in &lt;a href="https://my.fsf.org/donate/working-together/liberated-pixel-cup" target="_blank"&gt;fase di raccolta&lt;/a&gt; mediante le donazioni che giungono dagli utenti. Si può partecipare da soli o presentarsi con un team.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-wTmoAIWSgQQ/T4fcygU7nmI/AAAAAAAABNw/V4KzQmLfZt4/s1600/lpc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="87" src="http://1.bp.blogspot.com/-wTmoAIWSgQQ/T4fcygU7nmI/AAAAAAAABNw/V4KzQmLfZt4/s320/lpc.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
La sfida è stata suddivisa in due fasi di gara.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Fase 1&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;Dal 01/06/12 al 30/06/12&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Definita la parte &lt;i&gt;artistica&lt;/i&gt;, questa sezione del contest prevede la creazione di quelli che saranno i contenuti grafici del potenziale videogame. In una fase preliminare è stato definito che il gioco che dovrà essere sviluppato avrà un gameplay ed una grafica che rievochino i vecchi RPG del secolo scorso. Punti fondamentali per poter vedere i propri lavori accettati è quella di dover rilasciare tutto i lavoro sotto licenza CC-BY-SA 3.0 e GNU GPL 3.0. Per le 
immagini il consiglio è di utilizzare il formato PNG, per l'audio e gli effetti sonori brevi il WAV mentre FLAC ed OGG sono preferibile per la musica di 
sottofondo o altre colonne sonore.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Fase 2&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;Dal 01/07/12&amp;nbsp; al 31/07/12&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Definita la parte &lt;i&gt;di sviluppo&lt;/i&gt;, questa sezione si fa carico dello sviluppo vero e proprio del motore di gioco. I criteri per questa sezione prevedono che il codice deve essere libero e open source e deve essere disponibile sotto la licenza GNU GPL 3.0. Il codice deve essere compilabile su sistemi liberi &lt;span style="background-color: #e6ecf9;"&gt;&lt;/span&gt;al 100% e non deve basarsi su librerie proprietarie. Può essere sviluppato su una qualsivoglia piattaforma solo se essa ha una controparte libera che gira su altri sistemi come ad esempio GNU/Linux. Il sorgente deve essere semplice da installare ed usare.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Vi lascio qualche link per approfondire. Partecipare numerosi.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://creativecommons.org/" target="_blank"&gt;Creative Commons&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://www.fsf.org/" target="_blank"&gt;Free Software Foundation&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://opengameart.org/" target="_blank"&gt;OpenGamesArt&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://lpc.opengameart.org/content/lpc-rules" target="_blank"&gt;Liberated Pixel Art&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-5840902305091281776?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jJKdKrxPqH_gHW4zufMyPPcLyek/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jJKdKrxPqH_gHW4zufMyPPcLyek/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jJKdKrxPqH_gHW4zufMyPPcLyek/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jJKdKrxPqH_gHW4zufMyPPcLyek/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/HzT-QL57eDY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/HzT-QL57eDY/liberated-pixel-art.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-wTmoAIWSgQQ/T4fcygU7nmI/AAAAAAAABNw/V4KzQmLfZt4/s72-c/lpc.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/liberated-pixel-art.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-8823201556261452345</guid><pubDate>Wed, 04 Apr 2012 11:06:00 +0000</pubDate><atom:updated>2012-04-04T13:06:56.614+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Php</category><category domain="http://www.blogger.com/atom/ns#">PHPersonalBookmarks</category><title>PHPersonalBookmarks: i filtri</title><description>Cresce, nonostante il tempo a disposizione, il codice che muove il cuore di &lt;b&gt;PHPersonalBookmarks&lt;/b&gt; ed ovviamente crescono le funzionalità che vengono proposte a chi ha scelto di utilizzare il &lt;a href="http://soluzionisoftware.blogspot.it/search/label/PHPersonalBookmarks" target="_blank"&gt;software&lt;/a&gt;. Ultima, ma solo in ordine cronologico, è la nuovissima funzionalità mediante la quale l'&lt;i&gt;utente potrà filtrare&lt;/i&gt; i link mediante url, nome, descrizione e tags. Basterà inserire una qualsiasi stringa contenuta all'interno della riga che si vuole ricerca ed avremo la nostra lista prontamente filtrata.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-udMxEsRVLck/T3wquyV68LI/AAAAAAAABNo/eE_taeOc-vk/s1600/PHPersonalBookmarks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="57" src="http://3.bp.blogspot.com/-udMxEsRVLck/T3wquyV68LI/AAAAAAAABNo/eE_taeOc-vk/s320/PHPersonalBookmarks.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;Buon uso a tutti!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-8823201556261452345?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/32ipjEXSPEjUMC5lCDbX6WQhSZE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/32ipjEXSPEjUMC5lCDbX6WQhSZE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/32ipjEXSPEjUMC5lCDbX6WQhSZE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/32ipjEXSPEjUMC5lCDbX6WQhSZE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/5dOMXsuZJ4I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/5dOMXsuZJ4I/phpersonalbookmarks-i-filtri.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-udMxEsRVLck/T3wquyV68LI/AAAAAAAABNo/eE_taeOc-vk/s72-c/PHPersonalBookmarks.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/phpersonalbookmarks-i-filtri.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-4263881553549038225</guid><pubDate>Tue, 03 Apr 2012 10:24:00 +0000</pubDate><atom:updated>2012-04-03T16:36:56.382+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">News</category><title>"Ritrovato" Prince of Persia</title><description>&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
Sembrerebbe una storia di ordinarie pulizie di primavera ed invece il ritrovamento di un anonimo scatolone nelle soffitta di una famiglia come tante potrà risvegliare assopiti appetiti per molti videogiocatori cresciuti a pane e DOS.&lt;br /&gt;
&lt;br /&gt;
Pare infatti che un padre come tanti abbia ritrovato in soffitta delle vecchie scatole del figlio e le abbia spedite al legittimo proprietario. Peccato che a ricevere il pacco c'era Jordan Mechner, noto creatore del celeberrimo gioco &lt;b&gt;Prince of Persia&lt;/b&gt; che in quelle scatole aveva conservato i sorgenti originali del gioco da lui stesso sviluppato! Alla scoperta del contenuto di quei dischetti, l'uomo si è subito attrezzato per aggiornare i sorgenti originariamente scritti in ProDOS per poterli distribuire in rete.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.jailbreakscene.net/wp-content/uploads/2011/06/Prince-of-Persia-DOS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://www.jailbreakscene.net/wp-content/uploads/2011/06/Prince-of-Persia-DOS.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Potrà mai l'Open Source garantire la rinascita di un classico degli anni '80 e '90 che ha accompagnato diverse generazioni di appassionati?&lt;br /&gt;
&lt;br /&gt;
Credo che se ne sentirà presto parlare.&lt;br /&gt;
&lt;br /&gt;
Fonti [&lt;a href="http://www.ossblog.it/post/9739/jordan-mechner-ha-riesumato-il-codice-sorgente-di-prince-of-persia" target="_blank"&gt;1&lt;/a&gt;] - [&lt;a href="http://jordanmechner.com/blog/2012/03/prince-of-persia-source-code-found/" target="_blank"&gt;2&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-4263881553549038225?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z7-59r_1dALz1MjfyAJWdgHwGFw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z7-59r_1dALz1MjfyAJWdgHwGFw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z7-59r_1dALz1MjfyAJWdgHwGFw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z7-59r_1dALz1MjfyAJWdgHwGFw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/2-vRkxA7028" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/2-vRkxA7028/ritrovato-prince-of-persia.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/04/ritrovato-prince-of-persia.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-760795830774222972</guid><pubDate>Mon, 26 Mar 2012 11:08:00 +0000</pubDate><atom:updated>2012-03-27T09:16:03.555+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Php</category><category domain="http://www.blogger.com/atom/ns#">PHPersonalBookmarks</category><title>PHPersonalBookmarks in 4 lingue</title><description>&lt;div class="post-content"&gt;
&lt;div&gt;
&lt;div class="collapsible"&gt;
&lt;br /&gt;
È con immenso piacere che dichiaro che grazie al potere dell'Open Source, di un utente di Github e di un utente di Diaspora, &lt;a href="http://soluzionisoftware.blogspot.it/search/label/PHPersonalBookmarks" target="_blank"&gt;PHPersonalBookmarks&lt;/a&gt;
 è stato tradotto in 4 lingue diverse.&lt;br /&gt;
&lt;br /&gt;
Sembrerà poco ma se si riflette 
sul fatto che il progetto non ha neanche un mese di vita la cosa, per 
me, è magnifica.&lt;br /&gt;
&lt;br /&gt;
Per ora abbiamo &lt;b&gt;Italiano&lt;/b&gt;, &lt;b&gt;Inglese&lt;/b&gt;, &lt;b&gt;Spagnolo&lt;/b&gt; e &lt;b&gt;Francese&lt;/b&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-760795830774222972?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bFKo78-UilvyROvjeewf4Vzm28c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bFKo78-UilvyROvjeewf4Vzm28c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bFKo78-UilvyROvjeewf4Vzm28c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bFKo78-UilvyROvjeewf4Vzm28c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/UNbYMaZBhu0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/UNbYMaZBhu0/e-con-immenso-piacere-che-dichiaro-che.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/03/e-con-immenso-piacere-che-dichiaro-che.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-7961346626513539499</guid><pubDate>Mon, 19 Mar 2012 18:40:00 +0000</pubDate><atom:updated>2012-03-22T11:05:04.275+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Php</category><category domain="http://www.blogger.com/atom/ns#">PHPersonalBookmarks</category><title>PHPersonalBookmarks</title><description>&lt;div class="details" style="display: block;"&gt;
&lt;br /&gt;
Volevo presentarvi un piccolo progettino portato avanti nei ritagli di tempo libero. Si tratta di un software scritto in php
 (e stralci di jquery) che permette di gestire direttamente on-line i propri &lt;b&gt;segnalibri&lt;/b&gt;. 
Perciò se avete uno spazio web (o se volete provarlo in locale) 
potete liberamente scaricare i &lt;a href="https://github.com/OpenCode/PHPersonalBookmarks" target="_blank"&gt;sorgenti open source&lt;/a&gt; e caricarli nel vostro
 spazio web con un semplice trasferimento ftp o ssh.&lt;br /&gt;
&lt;br /&gt;
Potete iniziare immediatamente a catalogare i vostri 
segnalibri preferiti e consultarli immediatamente on line ovunque siete. Non necessita 
di nessun tipo di database perchè si basa tutto su un db flat text.&lt;br /&gt;
&lt;br /&gt;
Chiunque voglia 
provarlo può scaricarlo, caricarlo ed utilizzarlo immediatamente senza 
installazioni e configurazioni.&lt;br /&gt;
&lt;br /&gt;
Il codice, nonostante la sua semplicità e leggerezza, permette di svolgere le principali&amp;nbsp; attività legate alla catalogazione dei propri links. È possibile, ad esempio, creare i link mediante un comodo form ed inserire le informazioni più importanti, cancellare i link direttamente dalla lista mediante l'apposita icona, Eliminare i link per nome, descrizione e tag semplicemente cliccando sulla testata della colonna, mostrare i link una comoda finestra modale per avere un'anteprima del sito che si sta per visitare e condividere in maniera rapida gli url con i propri amici su centinaia si siti e social network.&lt;br /&gt;
&lt;br /&gt;
Se il progetto vi interessa seguite il tag &lt;a class="tag" href="https://joindiaspora.com/tags/phpersonalbookmarks"&gt;#phpersonalbookmarks&lt;/a&gt; su diaspora per essere sempre aggiornati sullo sviluppo.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_34577220a91fc1c3f3d6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_34577220a91fc1c3f3d6.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Vista della lista dei links&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_eb54e09b49f4913a2a8a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="181" src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_eb54e09b49f4913a2a8a.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Form creazione link&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_29536cf8d4c99c0886a7.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="https://joindiaspora.s3.amazonaws.com/uploads/images/scaled_full_29536cf8d4c99c0886a7.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Esempio di sito in finestra modale&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-7961346626513539499?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XCgK_46G03LdRh5w-5z9VVWbXYw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XCgK_46G03LdRh5w-5z9VVWbXYw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XCgK_46G03LdRh5w-5z9VVWbXYw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XCgK_46G03LdRh5w-5z9VVWbXYw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/dM87V0_xu78" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/dM87V0_xu78/phpersonalbookmarks.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/03/phpersonalbookmarks.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-7866614769331304646</guid><pubDate>Sun, 26 Feb 2012 10:34:00 +0000</pubDate><atom:updated>2012-02-26T11:34:38.235+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Free Mind</category><title>L'epoca delle fotografie</title><description>C'è stato un tempo in cui la passione per la fotografia lasciava largo spazio all'incontro tra la natura, i soggetti e l'uomo. Tutto ciò che serviva per immortalare lo scatto era racchiuso nel momento stesso in cui lo scatto iniziava ad esistere. Un paesaggio, una reflex e l'uso parsimonioso della messa a fuoco erano tutto quello che serviva per creare l'arte da ciò che già era arte. A ciò si aggiungeva l'attesa di avere tra le mani la propria fotografia sviluppata e questo rendeva ancora più piacevole fare foto. Il numero limitato di scatti a disposizione era il freno inibitore verso tutto ciò che si riteneva inutile.&lt;br /&gt;
&lt;br /&gt;
Poi giunse la rivoluzione. Photoshop permise alla gente di sbagliare e da ciò ne derivò una perdita di poesia dovuto dall'attenzione meticolosa nella ricerca del soggetto perfetto, della sua inquadratura, del suo profilo migliore e della luce più idonea affinché tutto fosse al posto giusto. Il post-fotografia è diventato un vero e proprio laboratorio di finzione dove ciò che non c'era poteva essere aggiunto, ciò che non doveva esserci eliminato. I colori potevano essere alterati, la bellezza poteva essere osannata o nascosta. Nulla era più ciò era stato.&lt;br /&gt;
&lt;br /&gt;
Poi fu ancora rivoluzione. Giunsero le camere intelligenti. Messa a fuoco automatica, scatto propositivo, funzioni preimpostare e scelta del soggetto migliore. Il fotografo a smesso di essere tale ed il suo compito ha iniziato ad essere sempre più simile a quello di un semplice treppiede. Non ti è permesso sbagliare per il gusto di farlo perché tutto deve essere perfetto. Non puoi definire l'arte dello sfocato perché pur volendo non puoi farlo.&lt;br /&gt;
&lt;br /&gt;
Voi potete pure chiamarla libertà tecnologica ma io la chiamo prigionia del progresso.&lt;br /&gt;
&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-7866614769331304646?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8rqS40N6x1tl-OTuEBcQCj65ABI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8rqS40N6x1tl-OTuEBcQCj65ABI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8rqS40N6x1tl-OTuEBcQCj65ABI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8rqS40N6x1tl-OTuEBcQCj65ABI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/G8Nr7wvAYXE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/G8Nr7wvAYXE/lepoca-delle-fotografie.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/02/lepoca-delle-fotografie.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-4044056538519137572</guid><pubDate>Wed, 08 Feb 2012 01:00:00 +0000</pubDate><atom:updated>2012-02-07T17:06:09.564+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gambas</category><category domain="http://www.blogger.com/atom/ns#">Free Mind</category><title>Fa sempre piacere farsi citare...</title><description>Qualche giorno fa ho notato la presenza di un messaggio nel forum di Gambas e mi sono apprestato a leggerlo. Il messaggio proveniva da un utente che, insieme ad altre persone si è posto l'intento a creare un software, &lt;b&gt;Azeotrope,&lt;/b&gt; che funga da calcolatore chimico che sia utile a risolvere facilmente esercizi ed eseguire calcoli techiometrici.&lt;br /&gt;
&lt;br /&gt;
All'interno del software è stato usato del mio codice e l'utente in questione&amp;nbsp; ci teneva a farmelo presente. La cosa è stata molto gradita ed è stato un gesto piacevole e molto educato che mi ha fatto capire quanto possa essere interessante scoprire cose nuove in modi così inaspettati.&lt;br /&gt;
&lt;br /&gt;
Il software è ben fatto e molto interessante. Lo consiglio a chiunque lavori in questo campo e ne sappi molto più me.&lt;br /&gt;
&lt;br /&gt;
Lascio qui il link al &lt;a href="http://www.azeotrope.tk/" target="_blank"&gt;sito ufficiale&lt;/a&gt; del software lo screenshot gentilmente inviatomi dal team di &lt;b&gt;Azeotrope&lt;/b&gt; in cui figura anche il mio nome...;)&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-z52JQWcx23s/TzFLNw_FtNI/AAAAAAAABNY/yuGmRmA8S2Y/s1600/Schermata.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-z52JQWcx23s/TzFLNw_FtNI/AAAAAAAABNY/yuGmRmA8S2Y/s400/Schermata.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-4044056538519137572?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ck_XLhfFhBGpjUoNLlYaC_hHKfg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ck_XLhfFhBGpjUoNLlYaC_hHKfg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ck_XLhfFhBGpjUoNLlYaC_hHKfg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ck_XLhfFhBGpjUoNLlYaC_hHKfg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/GOTF-3cbQno" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/GOTF-3cbQno/fa-sempre-piacere-farsi-citare.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-z52JQWcx23s/TzFLNw_FtNI/AAAAAAAABNY/yuGmRmA8S2Y/s72-c/Schermata.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/02/fa-sempre-piacere-farsi-citare.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-1743776644110884525</guid><pubDate>Tue, 03 Jan 2012 11:13:00 +0000</pubDate><atom:updated>2012-01-03T12:39:29.129+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gambas</category><title>Rilasciato Gambas 3</title><description>&lt;br /&gt;
Come era stato promesso dal suo creato Benoit Minisini, &lt;a href="http://gambas.sourceforge.net/en/main.html" target="_blank"&gt;&lt;b&gt;Gambas 3&lt;/b&gt;&lt;/a&gt; è stata la prima bambina a nascere nel 2012 in tutto il mondo. Frutto di diversi anni di sviluppo e proveniente da una versione 2 che ha conosciuto la sua gloria anche &lt;a href="http://www.gambas-it.org/wp/" target="_blank"&gt;nel nostro paese&lt;/a&gt;, il linguaggio del gambero blu ora si fa carico di questa nuova avventura nel ramo di sviluppo numero 3.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://gambas.sourceforge.net/home.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://gambas.sourceforge.net/home.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Il nuovo linguaggio porta con sé diverse novità nonostante non ci sia stato un grosso strappo con il passato. I vecchi progetti, con una sommaria modifica ad alcune parti di codice, dovrebbero essere compatibili sia a livello di listato che di visualizzazione grafica. Diverse nuove funzionalità sono state implementate ed altre sono invece state eliminate. L'intero IDE di Gambas è stata riscritto con le qt4 e queste ultime sono ottimamente supportate dal software stesso. Per le GTK3 invece ci sarà da aspettare visto il loro sviluppo e la mancanza di una e propria versione stabile delle stesse.&lt;br /&gt;
&lt;br /&gt;
Per chi volesse trovarlo nei repository della propria distribuzione 
dovrà aspettare le uscite delle nuove versioni delle distro GNU/Linux o,
 in alternativa, è possibile compilare i sorgenti o ricorrere a repo di 
terze parti.&lt;br /&gt;
&lt;br /&gt;
La nuova versione promette bene e lo sviluppo diventa sempre più piacevole e rapido. La comunità cresce e questo, per un progetto open source, è un bene per la qualità e la varietà del codice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-1743776644110884525?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0o3holHLdVFoMHt9W8zz0cuBp9Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0o3holHLdVFoMHt9W8zz0cuBp9Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0o3holHLdVFoMHt9W8zz0cuBp9Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0o3holHLdVFoMHt9W8zz0cuBp9Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/B4krO9EFoig" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/B4krO9EFoig/rilasciato-gambas-3.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2012/01/rilasciato-gambas-3.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-3578067033506324007</guid><pubDate>Mon, 02 Jan 2012 14:21:00 +0000</pubDate><atom:updated>2012-01-03T12:37:30.133+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Social Network</category><title>WorkForPie: social network, sviluppo e lavoro</title><description>&amp;nbsp; &lt;br /&gt;
Se si dovesse descrivere in poche parole il nuovo progetto &lt;b&gt;WorkForPie&lt;/b&gt;, sicuramente sarebbe necessario utilizzare i tre termini più in voga attualmente in rete:&amp;nbsp;&lt;b&gt;social network&lt;/b&gt;, &lt;b&gt;sviluppo&lt;/b&gt; e &lt;b&gt;lavoro&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://workforpie.com/" target="_blank"&gt;WorkForPie&lt;/a&gt;, infatti, nasce con l'intento di diventare un social network dedicato a tutti quelli sviluppatori di software che intendono valorizzare il proprio lavoro mediante la propria influenza sul web.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Mpi_Llc35GA/TwIHP2LB1bI/AAAAAAAABM8/Ka7doCWni_c/s1600/work-for-pie.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Mpi_Llc35GA/TwIHP2LB1bI/AAAAAAAABM8/Ka7doCWni_c/s1600/work-for-pie.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
L'intero sito di basa sul lavoro di un particolare algoritmo creato ad hoc che analizza l'attività dell'utente sui più noti siti che offrono servizi per gli sviluppatori, importa i dati ed assegna un punteggio con cui costruisce una "torta" che indica il tasso di influenza che ogni utente ha nella rete.&lt;br /&gt;
&lt;br /&gt;
Allo stato attuale, i punteggi vengono calcolati in base ai progetti ospitati ed i commit eseguiti su Github e Bitbucket, le nostre risposte ed i voti ricevuti su Stack Overflow, le notizie pubblicate su Hacker News e tutte le informazioni lavorative inserite su Linkedin. Il tutto viene completato dalla nostra immagine prelevata direttamente da Gravatar.&lt;br /&gt;
&lt;br /&gt;
Anche se immaturo e nettamente privo di moltissime piattaforme di collaborazione (basti pensare a Launchpad, Google Code, Gitorius) il sito è davvero simpatico e lancia nell'immensità della rete un'idea davvero innovativa e probabilmente anche vincente. Ovviamente è ancora presto per pensare alle API, alla forte interazione tra gli utenti (che esiste ma è blanda e inutile) e la gestione di molte informazioni ma sicuramente il sito è interessante da seguire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-3578067033506324007?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Pn0slPvDJZyxN28yro9R-yN1OQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Pn0slPvDJZyxN28yro9R-yN1OQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7Pn0slPvDJZyxN28yro9R-yN1OQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Pn0slPvDJZyxN28yro9R-yN1OQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/9cKoNqCQlyc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/9cKoNqCQlyc/workforpie-social-network-sviluppo-e.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Mpi_Llc35GA/TwIHP2LB1bI/AAAAAAAABM8/Ka7doCWni_c/s72-c/work-for-pie.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/12/workforpie-social-network-sviluppo-e.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-3123124446317980301</guid><pubDate>Fri, 23 Dec 2011 16:42:00 +0000</pubDate><atom:updated>2011-12-23T17:46:04.986+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">OpenERP</category><category domain="http://www.blogger.com/atom/ns#">Modulo Softwar Developer</category><title>OpenERP: Modulo software Developer</title><description>L'idea alla base di questo modulo nasce dall'esigenza di gestire il lavoro di sviluppatori software dovendo anche aver modo di integrare le varie operazioni con la fatturazione finale per i clienti.&lt;br /&gt;
Essendo sviluppatori di moduli &lt;b&gt;OpenERP&lt;/b&gt; non potevamo non utilizzare questo sistema per agevolare il nostro lavoro. Nasce così il modulo &lt;b&gt;Software Developer &lt;/b&gt;che permette di gestire con semplicità il lavoro degli sviluppatori di soluzioni software. Esso permette non solo di gestire le richieste degli utenti ma anche di di collegare un progetto ad un ordine di vendita e di sincronizzare il lavoro con i VCS più diffusi (attualmente è supportata solo l'importazione dei commits da branch Bazaar)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Installazione e Configurazione&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una volta scaricato il modulo da &lt;a href="https://code.launchpad.net/%7Escigghiateam/openerp/softwaredeveloper" target="_blank"&gt;launchpad&lt;/a&gt; nella cartella degli addons, esso può essere installato come un qualsiasi altro modulo mediante il menu in amministrazione.&lt;br /&gt;
&lt;br /&gt;
Al termine dell'installazione del modulo, verrà creata una nuova voce nel menu principale&lt;b&gt; "Software Developer"&lt;/b&gt;. In essa saranno presententi due voci: &lt;b&gt;"Progetti"&lt;/b&gt; e &lt;b&gt;"Configurazioni"&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GjeCg3tOyPg/TvSrgpN84qI/AAAAAAAABLQ/-r11Ovp2B4Q/s1600/menu-software-developer-openerp.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="88" src="http://3.bp.blogspot.com/-GjeCg3tOyPg/TvSrgpN84qI/AAAAAAAABLQ/-r11Ovp2B4Q/s200/menu-software-developer-openerp.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Menu principale&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0VcX5eXMg1Q/TvSrq4T85jI/AAAAAAAABLc/ZuIKGEXiJ3I/s1600/menu-software-developer-openerp-progetti.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-0VcX5eXMg1Q/TvSrq4T85jI/AAAAAAAABLc/ZuIKGEXiJ3I/s1600/menu-software-developer-openerp-progetti.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Menu dei progetti&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vVTHUXBvc5s/TvSsE-XUQlI/AAAAAAAABLo/K5PIriZd9NY/s1600/menu-software-developer-openerp-configurazione.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-vVTHUXBvc5s/TvSsE-XUQlI/AAAAAAAABLo/K5PIriZd9NY/s1600/menu-software-developer-openerp-configurazione.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Menu configurazione&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Recandoci in Configurazioni sarà possibile creare e modificare una lista di valori per i VCS utilizzati (bzr, git, svn) mediante la voce &lt;b&gt;Versione Control System&lt;/b&gt; ed una lista che contenga i tipi di richieste che è possibile ottenere da un cliente (nuove features, correzione bug, personalizzazione stampe) mediante la voce &lt;b&gt;"Tipologia di richieste"&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Nella gestione dei permessi, l'amministratore avrà la possibilità di utilizzare il gruppo &lt;i&gt;Software Developer/Software Developer&lt;/i&gt; per dare la possibilità ad un utente di accedere alle funzioni proposte dal modulo.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Uso Progetti&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Recandoci nel menu &lt;b&gt;Progetti&lt;/b&gt; -&amp;gt; &lt;b&gt;Progetti&lt;/b&gt; sarà possibile creare un nuovo progetto. Ogni progetto si compone di:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nome&lt;/b&gt;: è un nome arbitrario da attribuire per riconoscere il progetto&lt;br /&gt;
&lt;b&gt;Cliente&lt;/b&gt;: partner per il quale si sviluppa il progetto&lt;br /&gt;
&lt;b&gt;Collega ad ordine di vendita&lt;/b&gt;: è possibile collegare un progetto ad un ordine di vendita (servirà per le features future)&lt;br /&gt;
&lt;b&gt;Richieste&lt;/b&gt;: La lista delle richieste giunte dal partner&lt;br /&gt;
&lt;b&gt;VCS Info&lt;/b&gt;: è possibile settare il tipo di VCS utilizzato (precedentemente configurato), l'url su cui risiede il repository del progetto e la lista dei commits&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: eventuali note&lt;br /&gt;
&lt;br /&gt;
Nella visualizzazione della tree dei progetti è possibile, inoltre, controllare la percentuale di avanzamento di ogni progetto. &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ud5kTLwI3cY/TvStHAHI8yI/AAAAAAAABL0/DXItKxrzOMs/s1600/Project+-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="86" src="http://4.bp.blogspot.com/-Ud5kTLwI3cY/TvStHAHI8yI/AAAAAAAABL0/DXItKxrzOMs/s320/Project+-+OpenERP.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Esempio lista progetti&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-cr3Nf2eI1uk/TvSuCP39HOI/AAAAAAAABMM/OsxdKpr773Q/s1600/VCS+progetto+-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="128" src="http://2.bp.blogspot.com/-cr3Nf2eI1uk/TvSuCP39HOI/AAAAAAAABMM/OsxdKpr773Q/s320/VCS+progetto+-+OpenERP.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Esempio Commits con VCS&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Uso Richieste&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Le richieste sono i vari lavori che un partner richiede per un dato progetto. Esse possono essere visualizzate o all'interno del progetto a cui fanno riferimento o dalla lista presente nel menu &lt;b&gt;Progetti&lt;/b&gt; -&amp;gt; &lt;b&gt;Richieste&lt;/b&gt;.&lt;br /&gt;
Per ogni richiesta è possibile configurare:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Descrizione&lt;/b&gt;: indica cosa è stato richiesto dal partner&lt;br /&gt;
&lt;b&gt;Data richiesta&lt;/b&gt;: la data in cui è stata effettuata la richiesta&lt;br /&gt;
&lt;b&gt;Tipo di richiesta&lt;/b&gt;: il tipo di richiesta (precedentemente configurata)&lt;br /&gt;
&lt;b&gt;Urgenza&lt;/b&gt;: 3 livelli di urgenza&lt;br /&gt;
&lt;b&gt;Ore lavorate sullo sviluppo&lt;/b&gt;: Alla chiusura della richiesta è possibile impostare quante ore si è lavorato al suo sviluppo.&lt;br /&gt;
&lt;b&gt;Conclusa&lt;/b&gt;: indica una richiesta conclusa&lt;br /&gt;
&lt;b&gt;Data Conclusione&lt;/b&gt;: indica la data in cui la richiesta è stata chiusa&lt;br /&gt;
&lt;b&gt;Chiudi Richiesta / Riapri Richiesta&lt;/b&gt;: permette di impostare lo stato di una richiesta indicando se essa è stata conclusa o si necessita una sua riapertura.&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt;: eventuali note&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-c9Fm7DNCRGU/TvStfISd1oI/AAAAAAAABMA/-VOGqFwF7tg/s1600/Nome+progetto+-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="208" src="http://4.bp.blogspot.com/-c9Fm7DNCRGU/TvStfISd1oI/AAAAAAAABMA/-VOGqFwF7tg/s320/Nome+progetto+-+OpenERP.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Lista richieste nel progetto&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UzExuMFkAbo/TvSuzRcBYqI/AAAAAAAABMw/niiovKvAFWA/s1600/Richiesta-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="108" src="http://4.bp.blogspot.com/-UzExuMFkAbo/TvSuzRcBYqI/AAAAAAAABMw/niiovKvAFWA/s320/Richiesta-+OpenERP.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Creazione nuova richiesta&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp; &lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Accesso remoto - Partner&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Dopo l'installazione del modulo, all'interno dei partner è possibile trovare una nuova scheda: Dati accesso remoto. All'interno sarà possibile settare una lista di valori che indica i diversi accessi remoti messi a disposizione dal partner per i proprio progetti. In essi rientrano accessi ssh, ftp, interfacce web, email, ecc.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0TqufSiaj-I/TvSugoVHeEI/AAAAAAAABMk/3kt6E_hBqYY/s1600/Partner+-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="67" src="http://1.bp.blogspot.com/-0TqufSiaj-I/TvSugoVHeEI/AAAAAAAABMk/3kt6E_hBqYY/s320/Partner+-+OpenERP.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Valori impostabili&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Altre funzionalità&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una funzionalità importante del modulo è quella che offre la possibilità di allineare un repository su cui si sta lavorando con i commit presenti nel progetto. Spostandosi sul progetto, infatti, è possibile trovare nella colonna di destra la voce &lt;b&gt;"Allinea Commits"&lt;/b&gt;. Cliccando su di essa si aprirà un wizard che permetterà di scegliere il tipo di repository ed importare (totalmente o integrando quelli già esistenti con quelli mancanti) in maniera automatica i commits residenti su quel repo in modo da mantenere anche in OpenERP lo storico delle modifiche apportate al codice&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nmDf4YSrbvU/TvSuQzOSI1I/AAAAAAAABMY/_dR54uT9pLY/s1600/Allinea+commits+-+OpenERP.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-nmDf4YSrbvU/TvSuQzOSI1I/AAAAAAAABMY/_dR54uT9pLY/s320/Allinea+commits+-+OpenERP.png" width="83" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Richiamo Allinea Commits&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-3123124446317980301?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MoJu_deeMrvt-tk4jM5QjmuQwbk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MoJu_deeMrvt-tk4jM5QjmuQwbk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MoJu_deeMrvt-tk4jM5QjmuQwbk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MoJu_deeMrvt-tk4jM5QjmuQwbk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/vQ9mRON4zdM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/vQ9mRON4zdM/openerp-modulo-software-developer.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-GjeCg3tOyPg/TvSrgpN84qI/AAAAAAAABLQ/-r11Ovp2B4Q/s72-c/menu-software-developer-openerp.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/12/openerp-modulo-software-developer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-293526674443302288</guid><pubDate>Wed, 21 Dec 2011 14:56:00 +0000</pubDate><atom:updated>2011-12-21T15:59:34.898+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GNU/Linux</category><category domain="http://www.blogger.com/atom/ns#">Editor di testo</category><title>Scribes, l'editor di testo "forse" perfetto</title><description>Parlare di editor di testo in un ambiento infinito come quello di &lt;i&gt;GNU/Linux&lt;/i&gt;, fa venire immediatamente alla mente nomi blasonati del calibro di Gedit, Kate o Geany per non parlare degli immortali Vi, Vim, Nano, Pico o Emacs. Lo strapotere di questi prodotti ormai consolidati da anni di test e di sviluppo, mette in ombra qualsiasi altro progetto nasca con l'intenzione di spodestare questi re dalla loro poltrona.&lt;br /&gt;
&lt;br /&gt;
È difficile, infatti, trovare un prodotto che possa competere con essi e che sia così interessante da farci mettere da parte le nostre abitudini con questi software per poter testare qualcosa di nuovo.&lt;br /&gt;
&lt;br /&gt;
La situazione forse potrebbe cambiare ed ad apportare questo cambiamento potrebbe essere un semplicissimo software dal cofano carico dei migliore dei motori. Stiamo parlando di &lt;b&gt;Scribes&lt;/b&gt; ed il nome ai più risulterà sicuramente sconosciuto.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://scribes.sourceforge.net/" target="_blank"&gt;&lt;b&gt;Scribes&lt;/b&gt;&lt;/a&gt; è un &lt;i&gt;editor di testo&lt;/i&gt; che ricalca sommariamente l'idea di prodotti simili come ad esempio vim. Esso propone un ambiente di scrittura molto semplice che evita all'utente distrazione di ogni tipo. Un'aria di digitazione completamente vuota che però può essere estesa ad una vista ad icone più completa cliccando con il mouse nella cosiddetta area di trigger (o Trigger Area) è tutto ciò che si presenta agli occhi dell'utente che lancia il programma. Nonostante la sua area minimalista, il software supporta nativamente tantissime &lt;a href="http://scribes.sourceforge.net/features.html" target="_blank"&gt;features&lt;/a&gt;. È ricco di scorciatoie da tastiera e ciò potrebbe strizzare un occhio a chi sviluppa software ed è abituato ad allontanare difficilmente le mani dalla tastiera. Supporta i temi grafici per i colori permettendo così di trovare la giusta combinazione cromatica per non gravare sulla salute della propria vista. Inoltre è stato sviluppato il supporto ai moduli che possono essere creati grazie al linguaggio python e che ne estendono le potenzialità in maniera pressoché infinita. Importantissimo è inoltre il supporto nativo a protocolli di comunicazione come &lt;i&gt;ftp, sftp, ssh, samba, webdav, webdavs&lt;/i&gt; che permette di editare del testo direttamente attraverso la rete. &lt;br /&gt;
Interessanti sono inoltre le funzionalità dedite a chi si occupa di programmazione. La creazione e l'uso degli snippets, l'auto-completamento delle parole e la colorazione della sintassi sulla base di oltre 20 linguaggi diversi, fa si che chi sviluppa possa trovarsi a proprio agio lavorando con questo software.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://scribes.sourceforge.net/simple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://scribes.sourceforge.net/simple.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://scribes.sourceforge.net/functions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://scribes.sourceforge.net/functions.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://scribes.sourceforge.net/smart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://scribes.sourceforge.net/smart.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Il progetto risulta veramente interessante e sicuramente esso troverà un'ampia comunità che saprà accoglierlo ed accompagnarlo in una crescita che si spera sia sempre positiva.&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Fonte&lt;/b&gt; [&lt;a href="http://programmazione.it/index.php?entity=eitem&amp;amp;idItem=48151" target="_blank"&gt;1&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-293526674443302288?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/myGthwPueGcxQO8Q6GkBxZnre5A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/myGthwPueGcxQO8Q6GkBxZnre5A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/myGthwPueGcxQO8Q6GkBxZnre5A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/myGthwPueGcxQO8Q6GkBxZnre5A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/yVvw_IRweMI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/yVvw_IRweMI/scrobes-leditor-di-testo-forse-perfetto.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/12/scrobes-leditor-di-testo-forse-perfetto.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-7542836858792795489</guid><pubDate>Wed, 23 Nov 2011 11:25:00 +0000</pubDate><atom:updated>2011-11-23T12:59:51.909+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Celyon</category><category domain="http://www.blogger.com/atom/ns#">Java</category><title>Celyon. Nuovo linguaggio di programmazione</title><description>&lt;div style="text-align: justify;"&gt;
Forte del suo periodo d'oro, &lt;b&gt;java&lt;/b&gt; è ancora uno dei linguaggi più diffusi per via della sua portabilità e per la larga presenza di vecchi software aziendali scritti con questo linguaggio e difficili da cambiare poichè ormai parte integrante dei sistemi di produzione. Tuttavia, chi ha avuto modo di provare questo linguaggio sa che non è certo una piuma in termini di risorse e la sua alta portabilità di paga a caro prezzo in termini di prestazioni. Proprio questo limite di tale linguaggio ha portato alla nascita di diversi progetti paralleli che contano sulla semplicità della struttura della sintassi di java ma che sono più performanti in fase di uso/produzione. Ultimo, ma non ultimo, in ordine di tempo è il codice partorito dagli uffici di &lt;b&gt;Red Hat&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://ceylon-lang.org/images/sectionbanner_home.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="96" src="http://ceylon-lang.org/images/sectionbanner_home.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Con il nome di &lt;b&gt;Celyon&lt;/b&gt;, il nuovo prodotto dell'azienda dal cappello rosso conta di essere una valida alternativa al più blasonato java ma non mira a rimpiazzarlo al 100%. Celyon per funzionare, infatti, necessita di una macchina virtuale JVM. &lt;a href="http://ceylon-lang.org/" target="_blank"&gt;Celyon&lt;/a&gt; si presenta come un linguaggio ad alto livello, orientato agli oggetti ed imperativo. La sintassi è molto vicina al c# ed influenzata dallo stesso java.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Questo è l'esempio del tipico hello world:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;# ----- Celyon -----&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;code class="Brush keyword"&gt;void&lt;/code&gt; &lt;code class="Brush plain"&gt;hello() {&lt;/code&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="line alt2" style="text-align: justify;"&gt;
&lt;table style="margin-left: 0px; margin-right: 0px; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class="content"&gt;&lt;i&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="Brush plain"&gt;print(&lt;/code&gt;&lt;code class="Brush string"&gt;"Hello, World!"&lt;/code&gt;&lt;code class="Brush plain"&gt;);&lt;/code&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;code class="Brush plain"&gt;}&lt;/code&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;# --------------------&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Il progetto è completamente open source ed i suoi sorgenti possono essere visualizzati e scaricati dal &lt;a href="https://github.com/ceylon" target="_blank"&gt;repo ufficiale su github&lt;/a&gt;. Questo nuovo progetto può sicuramente contare sul nome di una grande azienda ma basterà ciò per scardinare la diffusione di java?&lt;br /&gt;
&lt;br /&gt;
Fonte : [&lt;a href="http://www.ossblog.it/post/8855/ceylon-un-nuovo-linguaggio-alternativo-a-java-sviluppato-da-red-hat?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Ossblog%2Fit+%28ossblog%29&amp;amp;utm_content=Google+Reader" target="_blank"&gt;1&lt;/a&gt;] - [&lt;a href="http://www.h-online.com/open/news/item/Ceylon-Red-Hat-s-Java-alternative-gets-own-home-1382758.html" target="_blank"&gt;2&lt;/a&gt;]&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-7542836858792795489?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZBgrZEhiVXeQXhJaVNRoSmNuoTg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZBgrZEhiVXeQXhJaVNRoSmNuoTg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZBgrZEhiVXeQXhJaVNRoSmNuoTg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZBgrZEhiVXeQXhJaVNRoSmNuoTg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/Hjx4hjOEfs0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/Hjx4hjOEfs0/celyon-nuovo-linguaggio-di.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/11/celyon-nuovo-linguaggio-di.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-5472966587978093918</guid><pubDate>Wed, 16 Nov 2011 11:51:00 +0000</pubDate><atom:updated>2011-11-16T19:39:59.254+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mint</category><category domain="http://www.blogger.com/atom/ns#">Free Mind</category><category domain="http://www.blogger.com/atom/ns#">GNU/Linux</category><category domain="http://www.blogger.com/atom/ns#">Ubuntu</category><title>E così scegliemmo Mint</title><description>&lt;div style="text-align: justify;"&gt;
&amp;nbsp; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Da quando ho iniziato il mio nuovo lavoro, ho potuto percepire quanto fosse forte la convinzione che GNU/Linux potesse diventare uno strumento a larga diffusione adatto a tutto e a tutti. Avendo modo di svolgere mansioni nel campo dell'informatica ho la possibilità di &lt;i&gt;"influenzare"&lt;/i&gt;, abbastanza agilmente, la gente verso una determinata scelta che possa conciliarsi con i loro bisogni.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Già da un po' di anni, l'azienda presso cui lavoro ha iniziato una lunga battaglia contro Microsoft svolta a suon di installazioni legali di sistemi &lt;b&gt;GNU/linux&lt;/b&gt; a discapito di quelle illegali del prodotto di Gates, conversione degli utenti al software libero e manutenzione/gestione di &lt;i&gt;ERP open source&lt;/i&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Fino ad ora la nostra migliore arma era stata &lt;b&gt;Ubuntu&lt;/b&gt; che grazie a determinate scelte di Canonical e forte dell'uso di strumenti alla portata di tutti, ci permetteva di avvicinare l'utenza con un'alfabetizzazione informatica abbastanza bassa al fantastico mondo del pinguino.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Oggi però si cambia strada.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Con l'avvento del nuovo desktop environment proposto dalla distribuzione sud africana e con i cicli di rilascio troppo frequenti per un utente poco pratico, abbiamo deciso di fare una scelta: abbandonare Ubuntu per passare a &lt;a href="http://www.linuxmint.com/" target="_blank"&gt;&lt;b&gt;Mint&lt;/b&gt;&lt;/a&gt;. La scelta è stata studiata nei minimi particolari affinché si potesse selezionare lo strumento migliore utile ai nostri scopi.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.linuxmint.com/pictures/screenshots/katya/menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://www.linuxmint.com/pictures/screenshots/katya/menu.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Questa nuova distribuzione, in questi giorni alla luce dei riflettori più che mai, riesce ad essere quello che Ubuntu fu appena nacque: una linux per tutti.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Grafica piacevole, strumenti pratici, menu completo ed ordinato ed una solida base &lt;i&gt;Debian&lt;/i&gt;, fanno di Mint il prodotto perfetto per l'utente proveniente da anni di assuefazione da Windows. Inoltre, le scelte che il team della distro sta facendo per il futuro sono sempre migliori e pare che la sua strada sarà lastricata di successi e soddisfazioni.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Speriamo di poter mantenere a lungo il nostro rapporto con Mint. Ai nostri clienti piace molto...e a voi?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-5472966587978093918?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hIjKgebvVURocmc0hg61sPYd43A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hIjKgebvVURocmc0hg61sPYd43A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hIjKgebvVURocmc0hg61sPYd43A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hIjKgebvVURocmc0hg61sPYd43A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/9o_uiYEyXPI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/9o_uiYEyXPI/e-cosi-scegliemmo-mint.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>2</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/11/e-cosi-scegliemmo-mint.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-3737829252250179422</guid><pubDate>Fri, 04 Nov 2011 08:59:00 +0000</pubDate><atom:updated>2011-11-04T10:05:20.807+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gambas</category><category domain="http://www.blogger.com/atom/ns#">GNU/Linux</category><category domain="http://www.blogger.com/atom/ns#">Ubuntu</category><title>MyUnity, personalizzare unity grazie a gambas!</title><description>&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Unity&lt;/b&gt; è sicuramente il progetto più controverso che il team di Canonical abbia partorito all'interno dei suoi uffici. Un'idea di desktop abbastanza differente dalla normale concezione a cui si era abituati, è stata un'arma a doppio taglio che ha portato non pochi malcontenti tra i più affezionati utenti della distribuzione dai richiami africani: &lt;i&gt;Ubuntu&lt;/i&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Sicuramente tra le pecche del progetto c'è la sua rigidità e la scarsa, se non inesistente, personalizzazione che stona con la libertà di modifiche a cui i sistemi &lt;i&gt;GNU/Linux&lt;/i&gt; ci hanno sempre abituato.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Fortunatamente il malcontento, di molti, si è trasformato in una bellissima idea, di alcuni, che può rincuorare quanti stavano già pensando all'alternativa al Desktop Environment proposto da &lt;i&gt;Canonical&lt;/i&gt; sulle sue nuove versioni della propria distro.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Il software in questione si chiama &lt;b&gt;MyUnity&lt;/b&gt; e permette con pochi click di modificare numerosi parametri che andranno poi a personalizzare la famosa barra verticale tanto amata/odiata.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-LXF6mOPjldE/TrJqrARfuRI/AAAAAAAAR08/dj-MMTV5bBY/s576/Selezione_052.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://4.bp.blogspot.com/-LXF6mOPjldE/TrJqrARfuRI/AAAAAAAAR08/dj-MMTV5bBY/s320/Selezione_052.jpeg" width="320" /&gt; &lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Il codice del software è stato scritto in &lt;b&gt;Gambas&lt;/b&gt; da &lt;a href="http://fabiocolinelli.wordpress.com/"&gt;Fabio "Pixel" Colinelli&lt;/a&gt;, una persona che gli utenti italiani del gambero blu conosceranno benissimo, con la partecipazione di Davide Pedrelli e Sergio Gridelli di &lt;a href="http://www.uielinux.org/" target="_blank" title="Uielinux"&gt;Uielinux&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Il programma non è per niente complesso e le voci tra cui poter scegliere sono abbastanza esplicative nel loro contenuto. Si possono personalizzaremolti dettagli, a partire dal font utilizzato sino ad arrivare alle icone da mostrare sul desktop.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Per chiunque voglia provare il programma o studiare i sorgenti può recarsi sulla pagina offerta da &lt;a href="http://www.uielinux.org/lab/index.php?option=com_phocadownload&amp;amp;view=category&amp;amp;id=10:applicazioni-gnulinux&amp;amp;Itemid=120"&gt;Uielinux&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-3737829252250179422?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MUXStkNKMH378CHQyV6m9MqLt08/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUXStkNKMH378CHQyV6m9MqLt08/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MUXStkNKMH378CHQyV6m9MqLt08/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUXStkNKMH378CHQyV6m9MqLt08/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/f0Fu7pCczRw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/f0Fu7pCczRw/myunity-personalizzare-unity-grazie.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-LXF6mOPjldE/TrJqrARfuRI/AAAAAAAAR08/dj-MMTV5bBY/s72-c/Selezione_052.jpeg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/11/myunity-personalizzare-unity-grazie.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-3850599459332663626</guid><pubDate>Wed, 07 Sep 2011 13:46:00 +0000</pubDate><atom:updated>2012-05-19T11:41:09.165+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">News</category><category domain="http://www.blogger.com/atom/ns#">Free Mind</category><title>2 candeline</title><description>&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-aX4vs_IEe4U/TGkbfGkdcdI/AAAAAAAAAsA/jVCFIFVQhCI/s1600/debiancompleanno.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://3.bp.blogspot.com/-aX4vs_IEe4U/TGkbfGkdcdI/AAAAAAAAAsA/jVCFIFVQhCI/s320/debiancompleanno.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;Era l'Agosto del 2009 quando decisi di aprire questo blog per pubblicare i lavori che eseguivi e renderli disponibili per didattica ed utilità. Da allora molto è cambiato ma mai lo spirito di condivisione con cui ho partorito questo giocattolino. Da due anni condivido codice, idee e trucchi con chi, come me, ha la passione per la programmazione negli ambienti Open Source.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;b&gt;40000&lt;/b&gt; visualizzazioni di pagina&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;b&gt;26000&lt;/b&gt; visitatori dall'Italia ed il resto da altre parti del mondo&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;b&gt;207&lt;/b&gt; posts&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;b&gt;200&lt;/b&gt; commenti&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;Diversi progetti attivi&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;Diverse collaborazioni&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;e tanto tempo speso ad imparare qualcosa.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;Questi sono solo alcuni dei numeri che caratterizzano questo blog. Non saranno grandi cifre ma son comunque significative per me.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-3850599459332663626?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EJ1L5ZJjUXwzD_wdSlWiZR5TjNY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EJ1L5ZJjUXwzD_wdSlWiZR5TjNY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EJ1L5ZJjUXwzD_wdSlWiZR5TjNY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EJ1L5ZJjUXwzD_wdSlWiZR5TjNY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/nBDBuPJvfRI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/nBDBuPJvfRI/2-candeline.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-aX4vs_IEe4U/TGkbfGkdcdI/AAAAAAAAAsA/jVCFIFVQhCI/s72-c/debiancompleanno.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/09/2-candeline.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-2885810425349350330</guid><pubDate>Thu, 25 Aug 2011 21:48:00 +0000</pubDate><atom:updated>2011-08-25T23:50:41.060+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GNU/Linux</category><title>20 anni fa</title><description>&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"&gt;&lt;span class="Apple-style-span" style="color: #4d4d4d; font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;I’m doing a (free) operating system (just a hobby, won’t be big and&amp;nbsp;professional like gnu) for 386(486) AT clones. This has been brewing&amp;nbsp;since april, and is starting to get ready. I’d like any feedback on&amp;nbsp;things people like/dislike in minix, as my OS resembles it somewhat&amp;nbsp;(same physical layout of the file-system (due to practical reasons)&amp;nbsp;among other things).&lt;br /&gt;
I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work.&lt;br /&gt;
This implies that I’ll get something practical within a few months, and&amp;nbsp;I’d like to know what features most people would want. Any suggestions&amp;nbsp;are welcome, but I won’t promise I’ll implement them&amp;nbsp;:-)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;PS. Yes – it’s free of any minix code, and it has a multi-threaded fs.&lt;br /&gt;
It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have&amp;nbsp;:-(.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-2885810425349350330?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8TZylj_Y90-Gf2xAYRe4qelMaL0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8TZylj_Y90-Gf2xAYRe4qelMaL0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8TZylj_Y90-Gf2xAYRe4qelMaL0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8TZylj_Y90-Gf2xAYRe4qelMaL0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/Mxdv9Gq9WVc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/Mxdv9Gq9WVc/20-anni-fa.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/08/20-anni-fa.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-51881792499790747</guid><pubDate>Wed, 03 Aug 2011 09:39:00 +0000</pubDate><atom:updated>2011-08-03T11:39:11.069+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Algoritmi</category><category domain="http://www.blogger.com/atom/ns#">Python</category><title>Portare avanti o indietro una data in python</title><description>&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Quando si opera nel campo dei software gestionali, si ha sempre la necessità di lavorare con le date e le loro mille sfaccettature. Gestire una data non è sempre cosa facile poiché essa può essere formattata in modi diversi e la necessità del momento può spingerci a doverla nuovamente riformattare secondo un canone decisamente diverso (se non opposto) rispetto all'originale.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;In questo articolo vedremo come, grazie all'ausilio delle librerie del linguaggio, è possibile, con poche righe di codice, "muovere" una data nel passato o nel futuro partendo da una a nostra disposizione.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Immaginiamo di dove gestire la scadenza di un servizio. All'utente verrà chiesto (nel modo che si richiede più opportuno) di fornire una data di avvio del servizio e la sua durata. Nel nostro caso l'utente dovrà specificare quest'ultimo parametro in giorni. Riversiamo i dati così ottenuti rispettivamente nelle variabili &lt;i&gt;data_avvio&lt;/i&gt; e &lt;i&gt;durata_giorni&lt;/i&gt; e calcoliamo la data di chiusura del servizio.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;---python----------------&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;from datetime import date, datetime, time, timedelta&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;def calcola_scadenza(data_attivazione, durata_giorni):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; str_data_attivazione = datetime.strptime(data_attivazione,'%Y-%m-%d')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data_fine = data_attivazione + timedelta(days=durata_giorni)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; res = datetime.strftime(data_fine,'%Y-%m-%d')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return res&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Innanzitutto partiamo con l'importazione del necessario dalla libreria &lt;b&gt;datetime&lt;/b&gt;. Questa libreria è molto versatile ed utilissima quando si vuole lavorare con questo particolare tipo di dati. Inoltre è ben documentata ed è semplice da usare nei propri progetti. Ora definiamo la nostra funzione che accetta come parametri la data di avvio e la durata in giorni del servizio. Successivamente, mediante l'ausilio della funzione &lt;b&gt; datetime.strptime&lt;/b&gt; si converte la stringa in un formato data che rispetta la formattazione definita come secondo parametro. Nel nostro caso la data avrà formato anno-mese-giorno. Qui arriva la parte interessante dell'algoritmo. Come si può vedere la data di fine servizio viene calcolata grazie all'uso di &lt;b&gt;timedelta&lt;/b&gt;. Come il nome della funzione lascia intendere, timedelta serve a creare una data con un offset calcolato in base ai parametri passati alla stessa. In questo caso abbiamo deciso di spostare la data attuale di n giorni nel fututo dicendo a timedelta di spostarsi in base ai giorni (days). Infine con &lt;b&gt;datetime.strftime&lt;/b&gt; compiamo l'operazione inversa rispetto a datetime.strptime, ovvero otteniamo una stringa partendo da una data e lasciamo la funzione ritornando il valore appena ottenuto.&lt;/span&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Nonostante l'esempio sia volutamente ridotto al minimo indispensabile, è possibile notare con facilità come gli strumenti mostrati siano potenti e versatili semplificando non di poco il lavoro dello sviluppatore. Timedelta, ad esempio, ci permette di tornare indietro passando i parametri in forma negativa. Questo può essere notevolmente utile quando si vuole sapere la data di qualche giorno o mese fa. Importante è anche l'uso di datetime. Grazie a strftime e strptime è possibile ottenere date formattate come meglio si crede. Ora non resta che sperimentare quanto imparato.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-51881792499790747?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w_rrcMhjgS0NY0z6fUUTo0XOEGE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w_rrcMhjgS0NY0z6fUUTo0XOEGE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w_rrcMhjgS0NY0z6fUUTo0XOEGE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w_rrcMhjgS0NY0z6fUUTo0XOEGE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/I-va2YwqnTU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/I-va2YwqnTU/portare-avanti-o-indietro-una-data-in.html</link><author>noreply@blogger.com (OpenCode)</author><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/08/portare-avanti-o-indietro-una-data-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-859261768161508439</guid><pubDate>Mon, 01 Aug 2011 09:45:00 +0000</pubDate><atom:updated>2011-08-02T09:51:02.860+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Django</category><category domain="http://www.blogger.com/atom/ns#">Python</category><title>Django: Creare fields readonly</title><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Il progetto &lt;b&gt;Django&lt;/b&gt; ha come scopo la creazione di un &lt;b&gt;framework&lt;/b&gt;, rivolto al web, mediante il quale è possibile creare in maniera facile e veloce siti o portali web dinamici usando la comoda sintassi del &lt;b&gt;Python&lt;/b&gt; e gli strumenti messi a disposizione dal progetto stesso.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Lo sviluppo di siti web in Django prevede l'adesione dello stesso agli standard della programmazione &lt;b&gt;MTV&lt;/b&gt; (Model-Template-View). Per maggiori informazioni vi invito ad effettuare delle ricerche nel web.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Grazie a Django è possibile creare dei form da inserire nelle proprie pagine web per poter eseguire comuni operazioni a cui si è già abituati: impostazione di filtri sui dati, invio di email, iscrizione ad un servizio, etc. I vari campi che costituiscono il form vengono chiamati &lt;b&gt;fields&lt;/b&gt;. Può essere necessario, a volte, dover visualizzare un field in modalità di sola lettura ad esempio per poter mostrare agli utenti un dato senza permetterne la modifica.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Immaginiamo di dover crear un form per l'invio delle email che mostri all'utente l'indirizzo di posta elettronica del webmaster a cui verrà inviata la segnalazione. Il seguente articolo mostrerà semplicemente il sistema di gestione dei widget. Ogni altra operazione verrà considerata come già nota all'utente che legge il seguente articolo.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Rechiamoci nel file views.py dell'applicazione del nostro progetto. Spostiamoci alla fine dello stesso ed inseriamo il seguente codice:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;class mail_form(forms.Form):&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    webmaster-mail = forms.CharField(widget = forms.TextInput(attrs={'readonly':'readonly'}))&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    user_mail = forms.EmailField()&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    user_name = forms.CharField()&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    mail_content = forms.CharField(&lt;/i&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Come si può vedere il campo &lt;i&gt;webmaster_mail&lt;/i&gt; è impostato, mediante la proprietà widget, in modalità di sola lettura.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Nell'immagine che segue è possibile vedere la differenza tra un CharField tradizione ed uno in sola lettura.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MY9DArpoW1k/TjZ1kGjr5zI/AAAAAAAAA_I/DaruY_k-Aas/s1600/djangoreadonly.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="http://4.bp.blogspot.com/-MY9DArpoW1k/TjZ1kGjr5zI/AAAAAAAAA_I/DaruY_k-Aas/s320/djangoreadonly.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Questo sistema ovviamente può essere utilizzato su ogni tipo di field così da permetterne la visualizzazione e non la modifica.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-859261768161508439?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a3fp46weSsHVFdsazLu38aaVmKk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a3fp46weSsHVFdsazLu38aaVmKk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a3fp46weSsHVFdsazLu38aaVmKk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a3fp46weSsHVFdsazLu38aaVmKk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/xPe_fN7cnxQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/xPe_fN7cnxQ/django-creare-fields-reedonly.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-MY9DArpoW1k/TjZ1kGjr5zI/AAAAAAAAA_I/DaruY_k-Aas/s72-c/djangoreadonly.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/08/django-creare-fields-reedonly.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2794566328585739125.post-4935413572746475736</guid><pubDate>Sun, 10 Jul 2011 10:11:00 +0000</pubDate><atom:updated>2011-07-10T12:11:45.998+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Diaspora</category><category domain="http://www.blogger.com/atom/ns#">Social Network</category><category domain="http://www.blogger.com/atom/ns#">Google Code</category><title>Google plus. Peccato che....</title><description>&lt;div style="text-align: justify;"&gt;Si sa che la bloggosfera,vecchio antenato del social web degli ultimi tempi, ama diffondere le novità con una tale velocità che difficilmente il blogger di turno si sofferma ad analizzare in maniera approfondita lo strumento che sta reclamando al mondo intero. In ordine cronologico, l'ultima novità nell'ecosistema della rete è la nascita del nuovo social network targato Google: &lt;b&gt;Google Plus&lt;/b&gt;. Tralasciando la poca fantasia che gli sviluppatori e le alte cariche del colosso hanno utilizzato per rinominare il progetto, la questione Google+ è molto più profonda di quanto si possa pensare. La corsa di big G al fine di spodestare Facebook dal trono di "sito dei siti" ha spinto questa azienda ha giocarsi in qualsiasi maniera le proprie carte. Inizialmente fu la volta del defunto &lt;b&gt;Wave&lt;/b&gt; che non ebbe il successo tanto desiderato, poi si è passati all'uccisione prematura di &lt;b&gt;Buzz&lt;/b&gt;, altro Epic Fail nella storia dell'azienda, ed ora pare che il successo tanto inseguito sia arrivato con il neonato social network.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gA3mPrF0btk/Thl6tnN1k3I/AAAAAAAAA-s/SXokr-bB2Og/s1600/invito-google-plus-sn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://3.bp.blogspot.com/-gA3mPrF0btk/Thl6tnN1k3I/AAAAAAAAA-s/SXokr-bB2Og/s320/invito-google-plus-sn.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ma come? Chi ha avuto modo di sperimentare Google Plus avrà notato che lo stesso permette di mantenere i contatti separati tra di loro in base ad una &lt;i&gt;catalogazione di campi di interesse&lt;/i&gt; definite &lt;i&gt;&lt;u&gt;"Sfere"&lt;/u&gt;&lt;/i&gt;. Chi fa parte di una Sfera non potrà sapere cosa si dice o cosa accade in un'altra, permettendo così di mantenere un netta separazione tra gli ambiti della propria vita, che siano essi lavorativi, hobbystici, famigliari o affettivi. Un'idea brillante se si pensa che la struttura gerarchica di Facebook butta ogni contatto nello steso calderone potendo così presentarsi la situazione che la nostra ragazza e la nostra amante commentino la stessa foto dicendo "Grazie per la fantastica serata di ieri!".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;L'idea però, per quanto geniale ed altamente innovativa, non deve essere erroneamente attribuita a Google poiché l'idea esisteva già e Google Plus può essere benissimo definito una copia spudorata di un altro progetto ben più interessante: &lt;b&gt;Diaspora&lt;/b&gt;!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-m0jZ7vrSZOw/Thl6y7t7E_I/AAAAAAAAA-w/Gmh94N2FasQ/s1600/Diaspora.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://1.bp.blogspot.com/-m0jZ7vrSZOw/Thl6y7t7E_I/AAAAAAAAA-w/Gmh94N2FasQ/s320/Diaspora.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Chi ha provato (e sta provando) Diaspora saprà che esso si pone l'obiettivo di creare un social network Open Source, decentralizzato e dedito al mantenimento della privacy degli utenti. Questo vorrà dire che quando il progetto arriverà a regime non si avranno i propri dati salvati in un unico luogo nella mani di una sola persona che potrà venderli ed usarli come merce di scambio ma saranno frastagliati nella rete nelle mani di nessuno. L'idea sulla quale si basa Diaspora è quella della separazione degli utenti in base a campi di interesse definiti &lt;i&gt;&lt;u&gt;"Aspetti"&lt;/u&gt;&lt;/i&gt;....un momento! Vi ricorda nulla? Esatto! Le Sfere di Google sono una trasposizione precisa degli Aspetti di Diaspora. Ne più, ne meno! Funzionano allo stesso modo ed hanno lo stesso scopo. Ma allora perché l'idea di Google è ritenuta geniale ed ha permesso al progetto di decollare in pochi giorni mentre Diaspora da più di anno &lt;i&gt;raccatta&lt;/i&gt; utenti per il web?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I grandi nomi di cui amiamo riempirci la bocca in concomitanza con la mancanza d'informazione, creano una schiera di utenti dediti ad ottenere solo qualcosa che è la moda del momento. Il web si sta impoverendo di contenuti e di idee a favore di immagini demenziali e di faccine che dovrebbero rappresentare il nostro umore. È davvero questo ciò che vogliamo?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2794566328585739125-4935413572746475736?l=soluzionisoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S-8E8kH10OnYHd38izEPRU71zYk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-8E8kH10OnYHd38izEPRU71zYk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S-8E8kH10OnYHd38izEPRU71zYk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-8E8kH10OnYHd38izEPRU71zYk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/soluzionisoftware/~4/Jf103t-XZbg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/soluzionisoftware/~3/Jf103t-XZbg/google-plus-peccato-che.html</link><author>noreply@blogger.com (OpenCode)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-gA3mPrF0btk/Thl6tnN1k3I/AAAAAAAAA-s/SXokr-bB2Og/s72-c/invito-google-plus-sn.png" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://soluzionisoftware.blogspot.com/2011/07/google-plus-peccato-che.html</feedburner:origLink></item></channel></rss>

