<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4115063394036890852</id><updated>2012-02-16T11:23:07.787+01:00</updated><category term='OOP'/><category term='Programmazione'/><category term='Fumetti'/><category term='Corso Linux'/><category term='Linux'/><title type='text'>Loki's notes</title><subtitle type='html'>Un programmatore nel corpo di un fumettaro.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-5315744635552086309</id><published>2010-03-03T17:02:00.000+01:00</published><updated>2010-03-03T17:02:58.615+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Programmazione Orientata agli Oggetti Lez. 2</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Nella prima lezione abbiamo parlato di classi, oggetti e di come utilizzarli per raggiungere un risultato finale: fare una torta.&lt;br /&gt;&lt;br /&gt;In questa lezione ci addentreremo nei dettagli.&lt;br /&gt;&lt;br /&gt;Nella prima lezione abbiamo definito un "robot da cucina" come una classe molto semplice con alcuni metodi accessibili:&lt;br /&gt;&lt;br /&gt;impostaVelocità(intero),&lt;br /&gt;impostaUova(intero),&lt;br /&gt;monta().&lt;br /&gt;&lt;br /&gt;In questa lezione esamineremo quei metodi nascosti che, pur non visibili, servono al funzionamento della classe.&lt;br /&gt;&lt;br /&gt;Il costruttore o inizializzatore.&lt;br /&gt;&lt;br /&gt;Il costruttore di una classe è il primo metodo che viene eseguito nel momento in cui si istanzia un oggetto. Questo metodo non è visibile e non è richiamabile dall'interno di altri metodi.&lt;br /&gt;&lt;br /&gt;Serve ad inizializzare l'oggetto, o meglio i suoi attributi.&lt;br /&gt;&lt;br /&gt;Nel nostro esempio il robot potrebbe inizializzarsi nel momento in cui viene attaccata la spina alla presa di corrente ed eseguire il seguente metodo:&lt;br /&gt;&lt;br /&gt;controllaTensione(): metodo nascosto non accessibile dall'esterno.&lt;br /&gt;&lt;br /&gt;Immaginando che attaccare la spina significhi istanziare un oggetto il primo metodo che verrebbe invocato in automatico sarebbe quello di controllare il voltaggio della sorgente elettrica.&lt;br /&gt;controllaTensione() è un metodo nascosto, privato, e può essere eseguito solo da altri membri della classe, come lui potrebbero essercene altri, per esempio "impostaPotenza(intero)" potrebbe essere usato da impostaVelocità(intero) per far si che le lame vadano più veloci.&lt;br /&gt;&lt;br /&gt;A fronte delle nuove informazioni possiamo riscrivere la nostra classe usando dei risolutori di visibilità:&lt;br /&gt;&lt;br /&gt;Classe RobotBase&lt;br /&gt;&lt;br /&gt;pubblici:&lt;br /&gt;&amp;nbsp;costruttore(),&lt;br /&gt;&amp;nbsp;impostaVelocità(intero),&lt;br /&gt;&amp;nbsp;impostaUova(intero),&lt;br /&gt;&amp;nbsp;monta(),&lt;br /&gt;privati:&lt;br /&gt;&amp;nbsp;controllaTensione(),&lt;br /&gt;&amp;nbsp;impostaPotenza().&lt;br /&gt;&amp;nbsp;intero velocità,&lt;br /&gt;&amp;nbsp;intero quantità,&lt;br /&gt;&amp;nbsp;intero potenza.&lt;br /&gt;&lt;br /&gt;A prima vista il costruttore dovrebbe andare tra i metodi privati, in realtà istanziare un oggetto significa eseguire il costruttore quindi se fosse messo tra i privati l'oggetto non potrebbe essere creato.&lt;br /&gt;&lt;br /&gt;Raffinata la conoscenza delle classi è tempo di imparare a programmare in maniera orientata agli oggetti.&lt;br /&gt;&lt;br /&gt;L'OOP è molto semplice se non si è mai programmato un computer e si inizia da zero, molto difficile se si proviene da esperienze di linguaggi procedurali. Personalmente reputo una assoluta idiozia la tendenza ad insegnare il C++ partendo dal C, sono linguaggi totalmente diversi che condividono solo la forma e le parole chiave, il "vantaggio" di poter programmare in maniera procedurale con il C++ è fonte inesauribile di errori e di brutte pezze sopra altri errori, tutti con un unico padre: l'errata ingegnerizzazione del software. Per programmare ad oggetti bisogna imparare a pensare ad oggetti, quindi organizzare il software in oggetti, chi proviene dai procedurali pensa solo al flusso di funzioni che portano al risultato immaginado un enorme contenitore "main.cpp" che richiama una serie di procedure "incluse". Pensare ad oggetti richiede molta più fatica perché il software va costruito in piccoli pezzi autonomi, classi, che genereranno oggetti che, come i lego, assemblati tra loro costituiranno il software finale. Riprendendo l'esempio della torta della prima lezione, chi proviene dal C e affini non pensa a creare un frustino, pensa solo alla funzione di montatura delle uova, non pensa al robot ma alla procedura che amalgama l'impasto, per lui è:&lt;br /&gt;&lt;br /&gt;uovaMontate = montaUova(uova);&lt;br /&gt;impasto = impasta(uovaMontate, zucchero, farina);&lt;br /&gt;torta = cuoci(burro, impasto);&lt;br /&gt;&lt;br /&gt;Tutto è più facile e veloce, non a caso dove serve velocità ed efficienza si usa il C al posto del C++, i driver delle periferche vengono scritti in C per esempio. La nota negativa è che si può riutilizzare poco o nulla, per fare la focaccia dobbiamo riscrivere tutto, mentre con gli oggetti ci basta derivare il RobotBase e aggiungere le variabili acqua e olio più un metodo per impastarli. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;L'OOP e il tool di sviluppo Qt.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Il tool di sviluppo &lt;a href="http://qt.nokia.com/downloads"&gt;Qt di Nokia&lt;/a&gt; è un ottimo strumento per programmare ad oggetti, un semplice "hello world!" in una finestra fa capire tutto ciò che abbiamo detto fino ad ora.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_vQarTty80l8/S46GHCBqVJI/AAAAAAAAACk/UkhlkIreBvw/s1600-h/finestra_hw2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_vQarTty80l8/S46GHCBqVJI/AAAAAAAAACk/UkhlkIreBvw/s320/finestra_hw2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;file: hw_mainwindow.h&lt;br /&gt;&lt;br /&gt;#ifndef HWMAINWINDOW_H&lt;br /&gt;&lt;br /&gt;#define HWMAINWINDOW_H&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;QtGui/QMainWindow&amp;gt;&lt;br /&gt;&lt;br /&gt;class QLabel;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*Definiamo la classe che mostrerà la finestra&lt;br /&gt;ci basta derivare la finestra principale Qt: QMainWindow&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;class HWMainWindow : public QMainWindow //si crea la classe derivata da QMainWindow&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;HWMainWindow(QWidget * parent = 0); //Il costruttore&lt;br /&gt;private:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QLabel *hw_label; //Lo mettiamo per mostrare la parte privata, potremmo ometterlo&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#endif //HWMAINWINDOW_H&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;file: hw_mainwindow.cpp&lt;br /&gt;&lt;br /&gt;#include "hw_mainwindow.h"&lt;br /&gt;#include &amp;lt;QtGui/QLabel&amp;gt;&lt;br /&gt;&lt;br /&gt;HWMainWindow HWMainWindow(QWidget *parent)&lt;br /&gt;&amp;nbsp;: QMainWindow(parent)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Creiamo l'oggetto etichetta dalla classe Qt:QLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hw_label = new QLabel(this);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Impostiamo il testo dell'etichetta&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hw_label-&amp;gt;setText("hello world");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//usiamo un metodo della QMainWindow per impostare l'etichetta come oggetto principale della finestra&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setCentralWidget(label);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;file: main.cpp&lt;br /&gt;&lt;br /&gt;#include "hw_mainwindow.h" &lt;br /&gt;#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;&lt;br /&gt;main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;// crea un oggetto QApplication con gli stessi valori immessi al lancio del programma.&lt;br /&gt;&amp;nbsp;&amp;nbsp;QApplication app(int argc, char *argv[]);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// crea un oggetto HWMainWindow, la finestra derivata che abbiamo fatto prima;&lt;br /&gt;&amp;nbsp;&amp;nbsp;HWMainWindow hw_MainWindow;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// esegue il metodo di QMainWindow per visulaizzare la finestra&lt;br /&gt;&amp;nbsp;&amp;nbsp;hw_MainWindow.show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Entra nel loop di ascolto degli eventi, in questo caso aspetta che si spinga il pulsante di chiusura&lt;br /&gt;&amp;nbsp;&amp;nbsp;return app.exec();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se esaminiamo bene tutto il codice noteremo che abbiamo usato pochi costrutti tipici del C++, abbiamo usato gli include, il main nella sua forma standard, abbiamo definito le classi e creato gli oggetti con "new".&lt;br /&gt;&lt;br /&gt;Tutto il resto sono solo metodi appartenenti alle classi.&lt;br /&gt;Tutto è elegante e leggibile, anche non conoscendo il C++ è grosso modo intuibile cosa fanno i vari pezzi.&lt;br /&gt;Il main.cpp dice solo:&lt;br /&gt;Crea l'applicazione,&lt;br /&gt;crea la finestra,&lt;br /&gt;mostra la finestra,&lt;br /&gt;aspetta che si chiuda la finestra.&lt;br /&gt;&lt;br /&gt;Se voglio mettere un pulsante sotto l'etichetta, mi basta toccare solo la mia classe derivata HWMainWindow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_vQarTty80l8/S46GE_IxprI/AAAAAAAAACc/DhAG8xOENmA/s1600-h/finestra_hw.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vQarTty80l8/S46GE_IxprI/AAAAAAAAACc/DhAG8xOENmA/s320/finestra_hw.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;file: hw_mainwindow.cpp&lt;br /&gt;&lt;br /&gt;#include "hw_mainwindow.h"&lt;br /&gt;#include &amp;lt;QtGui/QLabel&amp;gt;&lt;br /&gt;#include &amp;lt;QtGui/QPushButton&amp;gt;&lt;br /&gt;#include &amp;lt;QtGui/QVBoxLayout&amp;gt;&lt;br /&gt;&lt;br /&gt;HWMainWindow HWMainWindow(QWidget *parent)&lt;br /&gt;&amp;nbsp;: QMainWindow(parent)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Creiamo l'oggetto etichetta dalla classe Qt:QLabel&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hw_label = new QLabel(this);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Impostiamo il testo dell'etichetta&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hw_label-&amp;gt;setText("hello world");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Creiamo l'oggetto pulsante&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QPushButton *button = new QPushButton(this);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Impostiamo il testo del pulsante&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;button-&amp;gt;setText("pulsante inutile");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Creiamo un widget contenitore completamente invisibile all'utente&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QWidget *mainWidget = new QWidget(this);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Nel momento in cui usiamo più elementi grafici dobbiamo distribuirli nella finestra&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//Questa classe li distribuisce in verticale tutti all'interno del widget contenitore mainWidget&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QVBoxLayout *vlayout = new QVBoxLayout(mainWidget);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Mettiamo prima l'etichetta&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vlayout-&amp;gt;addWidget(label);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //poi il pulsante&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vlayout-&amp;gt;addWidget(button);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//usiamo un metodo della QMainWindow per impostare il widget contenitore come&lt;br /&gt;&amp;nbsp;&amp;nbsp; //oggetto principale della finestra&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setCentralWidget(mainWidget);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;La finestra è sempre la stessa ma ora contiene oggetti in più.&lt;br /&gt;Non abbiamo toccato nulla se non la classe derivata.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Daniele Granata&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/it/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/2.5/it/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Questa &lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="type"&gt;opera&lt;/span&gt; è pubblicata sotto una &lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/it/" rel="license"&gt;Licenza Creative Commons&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-5315744635552086309?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/5315744635552086309/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2010/03/programmazione-orientata-agli-oggetti.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/5315744635552086309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/5315744635552086309'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2010/03/programmazione-orientata-agli-oggetti.html' title='Programmazione Orientata agli Oggetti Lez. 2'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vQarTty80l8/S46GHCBqVJI/AAAAAAAAACk/UkhlkIreBvw/s72-c/finestra_hw2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-230714799092018460</id><published>2010-01-09T16:32:00.009+01:00</published><updated>2010-03-03T16:49:43.792+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Programmazione Orientata agli Oggetti Lez. 1</title><content type='html'>Corso poco professionale su come affrontare l'ostico mondo dell'&lt;b&gt;OOP&lt;/b&gt; (Object Oriented Programming).&lt;br /&gt;&lt;br /&gt;Il nome OOP lascia poco alla fantasia: "Programmazione Orientata agli Oggetti", quindi è abbastanza scontato che tutto ruoti attorno agli "&lt;b&gt;Oggetti&lt;/b&gt;".&lt;br /&gt;Cosa è un "Oggetto"?&lt;br /&gt;&lt;br /&gt;Un Oggetto è una istanza di una &lt;b&gt;"Classe"&lt;/b&gt;, una Classe è la definizione di un insieme di variabili e funzioni che in OOP prendono il nome di "&lt;b&gt;attributi&lt;/b&gt;" e "&lt;b&gt;metodi&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_vQarTty80l8/S0eEQW_1vlI/AAAAAAAAACU/hq8u03FytrM/s1600-h/robotcucina.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vQarTty80l8/S0eEQW_1vlI/AAAAAAAAACU/hq8u03FytrM/s200/robotcucina.jpeg" /&gt;&lt;/a&gt;Dato che il corso è poco professionale prenderò ad esempio uno di quei robot da cucina che tagliano, sminuzzano, impastano ecc.&lt;br /&gt;Un robot da cucina è un Oggetto. Un manuale che spieghi come costruirlo e usarlo sarebbe la sua Classe.&lt;br /&gt;Il robot ha la funzione "triturare" (il metodo) da usare con una data "velocità " (l'attributo).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nell'OOP ci si avvale di tre proprietà principali:&lt;br /&gt;&lt;b&gt;Incapsulamento&lt;/b&gt;,&lt;br /&gt;&lt;b&gt;Ereditarietà&lt;/b&gt;,&lt;br /&gt;&lt;b&gt;Polimorfismo&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Incapsulamento&lt;/b&gt;&lt;br /&gt;L'incapsulamento è la proprietà per cui un Oggetto contiene al suo interno, incapsula, sia gli attributi che i metodi. Alcuni di questi metodi sono accessibili dall'esterno, altri sono utilizzati solo dall'oggetto stesso e quindi invisibili, inoltre un oggetto ben progettato non rende accessibile i suoi attributi in maniera diretta ma solo attraverso dei metodi appositi.&lt;br /&gt;Il nostro robot ha tanti metodi invisibili, noi non sappiamo cosa faccia girare la lama, come funzioni il blocco sicurezza ecc. sappiamo solo "triturare" perché è il metodo reso disponibile all'esterno. L'attributo "velocità" non è accessibile direttamente ma solo tramite la manopola apposita, quindi un altro metodo visibile che ci permette di modificare l'attributo "velocità". Altri attributi saranno nascosti come la "tensione elettrica", la "frizione", ecc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ereditarietà.&lt;/b&gt;&lt;br /&gt;L'ereditarietà permette alle Classi di poter essere "&lt;b&gt;derivate&lt;/b&gt;", cioè trasformate affinché vengano aggiunti nuovi metodi e/o attributi. I metodi aggiunti possono essere totalmente nuovi o sostituirne di esistenti (polimorfismo).&lt;br /&gt;Il produttore del nostro robot potrebbe produrne uno identico al nostro ma con una lama aggiuntiva per "affettare", quindi avrebbe un nuovo metodo "affettare". La Classe del nostro robot è detta &lt;b&gt;Classe Base&lt;/b&gt;, la nuova si chiama &lt;b&gt;Classe Derivata.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Polimorfismo.&lt;/b&gt;&lt;br /&gt;Con il polimorfismo una Classe Derivata può sostituire uno o più metodi della Classe Base con equivalenti con diversa implementazione.&lt;br /&gt;Il nuovo robot derivato oltre ad affettare potrebbe avere una lama per "triturare" più affilata che trita più finemente, si avrebbe quindi lo stresso metodo "triturare" ma con un risultato diverso.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Uso di classi e oggetti.&lt;/b&gt;&lt;br /&gt;Ora che abbiamo una bella infarinatura di Classi e Oggetti possiamo entrare nel dettaglio del loro uso.&lt;br /&gt;Immaginiamo di dover preparare una torta!&lt;br /&gt;&lt;br /&gt;Per fare la torta useremo alcune classi, le deriveremo e le metteremo in relazione tra loro.&lt;br /&gt;Esaminiamo la ricetta:&lt;br /&gt;&lt;br /&gt;Ingredienti:&lt;br /&gt;4 uova&lt;br /&gt;400gr farina&lt;br /&gt;300gr zucchero&lt;br /&gt;50gr burro&lt;br /&gt;&lt;br /&gt;Preparazione:&lt;br /&gt;Montare a neve 4 albumi di uovo.&lt;br /&gt;Impastare gli albumi a neve con la farina e lo zucchero.&lt;br /&gt;Imburrare una teglia.&lt;br /&gt;Versare l'impasto nella teglia.&lt;br /&gt;Infornare e cuocere per 45 minuti a 150gradi.&lt;br /&gt;&lt;br /&gt;Dalla ricetta si evince che avremo bisogno di un frustino elettrico per montare gli albumi.&lt;br /&gt;Un robot per impastare zucchero, farina e uova montate.&lt;br /&gt;Una teglia da imburrare in cui verseremo l'impasto.&lt;br /&gt;Un forno dove inserire la teglia e cuocere la torta.&lt;br /&gt;&lt;br /&gt;Nota: con "intero" intendiamo un numero intero.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Classe FrustinoBase&lt;/b&gt;: è un frustino utile per montare le uova.&lt;br /&gt;Ha come metodi accessibili:&lt;br /&gt;impostaVelocità(intero),&lt;br /&gt;impostaUova(intero),&lt;br /&gt;monta() restituisce le uova montate.&lt;br /&gt;Ha come attributi:&lt;br /&gt;intero velocità,&lt;br /&gt;intero quantità&lt;br /&gt;Gli attributi non sono accessibili se non con i metodi "impostaXXX".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Classe RobotBase&lt;/b&gt;:&lt;b&gt; &lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;è il nostro robot di partenza che sa solo triturare.&lt;br /&gt;Ha come metodi accessibili:&lt;br /&gt;impostaVelocità(intero),&lt;br /&gt;impostaQuantità(intero),&lt;br /&gt;tritura().&lt;br /&gt;Ha come attributi:&lt;br /&gt;intero velocità,&lt;br /&gt;intero quantità&lt;br /&gt;Gli attributi non sono accessibili se non con i metodi "impostaXXX".&lt;br /&gt;&lt;br /&gt;Dobbiamo impastare la farina con lo zucchero e le uova montate con il frustino. Per questa attività il robot non va bene e ha bisogno di essere potenziato, così lo deriviamo.&lt;br /&gt;&lt;br /&gt;Classe &lt;b&gt;RobotImpastatore&lt;/b&gt; derivato da RobotBase: è un robot da cucina che impasta.&lt;br /&gt;Aggiungiamo i metodi pubblici:&lt;br /&gt;impostaFarina(intero)&lt;br /&gt;impostaZucchero(intero)&lt;br /&gt;impostaUova(UovaMontate)&lt;br /&gt;impasta() restituisce un Impasto.&lt;br /&gt;Aggiungiamo nuovi attributi:&lt;br /&gt;intero farina;&lt;br /&gt;intero zucchero;&lt;br /&gt;UovaMontate uovaMontate;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Classe TegliaBase&lt;/b&gt;: è una teglia.&lt;br /&gt;Ha come metodi accessibili:&lt;br /&gt;impostaImpasto(Impasto),&lt;br /&gt;impostaBurro(intero),&lt;br /&gt;imburra().&lt;br /&gt;Ha come attributi:&lt;br /&gt;intero burro,&lt;br /&gt;Impasto impasto&lt;br /&gt;Gli attributi non sono accessibili se non con i metodi "impostaXXX".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Classe FornoBase&lt;/b&gt;: è un forno.&lt;br /&gt;Ha come metodi accessibili:&lt;br /&gt;impostaTemperatura(intero),&lt;br /&gt;impostaMinuti(intero),&lt;br /&gt;inforna(TegliaBase),&lt;br /&gt;cuociTorta() restituisce una torta.&lt;br /&gt;Ha come attributi:&lt;br /&gt;intero temperatura,&lt;br /&gt;intero minuti&lt;br /&gt;Gli attributi non sono accessibili se non con i metodi "impostaXXX".&lt;br /&gt;&lt;br /&gt;Useremo anche due classi contenitore:&lt;br /&gt;Classe UovaMontate e Classe Impasto sono classi che non è necessario approfondire perché ininfluenti, le dichiariamo solo per mantenere l'esempio concreto, UovaMontate conterrebbe le uova, Impasto conterrebbe UovaMontate, farina e zucchero.&lt;br /&gt;&lt;br /&gt;Ora che abbiamo dichiarato i nostri utensili andiamo ad usarli.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Preparazione della torta&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Iniziamo con il montare il bianco dell'uovo a neve:&lt;br /&gt;Creiamo l'&lt;b&gt;Oggetto&lt;/b&gt; FrustinoBase che monta solo le uova:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;FrustinoBase mioFrustino.&lt;/code&gt;&lt;br /&gt;Ora ho il mio oggetto frustino e posso usarlo per montare le uova.&lt;br /&gt;&lt;br /&gt;Poiché gli oggetti incapsulano metodi e attributi ci vorrà un sistema per identificarli come appartenenti all'oggetto specificato, useremo il nome dell'oggetto seguito da un punto ".".&lt;br /&gt;&lt;br /&gt;Metto quattro albumi nella ciotola del frustino:&lt;br /&gt;&lt;code&gt;mioFrustino.impostaUova(4);&lt;/code&gt;&lt;br /&gt;Imposto la velocità a 3:&lt;br /&gt;&lt;code&gt;mioFrustino.impostaVelocità(3);&lt;/code&gt;&lt;br /&gt;Monto le uova:&lt;br /&gt;&lt;code&gt;UovaMontate uovaMontate = mioFrustino.monta();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Abbiamo montato le uova.&lt;br /&gt;Ora impastiamo:&lt;br /&gt;Creiamo il robot impastatore:&lt;br /&gt;&lt;code&gt;RobotImpastatore mioImpastatore;&lt;/code&gt;&lt;br /&gt;Aggiungiamo gli ingredienti:&lt;br /&gt;&lt;code&gt;mioImpastatore.impostaFarina(400);&lt;br /&gt;mioImpastatore.impostaZucchero(300);&lt;br /&gt;mioImpastatore.impostaUova(uovaMontate);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ora selezioniamo la velocità e impastiamo:&lt;br /&gt;&lt;code&gt;mioImpastatore.impostaVelocità(2);&lt;br /&gt;Impasto impasto = mioImpastatore.impasta();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Prendiamo la teglia e imburriamola:&lt;br /&gt;&lt;code&gt;TegliaBase miaTeglia;&lt;br /&gt;miaTeglia.impostaBurro(50);&lt;br /&gt;miaTeglia.imburra();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Versiamo l'impasto nella teglia:&lt;br /&gt;&lt;code&gt;miaTeglia.impostaImpasto(impasto);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ora prepariamo il forno:&lt;br /&gt;&lt;code&gt;FornoBase mioForno;&lt;br /&gt;mioForno.inforna(miaTeglia);&lt;br /&gt;mioForno.impostaTemperatura(160);&lt;br /&gt;mioForno.impostaMinuti(45);&lt;/code&gt;&lt;br /&gt;Cuociamo:&lt;br /&gt;&lt;code&gt;Torta torta = mioForno.cuociTorta();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;La torta è pronta.&lt;br /&gt;Riepiloghiamo il flusso delle operazioni:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;FrustinoBase mioFrustino;&lt;br /&gt;mioFrustino.impostaUova(4);&lt;br /&gt;mioFrustino.impostaVelocità(3);&lt;br /&gt;UovaMontate uovaMontate = mioFrustino.monta();&lt;br /&gt;&lt;br /&gt;RobotImpastatore mioImpastatore;&lt;br /&gt;mioImpastatore.impostaFarina(400);&lt;br /&gt;mioImpastatore.impostaZucchero(300);&lt;br /&gt;mioImpastatore.impostaUova(uovaMontate);&lt;br /&gt;mioImpastatore.impostaVelocità(2);&lt;br /&gt;Impasto impasto = mioImpastatore.impasta();&lt;br /&gt;&lt;br /&gt;TegliaBase miaTeglia;&lt;br /&gt;miaTeglia.impostaBurro(50);&lt;br /&gt;miaTeglia.imburra();&lt;br /&gt;miaTeglia.impostaImpasto(impasto);&lt;br /&gt;&lt;br /&gt;FornoBase mioForno;&lt;br /&gt;mioForno.inforna(miaTeglia);&lt;br /&gt;mioForno.impostaTemperatura(160);&lt;br /&gt;mioForno.impostaMinuti(45);&lt;br /&gt;Torta torta = mioForno.cuociTorta();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Avrete notato che alcuni oggetti ne usano altri, tipo il forno che usa la teglia, questo perché una Classe crea un nuovo tipo di dato e gli oggetti di questa Classe saranno dei dati, ricordiamo che un oggetto incapsula metodi ed attributi, quindi dati.&lt;br /&gt;&lt;br /&gt;Per ora ci fermiamo, abbiamo imparato le basi e siamo già riusciti a fare una torta, incredibile.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/it/" rel="license" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/2.5/it/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;Questa &lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="type"&gt;opera&lt;/span&gt; è pubblicata sotto una &lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/it/" rel="license"&gt;Licenza Creative Commons&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-230714799092018460?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/230714799092018460/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2010/01/programmazione-orientata-agli-oggetti.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/230714799092018460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/230714799092018460'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2010/01/programmazione-orientata-agli-oggetti.html' title='Programmazione Orientata agli Oggetti Lez. 1'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vQarTty80l8/S0eEQW_1vlI/AAAAAAAAACU/hq8u03FytrM/s72-c/robotcucina.jpeg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-4460675565416677304</id><published>2009-11-02T12:33:00.001+01:00</published><updated>2009-11-02T12:34:12.310+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fumetti'/><title type='text'>Conflitti interiori</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_vQarTty80l8/Su7C5256_FI/AAAAAAAAABs/19GkijotsJw/s1600-h/200px-HighfidelityDVD.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vQarTty80l8/Su7C5256_FI/AAAAAAAAABs/19GkijotsJw/s320/200px-HighfidelityDVD.jpg" /&gt;&lt;/a&gt;Ci sono quelle volte in cui ti fermi e pensi: che ci succederà in futuro?&lt;br /&gt;Volgi lo sguardo al passato e ricordi tutti i sacrifici che hai fatto per arrivare dove sei ora, quello stesso presente in cui si trovano altri amici, conoscenti e sconosciuti che non hanno avuto la stessa tua fortuna. Gente che aveva messo tanta passione e voglia in ciò che amava tanto da riuscire a tramutarla in professione, ma non è bastato. I loro sacrifici sono stati vani. Nel migliore dei casi sono stati ingeriti e digeriti da realtà molto più forti e potenti di loro, nel peggiore sono a casa con i genitori.&lt;br /&gt;Parlo di coloro che amando e conoscendo la musica avevano investito sul negozietto pieno di speranze, di CD import, rarità, vinili da collezione, ecc. Piccole oasi che avevano la loro community di appasionati megalomani e un pò schizzati, posti di ritrovo, posti di scambi di vedute e culturali. Nel giro di pochi anni sono scomparsi divorati dalle leggi del mass-market, i più fortunati sono in un ipermercato a riordinare gli scaffali. Community orfana e senza casa.&lt;br /&gt;E che dire del mercato dei DVD? O dei videogames? Difficile trovare differenze.&lt;br /&gt;La risacca di queste riflessioni ti solleva dalla sabbia e ti porta in un mare ingrossato da una tempesta di contraddizioni. Il numero di fumetti venduti ti sembra sempre troppo poco, odii il pressapochismo di certi editori e il dilettantismo degli altri, vorresti una distribuzione seria, informatizzata e al passo con i tempi. Brami rispetto per la tua professione, sia dall'alto che dal basso; dall'editore al cliente, passando per il parente idiota al quale devi spiegare tre volte di cosa ti occupi. Ma un'onda di paura ti sommerge, il timore che un giorno si esca dalla nicchia perché i fumetti piaceranno a tutti, quei tutti che appiattiranno il tuo mondo livellandolo a tal punto da diventare indistinti e, finalmente, far spazio ad un altro scaffale da mettere nella GDO (Grande Distribuzione Organizzata).&lt;br /&gt;Al calare delle onde i problemi che comprimono la nicchia ti sembrano vantaggi e vorresti ancora voler vendere più fumetti, ma non troppi, perché anche nei sogni devi saperti dare una regolata.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-4460675565416677304?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/4460675565416677304/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2009/11/conflitti-interiori.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/4460675565416677304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/4460675565416677304'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2009/11/conflitti-interiori.html' title='Conflitti interiori'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vQarTty80l8/Su7C5256_FI/AAAAAAAAABs/19GkijotsJw/s72-c/200px-HighfidelityDVD.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-7183495432290531419</id><published>2009-10-31T17:57:00.012+01:00</published><updated>2009-11-14T01:22:16.524+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Corso Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Corso di Linux al femminile Lezione 1.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tux.crystalxp.net/en.id.13214-brunocb-statux-de-la-liberte-g2.html" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vQarTty80l8/Suwkgy6kdFI/AAAAAAAAAAU/X4eRsYLGlZI/s200/brunocb-statux-de-la-liberte-g2-13214.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.blogger.com/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;span id="goog_1256989482585"&gt;&lt;/span&gt;&lt;span id="goog_1256989482586"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Perché un corso di Linux al femminile?&lt;br /&gt;Perché le donne sono meno "ciucci e presuntuosi", più pragmatiche, sono mediamente più intelligenti degli uomini e non giocano ai videogiochi che richiedono schede grafiche da 500 euro.&lt;br /&gt;Se leggete il blog lo state facendo da un pc probabilmente un notebook o il fratellino piccolo netbook e state usando IExplorer quindi imposterò le lezioni in base alle vostre conoscenze di Windows.&lt;br /&gt;Prima di immergerci in Linux meglio fare una rapida panoramica di cosa è un computer,leggetelo potrebbe riservare sorprese.&lt;br /&gt;&lt;br /&gt;Da &lt;a href="http://it.wikipedia.org/wiki/Computer"&gt;Wikipedia&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;"Un computer, dal latino computare (calcolare) attraverso l'inglese, to compute (calcolare), anche detto calcolatore, elaboratore, oppure ordinatore, è un dispositivo fisico che implementa il funzionamento di una macchina di Turing."&lt;br /&gt;&lt;/blockquote&gt;Ma che cosa è una macchina di Turing? Lasciamo perdere che ci impelaghiamo, diciamo per semplicità che un computer è un dispositivo che acquisisce dati e propina risultati .&lt;br /&gt;&lt;br /&gt;Un computer è composto da alcuni componenti base:&lt;br /&gt;La CPU (Central Processing Unit) che è quella che calcola ed elabora, avrete sentito e letto parole come Intel, AMD, Centrino, core duo ecc.&lt;br /&gt;&lt;br /&gt;La RAM (Random Access Memory) che è la memoria veloce che usa la CPU per elaborare ma che si perde se si spegne il PC, avrete sentito e letto di 1 Giga di RAM, 2 , 4 Giga di RAM.&lt;br /&gt;&lt;br /&gt;I componenti per la gestione di dispositivi di I/O Input/Output.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vQarTty80l8/Suwoo5aSEvI/AAAAAAAAABM/dumm5yi9w68/s1600-h/input-keyboard.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vQarTty80l8/Suwoo5aSEvI/AAAAAAAAABM/dumm5yi9w68/s200/input-keyboard.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Dispositivi di inserimento di dati e comandi (input), sono tantissimi e aumentano sempre più, i più conosciuti sono tastiere, mouse, touchpad dei notebook, da un pò di tempo abbiamo anche touchscreen, webcam, telecomandi, joypad, tavolette grafiche, scanner, lettori barcode, ecc. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vQarTty80l8/Suwog7ZfAnI/AAAAAAAAAA8/KzoSyo_o85U/s1600-h/video-display.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vQarTty80l8/Suwog7ZfAnI/AAAAAAAAAA8/KzoSyo_o85U/s200/video-display.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Dispositivi di presentazione di dati e risultati (output), anche qui siamo in buona compagnia, quello di eccellenza è la scheda video che possiamo collegare al monitor o alla tv, i notebook hanno già il collegamento allo schermo incorporato. Altri dispositivi di output familiari sono le stampanti.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vQarTty80l8/SuwqciUwT_I/AAAAAAAAABk/COZehXtXeF4/s1600-h/preferences-system-bluetooth.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vQarTty80l8/SuwqciUwT_I/AAAAAAAAABk/COZehXtXeF4/s200/preferences-system-bluetooth.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Ci sono poi dei dispositivi che fanno da input/output (I/O): la scheda audio a cui applicare un microfono (input) e delle casse (output), il bluotooth che permette di collegare qualunque dispositivo di I/O compatibile senza filo. Un masterizzatore di CD/DVD è un dispositivo di I/O così come tutte le memorie permanenti. Le schede di rete sono dispositivi di I/O. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vQarTty80l8/Suwn87hjfaI/AAAAAAAAAA0/IB8ka-bV5Y0/s1600-h/drive-harddisk.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vQarTty80l8/Suwn87hjfaI/AAAAAAAAAA0/IB8ka-bV5Y0/s200/drive-harddisk.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;La memoria permanente è quella che non si perde se si spegne il computer, un tempo erano solo gli hard disk,i floppy o i cd/DVD, oggi ci sono anche le cosidette pennine USB, le schedine SD che troviamo nelle macchinette fotografiche digitali e nei cellulari e per ultime ci sono le memorie flash integrate nel dispositivo come la memoria che trovate nel telefonino, nei lettori Mp3, nelle nuove cornici digitali. In queste memorie voi conservate i vostri MP3 i video le foto ecc.&lt;br /&gt;&lt;br /&gt;Il computer funziona nel seguente modo:&lt;br /&gt;La CPU carica dalla memoria permanente il programma che voi gli avete detto di eseguire e lo mette nella memoria più veloce che è la RAM, quando non lo usate più la CPU svuota la RAM e aspetta che gli diciate di fare altro.&lt;br /&gt;Se spegnete il pc mentre state usando il programma tutti i dati si perdono perché erano nella RAM che non conserva nulla a computer spento.&lt;br /&gt;Questo è tutto ciò che costituisce un computer.&lt;br /&gt;I computer si dividono in single purpose, servono per eseguire un solo compito, e multi purpose cioè eseguono vari compiti. &lt;br /&gt;Per esempio prendete una &lt;a href="http://www.linuxfordevices.com/c/a/News/Linuxbased-photoframe-boasts-WiFi-video-support/"&gt;cornice digitale&lt;/a&gt;. Questa è un computer a tutti gli effetti:&lt;br /&gt;Ha una CPU che visualizza la foto, fa le sequenze, le transizioni da una foto all'altra ecc.&lt;br /&gt;Ha una memoria RAM che la CPU utilizza per elaborare quanto detto prima.&lt;br /&gt;Ha una memoria permanente che serve a conservare le foto e il programma per vederle.&lt;br /&gt;Non ha la tastiera, non ha il mouse non ha il monitor, essa stessa è un piccolo monitor con dei tastini per impostare le foto da vedere.&lt;br /&gt;Altro esempio:&lt;br /&gt;Un lettore di DVD/DiVX è un computer single purpose:&lt;br /&gt;Stessa cosa della cornice elettronica, solo che lo comandate con il telecomando;&lt;br /&gt;il monitor è la vostra TV;&lt;br /&gt;ha una memoria interna con il programma per vedere DVD, DIVX e le foto;&lt;br /&gt;ha un lettore di DVD.&lt;br /&gt;&lt;br /&gt;Chiarito cosa è un computer passiamo a Linux o meglio &lt;a href="http://www.gnu.org/gnu/linux-and-gnu.html"&gt;GNU/Linux&lt;/a&gt;, sia mai che &lt;a href="http://stallman.org/#serious"&gt;Stallman&lt;/a&gt; si incazzi, ma noi lo chiameremo Linux e basta.&lt;br /&gt;Che cosa è Linux?&lt;br /&gt;E' un sistema operativo, S.O., un programma che vi permette di poter interagire con il computer. Linux deriva da Unix che è considerato il papà, o il nonno? di tutti i sistemi operativi moderni tranne Windows.&lt;br /&gt;In principio un S.O. gestiva solo poche cosette, caricava delle schede perforate e dava dei risultati su dei nastri. Chi non ricorda il grande Kenzo Kabuto in Mazinga quando consultava il nastro tra le mani mentre erano in arrivo i robot alieni? Ops questa è una lezione per donne, probabile che nessuna di voi abbia visto Mazinga. Goldrake? Con quel &lt;b&gt;bono&lt;/b&gt; di Actarus? Anche lì si vedeva il professore con il nastro e le bobine che giravano alle sue spalle.&lt;br /&gt;Vabbè sorvoliamo sui cartoni, un S.O. deve gestire essenzialmente le parti del computer descritte in precedenza: la CPU, la memoria RAM, le memorie permanenti, i componenti per la gestione di dispositivi di I/O . Si richiede che gestisca anche la possibilità che il computer dialoghi con altri computer, le cosiddette schede di rete, molte di Voi avranno dei notebook che si connettono ad internet senza cavi il dispositivo che ve lo permette si chiama scheda di rete wifi. Questo è quanto deve fare un S.O. niente di più. Voi ora vi starete chiedendo: e tutto il resto? Tutto il resto non è compito di un sistema operativo. Un S.O. non gestisce lo scanner, ma solo la porta dove attacchi lo scanner, idem per la webcam, la stampante, il bluetooth ecc. questi dispositivi sono gestiti da altri programmi che usano il S.O. per dialogare con le porte alle quali sono attaccati.&lt;br /&gt;Quando usate Windows sembra che tutto faccia parte del S.O. ma in realtà non è così, esistono dei programmi intermedi detti driver che si interfacciano con il S.O. Chi produce un dispositivo crea il driver per farlo funzionare sotto Windows. Il driver non lo fa Microsoft ma spesso "invita" i produttori affinché il prodotto funzioni solo con Windows, il disastroso ciclo delle stampanti Canon che incorporavano il Windows Printing System è un esempio eclatante. &lt;br /&gt;La vera tragedia è che questi programmini funzionano solo su Windows e i produttori dei dispositivi si sono sempre interessati a fornire supporto solo per questo sistema. Il mondo è iniziato a cambiare con la diffusione dei computer Apple che pochi anni fa hanno adottato come base del loro sistema un altro figlio di UNIX: il BSD. Con la diffusione di computer Apple nelle case, uffici e università i produttori hardware si sono adeguati iniziando un timido supporto ad altro che non fosse Windows pena la non vendibilità dei prodotti ai possessori di Apple.&lt;br /&gt;Purtroppo paghiamo lo scotto di olte 15 anni di sviluppo bloccato perché microsoft usa metodi proprietari che non condivide, mentre i figli di unix condividono e si migliorano tra loro permettendo lo sviluppo di una base comune su cui un produttore può fare affidamento. A voi fregherà ben poco ma occorre capire che il limite maggiore che incontra Linux nella sua diffusione è il totale disinteresse dei produttori nel realizzare un programma che consenta la comunicazione del loro dispositivo con Linux, infatti questi programmi vengono creati dagli stessi programmatori di Linux e spesso senza neanche l'aiuto del produttore. Ci troviamo di fronte al classico cane che si morde la coda:il produttore non fa i driver perché Linux è poco diffuso e Linux non si diffonde perché non ha i driver. Grazie a Dio questo ormai sta cambiando e Linux gestisce una grossa parte di dispositivi, anzi è notizia recente che Intel ha sviluppato il driver per le prossime porte&lt;a href="http://punto-informatico.it/2643610/PI/News/linux-fa-amicizia-usb-30.aspx"&gt; USB 3.0 in anteprima per Linux&lt;/a&gt;.&amp;nbsp; Ormai è sempre più raro trovare un dispositivo non funzionante, ma ciò non toglie che è meglio informarsi prima di acquistare qualcosa che vorreste funzionasse con Linux, questo non significa chiedere al commesso del negozio che nel 99% dei casi è un totale incompetente ma va fatta una piccola ricerca su Google, 10 minuti e vi siete tolte il dubbio, se dura più di 10 minuti lasciate perdere e cambiate prodotto.&lt;br /&gt;&lt;br /&gt;Perché dovrei usare Linux?&lt;br /&gt;Perché Linux è libertà. Siamo in Italia e questa parola ha perso di significato, ma lasciate che vi spieghi.&lt;br /&gt;Linux è spesso sinonimo di "Open Source" che significa "Sorgente Aperto", in pratica i comandi che diamo alla CPU per elaborare le informazioni possono conoscerli tutti.&lt;br /&gt;Windows invece è un sistema chiuso e, come detto prima a proposito dei drivers, non si conoscono questi comandi. Nel caso di Linux tutto è migliorabile perché alla luce del sole, nel caso di Windows possiamo solo fidarci.&lt;br /&gt;Conoscendo i comandi posso crearne di miei che reputo migliori, gli altri vedono i miei comandi confermano che sono migliori e li adottano pure loro così il S.O. elimina il mediocre per far posto al migliore. Questa evoluzione è implacabile come la natura, se non funzioni sei fuori. Ma dove sta il bello della libertà? Semplice, se a me piace A uso A se mi piace B uso B. Con Windows se non ti piace ti attacchi al tram o aspetti che prima o poi ti piaccia per forza. Con Linux hai almeno 3 gestori di stampa e 5 o 6 interfacce grafiche tanto per fare degli esempi banali, gira su un sacco di CPU diverse tra loro il che spiega perché ve lo trovate dappertutto anche se non lo sapete.&lt;br /&gt;&lt;br /&gt;Linux è &lt;a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/The-Linux-Devices-Showcase/"&gt;ovunque&lt;/a&gt; ma nessuno lo sa.&lt;br /&gt;Voi tendete a scambiare un S.O. per la sua interfaccia grafica, "guarda quello è windows" perché ha le finestre blu e i tasti grigi e sotto ha la barretta per aprire i programmi. Se vedeste Linux non sapreste riconoscerlo, come detto prima ha tante interfacce, ma spesso non cell'ha affatto!&lt;br /&gt;Cosa pensate ci sia nel router wifi che vi fa andare su Internet senza i fili? Linux! Ma lo impostate tramite il browser (internet explorer nel Vostro caso).&lt;br /&gt;Nella cornice elettronica dove mettete le vostre foto? Linux! Ma ha una grafica particolare che troverete solo lì.&lt;br /&gt;Nel navigatore satellitare &lt;a href="http://www.tomtom.com/page.php?Page=gpl"&gt;tom tom go?&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.linuxfordevices.com/c/a/News/Garmin-Nav-devices-run-Gnome-Linux/"&gt;Garmin&lt;/a&gt;? &lt;br /&gt;Nei TV LCD &lt;a href="http://products.sel.sony.com/opensource/source_tv.shtml"&gt;Sony&lt;/a&gt;? &lt;a href="http://www.samsung.com/global/opensource/"&gt;Samsung&lt;/a&gt;? Philips?&lt;br /&gt;Nel lettore di filmati ad Alta Definizione (&lt;a href="http://www.wdc.com/it/products/Products.asp?DriveID=572"&gt;HDTV&lt;/a&gt;)?&lt;br /&gt;Negli attuali smartphone &lt;a href="http://www.nokia.it/telefoni_accessori/telefoni_cellulari/nokia-n900#/main/landing"&gt;Nokia&lt;/a&gt; e &lt;a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/Mobile-Phones/Motorola-DROID-US-EN"&gt;Motorola&lt;/a&gt;?&lt;br /&gt;E vi ho elencato solo una parte di prodotti "consumer" cioè quelli che potreste avere anche voi a casa, perché in ambiti professionali e di ricerca ci sono i server, i &lt;a href="http://www.top500.org/stats/list/33/os"&gt;supercomputer&lt;/a&gt;, gli apparecchi elettromedicali, i mission critical, ecc. Pensate davvero che una banca conservi i suoi dati su un server Windows? Che un paziente sia mantenuto in vita da un apparecchio con sopra una cosa Microsoft? Oddio alla stupidità umana non c'è mai stato limite, se così fosse cambierei ospedale!&lt;br /&gt;Ma allora se lo usiamo tutti i giorni su altri dispositivi, perché non farlo anche sul nostro Pc fisso o portatile che sia?&lt;br /&gt;&lt;br /&gt;Per oggi è tutto, nella prossima lezione si parlerà di multitasking e multiutenza, file, directory filesystem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-7183495432290531419?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/7183495432290531419/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2009/10/corso-di-linux-al-femminile-lezione-1.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/7183495432290531419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/7183495432290531419'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2009/10/corso-di-linux-al-femminile-lezione-1.html' title='Corso di Linux al femminile Lezione 1.'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vQarTty80l8/Suwkgy6kdFI/AAAAAAAAAAU/X4eRsYLGlZI/s72-c/brunocb-statux-de-la-liberte-g2-13214.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-2556513346006155098</id><published>2009-10-26T22:08:00.003+01:00</published><updated>2009-10-27T12:18:33.058+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fumetti'/><title type='text'>Lucca Comics specchio del mercato</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vQarTty80l8/SubV5Zul09I/AAAAAAAAAAM/-P-xAwLVoQY/s1600-h/manifesto.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_vQarTty80l8/SubV5Zul09I/AAAAAAAAAAM/-P-xAwLVoQY/s320/manifesto.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Avevo un blog e non me ne ricordavo!&lt;br /&gt;Sarà la moda del momento o un momento di "scazzo" che mi spinge a scrivere due righe su questo blog.&lt;br /&gt;Vorrei parlare di Lucca Comics &amp;amp; Games, non della edizione in programma a fine Ottobre 2009, ma della manifestazione in quanto tale. Chiunque abbia la passione dei fumetti conosce la fiera di Lucca, la più grande fiera del settore in Italia, l'anno scorso dicono abbia fatto oltre 100mila visitatori, un successo strepitoso che tutti invidiano e che molti cercano di raggiungere clonandola pari pari nel luogo prescelto, che sia Mantova, Napoli, Roma, Treviso o Tricase ha poca importanza, son tutte uguali tranne che nel numero di avventori che vanno dai 100mila di Lucca ai 100 di Tricase.&lt;br /&gt;Ma come si presenta Lucca Comics agli occhi di un operatore del settore? Nello stesso modo in cui si presenta l'intero mercato editoriale fumettistico italiano: dilettantesco.&lt;br /&gt;Lucca Comics e cloni sono solo dei grandi mercati per appassionati, tutti coloro che non hanno la fumetteria in città "devono" andarci per recuperare arretrati, chi ha la fumetteria sotto casa ci va per lo stesso motivo e per prendere in anteprima e con lo sconto tutto il resto.&lt;br /&gt;Io che i fumetti li vendo devo andare a Lucca? A meno di diletto personale, no.&lt;br /&gt;&lt;br /&gt;Professionalmente parlando Lucca Comics è pari a zero. Non esiste una giornata, ma  neanche una mattinata, riservata agli operatori del settore. Non esistono conferenze o tavole rotonde tra editori distributori e librai, non esistono presentazioni ufficiali di piani editoriali a lungo raggio (Panini si autoincensa e rivela il minimo indispensabile per far ingolosire&amp;nbsp; gli appassionati niente a che vedere con ciò che richiediamo noi librai), insomma per un professionista come me non è previsto nulla di interessante, anzi, come anticipato poc'anzi, sono previste una serie di pratiche dilettantistiche che altro non sono che lo specchio di un mercato in mano a pochi operatori privi di risorse, mezzi e sensibilità manageriale.&lt;br /&gt;Se paragonassimo questa kermesse a quella di altri mercati tipo i videogiochi , i computer o i libri, allora noteremmo la differenza, Nintendo presenterebbe il suo nuovo videogioco ma non lo venderebbe mai  al suo stand, Mondadori non va al Salone del libro di Torino a svendere l'ultimo best seller. All'E3, allo SMAU, al Salone del Libro di Torino esistono giornate "chiuse al pubblico" e ad ingresso gratuito per gli operatori del settore accreditati.&lt;br /&gt;Recarsi a Lucca con l'intento di migliorare il proprio lavoro attraverso il confronto con gli editori e i distributori è semplicemente utopistico, passi la giornata ad aspettare che il grande capo di turno abbia un minuto per te tra gli innumerevoli appuntamenti fissati con altri editori, distributori, autori, o che  non sia occupato allo stand a svendere arretrati o primizie.&lt;br /&gt;Lucca Comics è questo, è la fiera dove l'editore fatto in casa  presenta l'intera produzione dell'anno vendendone 200 copie e trova strano che il resto delle fumetterie d'Italia tutte insieme farà altrettanto nei 12 mesi restanti;  dove se hai un costume da Dylan Dog!? entri gratis in 10 minuti, mentre se amministri due fumetterie stai in fila 3 ore e paghi il biglietto; il posto incantato dove si comprano quelle cose che in fumetteria non si acquisterebbero mai e , &lt;i&gt;dulcis in fundo, &lt;/i&gt;l'unico posto dove puoi dire all'editore, senza rischio di smentite "ma questi la mia fumetteria non li ha", ovviamente senza averli mai cercati.&lt;br /&gt;Insomma Lucca Comics racchiude tutte le storture di questo mercato e ovviamente quella che più ci fa arrabbiare: agli occhi dell'editore  e spesso anche del distributore, la fumetteria e il suo cliente uguali sono, vanno trattati alla stessa stregua anzi, meglio portare più rispetto al cliente tanto male che vada c'è sempre l'edicola o, peggio, c'è la Feltrinelli a cui andare a prostrarsi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-2556513346006155098?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/2556513346006155098/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2009/10/lucca-comics-specchio-del-mercato.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/2556513346006155098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/2556513346006155098'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2009/10/lucca-comics-specchio-del-mercato.html' title='Lucca Comics specchio del mercato'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vQarTty80l8/SubV5Zul09I/AAAAAAAAAAM/-P-xAwLVoQY/s72-c/manifesto.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4115063394036890852.post-5134124367006093266</id><published>2007-12-20T20:36:00.001+01:00</published><updated>2010-01-11T18:04:14.921+01:00</updated><title type='text'>10 anni fa...</title><content type='html'>Perchè aprire un blog? Perchè proprio oggi?&lt;br /&gt;Perchè oggi si celebrano i 10 anni della mia attività di fumettivendolo.&lt;br /&gt;Vorrei poter evitare le solite menate del "sembra ieri" e allora dico solo "GRAZIE".&lt;br /&gt;Grazie a Corrado per essersi imbarcato in questa impresa senza uno straccio di assicurazione ma fidandosi solo del mio entusiasmo.&lt;br /&gt;Grazie ai genitori di Corrado che, pur non conoscendomi, si impegnarono finanziariamente all'inizio e durante il primo, durissimo biennio.&lt;br /&gt;Grazie a Peppino C. che da lassù si compiace ed è orgoglioso di ciò che suo figlio è riuscito a creare da una passione.&lt;br /&gt;Grazie ai miei genitori per aver garantito il prestito bancario di 20 milioni che sottoscrissi per inseguire il mio sogno e per l'aiuto materiale e morale mai mi hanno fatto mancare.&lt;br /&gt;Grazie ai Corrado's bros e ai Denni's bros, ci sono sempre stati quando avevamo bisogno.&lt;br /&gt;Grazie a Saverio il carbo-norvegese per averci tirato fuori dai guai e per la pazienza dimostrata in seguito.&lt;br /&gt;Grazie a tutti i nostri amici per il sostegno e l'incoraggiamento anche nei momenti più disperati.&lt;br /&gt;Grazie anche alla mia ex, il suo disprezzo per il mondo di cui faccio parte e la sua assoluta certezza del mio fallimento mi davano ancora più forza nel non mollare così da dimostrarle che aveva torto.&lt;br /&gt;Grazie a Pierpaolo per il suo impegno e la dedizione con cui porta avanti la nostra attività, senza di lui Neverland varrebbe la metà di ciò che è adesso.&lt;br /&gt;Grazie a tutti i nostri clienti, alcuni ormai amici da 10 anni, ci avete fatto diventare la migliore fumetteria in Puglia e forse la migliore del Sud-Italia.&lt;br /&gt;Un ringraziamento speciale va a mia moglie, che si prodigò nell'allestimento del nuovo punto vendita senza quasi conoscermi, già da allora credeva in me nel nostro futuro, e ora mi aiuta a creare un'azienda ancora migliore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4115063394036890852-5134124367006093266?l=lokisnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lokisnotes.blogspot.com/feeds/5134124367006093266/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://lokisnotes.blogspot.com/2007/12/10-anni-fa.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/5134124367006093266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4115063394036890852/posts/default/5134124367006093266'/><link rel='alternate' type='text/html' href='http://lokisnotes.blogspot.com/2007/12/10-anni-fa.html' title='10 anni fa...'/><author><name>Denni</name><uri>http://www.blogger.com/profile/15512849920725240520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
