tecnologie

Occuparsi principalmente di applicazioni web comporta confrontarsi con svariate tecnologie che vengono di solito adottate in base a progetti e preferenze preesistenti il mio lavoro o su mia indicazione.

Adotto di preferenza tecnologie legate all'Open Source/Free Software (FOSS nel seguito), ma ho operato - o opero tuttora - anche con tecnologie proprietarie. In ordine di importanza di utilizzo nei miei lavori, le tecnologie sono le seguenti.

Linux

Linux

è un sistema operativo nato all'inizio degli anni '90 su iniziativa di Linus Torvald.
Per dettagli vedi http://www.linux.it.

Per districarsi nel ginepraio FOSS si visitino i siti http://www.gnu.org e www.opensource.org.

Brevemente si può dire che la filosofia di software Open Source si differenzia da quella di Free Software per il fatto che, per rendere appetibile questo tipo di produzione software al mondo del business, alcune major che lo adottarono preferirono mettere l'accento sull'affidabilità piuttosto che sulla libertà. L'approccio Open è più pragmatico e meno politico del Free.

Nessuno dei due concetti è comunque legato al prezzo ma alla sola libertà di circolazione e di conoscenza del software.

Ovviamente il problema è tutto anglosassone, per il fatto che free significa sia gratis che libero:

"Think about free software as free thinking, not free beer".

(Richard Stallman)

I sistemi operativi che si basano sulla filosofia FOSS sono parecchi, generalmente però si pensa a Linux. Nelle varie distribuzioni in cui lo si può trovare (Fedora, RedHat, Debian, Ubuntu...) è un sistema operativo completo di tutti i servizi di networking (Samba per la condivisione di dischi verso sistemi Microsoft, Apache per il web, sendmail per la posta elettronica, bind per il DNS, IPTABLES per il firewall...). Il software in sé non costa nulla, non c'è bisogno di acquistare licenze dato che per tutte vale la GPL. Dal lato client Linux è pure un sistema operativo in grado di poter competere con Microsoft, anche se per il suo completo utilizzo c'è comunque bisogno di un po' di skill in più; tuttavia, distribuzioni come Ubuntu, mettono a disposizione un ambiente confortevole e facile da usare, in cui le periferiche sono riconosciute alla connessione, il software è installabile facilmente grazie ai gestori di pacchetti rpm (Red Hat o Fedora o SuSE) o dpkg (Debian o Ubuntu).

Vi sono poi parecchie comunità Open Source più o meno sponsorizzate da aziende produttrici di software (Sun Microsystems, Quest Software) che svilupano pacchetti applicativi utilizzabili in Linux (e in Microsoft Windows) al posto di popolari pacchetti di automazione di ufficio o amministrazioni di database (OpenOffice oppure Tora per fare due esempi)

Le tecnologie Open Source che uso sono queste.

