Negli ultimi anni le distribuzioni Linux hanno raggiunto un livello di usabilità adeguato al “grande pubblico”, permettendo anche agli utenti non professionisti di poter utilizzare senza troppa fatica questo sistema operativo. Certo, ci sono ancora tante cose da migliorare, ma il numero di distruzioni disponibili oggi è tale per cui possiamo decidere la distro che riteniamo più adeguata alle nostre necessità.

Con questo articolo analizziamo quelle che sono le linee guida per trovare la propria distribuzione Linux, quella cioè che possa rispondere alle nostre necessità e che più si addice alle nostre caratteristiche. Sì, perchè non esiste La distrubuzione Linux perfetta….esiste quella perfetta per noi! ;)

(continua…)



Qualche giorno fa ho iniziato il nostro percorso di conoscenza “avanzata” di Zend Framework raccontando in questo articolo come il framework gestisce le transazioni sui nostri database.

Con questo articolo proseguiamo la conoscenza di Zend Framework trattando un altro interessante argomento di vitale importanza per lo sviluppo di un’applicazione web “moderna” che possa interagire con il mondo esterno utilizzando le principali tecniche e i più diffusi protocolli di comunicazione. L’argomento che vediamo è la gestione dei contesti (context) in Zend Framework.

(continua…)



Zend Framework è uno tra i principali framework (se non il principale) per lo sviluppo di applicazioni enterprise in PHP. E’ uno strumento molto potente al servizio degli sviluppatori PHP: è estremamente flessibile, estendibile, facile da usare e decisamente manutenibile. Questo è il primo di una serie di articoli che sto preparando per presentare quelle che sono le caratteristiche più interessanti di questo prodotto.

L’argomento che trattiamo in questo articolo è la gestione delle transazioni con Zend Framework. Una transazione è una sequenza di operazioni che deve rispettare le proprietà ACID ( Atomicity, Consistency, Isolation, e DurabilityAtomicità, Coerenza, Isolamento e Durabilità). Una transazione può terminare con successo o con un insuccesso: nel primo caso il risultato sarà permamente, mentre nel caso di insuccesso di deve tornare alla situazione precedente l’inizio della transazione, come se nulla fosse successo.

(continua…)



A cosa dobbiamo rinunciare per avere servizi sempre più tecnologicamente avanzati che ci semplificano (e in alcuni casi) allietano la quotidianità? Non è semplice rispondere a questa domanda, soprattutto perchè, per chi vive nel nostro tempo, la tecnologia è ormai necessario quanto l’ossigeno.

Qualche giorno fa ho letto un articolo in cui si racconta l’ultimo attacco portato a Google da alcune società di consumatori che vogliono vederci chiaro sulle attività e soprattutto sulla quantità, qualità  e tipologia di dati che vengono raccolti dal gigante di Mountain View. E se ci fermiamo un secondo a riflettere, in effetti è qualcosa che fa pensare…

Non è la prima volta che Google si trova a fronteggiare le associazioni di consumatori che l’accusano apertamente di abusi della privacy e di non rispettare le basilari regole nello sviluppo del software. Del resto Google non ha mai nascosto di aver catturato “per errore” tutta una serie di dati che sicuramente rientrano nella categoria di “abuso”.

In rete ci sono diversi articoli che trattano dell’argomento, ma il vero quesito che dobbiamo porci è se, per rispettare la nostra privacy, saremmo disposti a rinunciare a quelli che sono tra i principali servizi forniti da Google (e non solo chiaramente) e che ormai utilizziamo praticamente ogni giorno.

Saremmo pronti  a dire “addio” a Google Maps per  esempio?

E se pensiamo al mondo mobile la riflessione diventa ancora più complessa: il cellulare è uno strumento che possiamo considerare un pò come  un secondo portafoglio, uno strumento in cui sono contenute informazioni sensibili sui nostri contatti, i nostri messaggi, le nostre fotografie…insomma di tutto un pò. Con la connessione internet mobile 24 ore su 24 in sostanza questa raccolta indiscriminata di dati potrebbe essere inarrestabile.

Ma possiamo rinunciare ad utilizzare questi strumenti con queste caratteristiche e funzionalità che ci permettono di comunicare con il mondo ovunque ci troviamo?



Quando scriviamo il nostro codice è davvero comodo avere un assistente che ti suggerisce ad esempio i metodi che possiamo richiamare su un oggetto o le classi che abbiamo a disposizione per raggiungere il nostro obiettivo. Sono strumenti che quando inizi ad usare non puoi più farne a meno.

Il “Code Assistant” di Eclipse è uno strumento molto potente, che non solo suggerisce le librerie di default del linguaggio di programmazione con il quale stiamo lavorando (Java, PHP, ecc.) ma permette anche di personalizzare le librerie a disposizione, aggiungendone ad esempio di terze parti.

Questo non solo velocizza la scrittura del codice, ma permette anche di imparare molto più rapidamente il linguaggio o i framework che stiamo utilizzando nel nostro applicativo. Quando però lavoriamo in team su un progetto, è molto probabile che si utilizzino i plugin come quello di subversion per gestire il lavoro. Il problema è che quando lavoriamo in questo ambiente, di default, il progetto perde l’indicazione sulla sua stessa natura….in pratica Eclipse non sa più se stiamo lavorando in PHP o Java, sa solo che stiamo lavorando con subversion, perdendo in questo modo il prezioso aiuto che ci fornisce il Code Assistant. Ma per risolvere questo problema ci vogliono davvero 5 minuti…

Dobbiamo concentrare la nostra attenzione sui file “.buildpath” e “. project” del nostro progetto Eclipse: se li editiamo noteremo che non vi sono indicazioni circa la natura del progetto (cioè se siamo in ambiente Java, PHP o Javascript). Tutto ciò che dobbiamo fare è inserire nei rispettivi file le seguenti direttive in neretto:

.PROJECT

<?xml version=”1.0″ encoding=”UTF-8″?>
<projectDescription>
<name>prova</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.dltk.core.scriptbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
</natures>
</projectDescription>

.BUILDPATH

<?xml version=”1.0″ encoding=”UTF-8″?>
<buildpath>
<buildpathentry kind=”con” path=”org.eclipse.php.core.LANGUAGE”/>
<buildpathentry external=”true” kind=”lib” path=”/myLibrary”/>
<buildpathentry kind=”src” path=”"/>
</buildpath>

A questo punto, una volta riavviata l’IDE, il nostro progetto sarà etichettato in base alla sua natura, e dunque si riattiveranno tutte le funzionalità e tutti gli strumenti a disposizione per lo sviluppo con l’ambiente che abbiamo impostato (e il Code Assistant non fa eccezione! ;) )