PHP Sviluppo principalmente in PHP5 utilizzando framework CakePHP come MVC e Smarty per gestire le Views, ma il divertimento più grande è sviluppare strumenti di questo tipo ad hoc. PHP5 è un linguaggio a classi molto avanzato, ma il fatto che non sia tipizzato fa storcere il naso a molti sviluppatori che non lo considerano un "vero" linguaggio OO. Tuttavia l'esperienza insegna che è possibile scrivere molto codice di ottima qualità, affidabile e le cui prestazioni sono lungi da essere confrontabili con altre piattaforme. Scalabilità?... Parliamone.
ZOPE Zope è un'application server scritto in Python su cui si bassa il famoso Plone. Sto scrivendo un'applicativo per Plone. In passato ho sviluppato un piccolo CMS (betanews) basato su MySQL.
Python Python è un meraviglioso linguaggio di programmazione. Io lo definisco il linguaggio che ti costringe ad essere preciso. Lo sviluppo di classi Python è estremamente divertente e permette di raggiungere obiettivi di efficienza e snellezza sia in termini di prestazioni sia semplicemente estetici che, a mio parere, non si trovano in altri linguaggi. In Python ho sviluppato e sviluppo classi stand-alone, sia classi per Zope e Plone.
MySql MySQL è un DBMS molto potente e veloce. Si può usare con licenza GPL su progetti GPL oppure occorre acquistare una licenza per licenziare il software in cui si integra con licenza proprietaria. I due motori MyISAM e InnoDB consentono da un lato grandi velocità, dall'altro sicurezza sui dati. Tutti i linguaggi di programmazione hanno librerie di connessione a MySQL. Ultimamente mi dedico anche a problemi di efficienza e ottimizzazione dei database costruiti su MySQL.
OpenOffice.org OpenOffice.org è un'alternativa a Microsoft Office per la produttività dell'ufficio. Posso produrre PDF da documenti di testo o fogli elettronici senza plugin aggiuntivi, posso convertire da / verso documenti Microsoft Office, posso modificare e aggiungere funzioni attraverso l'uso di PyUNO e accedere in modalità batch ai servizi di OpenOffice (ad esempio il convertitore PDF) da Alfresco.
Alfresco Alfresco è un prodotto FOSS di collaborazione e gestione contenuti molto potente. Lo uso in Azienda Ospedaliera di Padova, ULSS n.16 di Padova e Istituto Oncologico Veneto come CMS della Intranet web interaziendale. Possiede moltissime funzionalità: aggancio da PC come una semplice unità di rete, accesso alle API via WebScript per l'integrazione su altri siti, possibilità di integrazione attributi, gestione del workflow, versionamento dei contenuti, forum e moltissimo altro. È stabile e performante.
LaTeX LaTeX (Leslie Lamport's TEX) è una storia d'amore più che un processore di testi. Ci ho scritto la tesi. La possibilità di ottenere un output di così grande qualità assieme al pieno controllo della formattazione, dell'indicizzazione e dei riferimenti ne fanno ancora il mio strumento di produzione della documentazione preferito.
Google Maps Una delle cose più utili e divertenti che siano apparse ultimamante sul web è senza ombra di dubbio il servizio mappe di Google. Uno straordinario strumento di programmazione attraverso le API JavaScript rese pubbliche da Google permette di integrare nei siti e nelle applicazioni il calcolo di percorsi ottimali, il reperimento di località, servizi e curiosità su scala planetaria. Il servizio è gratuito se esposto al pubblico, a pagamento per le Intranet. Sto sviluppando un sistema di dimensionamento di impianti fotovoltaici e un sistema di gestione di logistica.
Linux Ubuntu Linux Ubuntu è la mia stazione di lavoro. E di divertimento. Dieci anni fa forse non sarei stato all'altezza di destreggiarmi con un OS così, ma ora lo possono veramente usare tutti; mano a mano che passava il tempo sono venute meno tutte le critiche e le osservazioni del mondo poroprietario: virus, inaffidabilità, velocità, stabilità, plug-and-play, possibilità di fruire del bello del web (immagini, filmati, musica, siti interattivi,...). Aggiungo che ho a disposizione un server (posso sviluppare sullo stesso PC), e una stazione office. Non lo cambio più. Ecco qualche info sul mio sistema:

$ cat /proc/cpuinfo
  Intel(R) Pentium(R) M processor 1.86GHz
$ cat /etc/issue
   Ubuntu 8.10 \n \l
$ uname -a
  Linux bach 2.6.27-17-generic #1 SMP Wed Jan 27 23:14:44 UTC 2010 i686 GNU/Linux


Oracle è il database dei database. Completo di tutte le features di un DBMS di fascia elevata (integrità referenziale, triggers e stored procedures, viste, strumenti avanzati di amministrazione), Oracle si colloca sicuramente al posto di eccellenza dei database. Sviluppo correntemente su base dati Oracle 10 interfacciandomi ad esso, con appropriate librerie client, con diversi tipi di application server di tipo Open (PHP, Zope, Tomcat).


Java Java è una tecnologia proprietaria di Sun MicrosystemsTM che rappresenta uno degli standard più diffusi per scrivere applicazioni client, applet, servlet, XML web services.
Ho sviluppato in codice JSP / Java per server di tipo J2EE, adottando pricipalmente Apache Jakarta Tomcat come servlet container (vedi la scheda su J2EE e JSP).


Ho anche esperienza in sviluppo in Visual Basic / ASP su basi di dati Microsoft (Microsoft Access e Microsoft SQL Server) e su piattaforme WEB dello stesso produttore (Internet Information Server e Site Server).

Login