mercoledì 26 novembre 2008

Micro SMTP Server - un piccolo server per testare SMTP in Java

A quanti di voi capita di dover scrivere applicazioni web e si trovano nell'impossibilità di testare la bontà dell'invio di e-mail in modo automatico? Quanti di voi per effettuare questi test devono far inviare realmente email di test dal sistema che stanno implementando, perdendo tempo aspettando che la mail arrivi e controllandola e cancellandola?
Penso parecchi...Ma ho una soluzione che potrebbe facilitare la vita a tutti noi sviluppatori. Sto scrivendo un piccolo server che si limita ad ascoltare un socket sulla porta 25 ed agisce come server di posta SMTP e scrive sulla standard output tutto ciò che gli viene inviato e tutto ciò che invia. Sarà terminato a breve, non appena ho il tempo terminarne lo sviluppo (la versione corrente 0.1 supporta solo 1 singolo invio di e-mail dopodiché termina selvaggiamente). Non so se sarà open-source (molto probabile, ma devo scegliere la licenza giusta), sicuramente sarà freeware.
Micro SMTP Server (è così che ho battezzato il mio serverino SMTP) è sviluppo usando il linguaggio Java, in modo da essere Cross-platform compatibile.

martedì 25 novembre 2008

Silenzio...

Scusate se non sto effettuando post in questo periodo, ma sono un po' preso sia dal lavoro che dall'università. Spero che i miei lettori abbiano pazienza... Una comunicazione per tutti: vorrei che lasciaste qualche commento sui miei post, se li avete trovati utili o meno, quali argomenti vorreste che vengano trattati.

Vi auguro una Buona giornata.

Daniele

PS:
presto realizzerò la versione inglese di questo blog all'indirizzo http://www.danieleveratti.com/

I will post contents of this blog on http://www.danieleveratti.com/ very soon!

domenica 31 agosto 2008

IE 6: header Content-disposition ignorati (ignored) !!FIXED!!

Tra tutti i browser del mondo, quello che mi da più rotture è Internet Explorer. Ho smesso anche di usarlo, ma non per sentimenti di ribellione incondizionata e pinguinosa nei confronti di Microsoft, ma perché credo che Firefox sia meglio, soprattutto se di lavoro si fa lo sviluppatore web. Nonostante tutto però gli utenti usano IE, e parecchi ancora usano IE 6.

In particolare Internet Explorer 6 mi ha dato una bella gatta da pelare con i file da scaricare.
In un'applicazione web che ho scritto è possibile scaricare alcuni file, solo da parte di utenti registrati. Quindi i file stanno fuori dalla visibilità del browser e vengono serviti da un file (download.php, nel mio caso) che, dopo aver fatto i relativi controlli a login e permessi vari, cambia gli header in modo da far scaricare il file scelto. Semplificando molto è una cosa simile:

<?php
session_start();
$db = new db();
checkPermission($_GET['id'],$_SESSION['userid']) || die();
$file = $db->query("SELECT * FROM attachments WHERE id = ".$db->quote($_GET['id']);
header ("Content-type: ".$file['mime']);
header ("Content-disposition: attachment; filename=".$file['name']);
header ("Content-Transfer-Enconding: binary");
@readfile($file['full_path']);
exit();
?>


Risultato? Con Firefox nessun problema, con IE 7 nessun problema (eh meno male!!) ma con IE6... disastro!! I file venivano scaricato, ma IE6 ignorava bellamente l'header content-type e l'header content-disposition, nominando il file "download.php".

sabato 2 agosto 2008

Risultato del sondaggio....

Mmm...il sondaggio sul linguaggio di programmazione preferito non ha avuto il risultato che speravo... se votava più gente era meglio...

Comunque, per quanto in pochi abbiano votato, il linguaggio inventato da Dennis Ritchie (Brian Kernighan ha solo aiutato Ritchie a scrivere il manuale, ma il linguaggio è tutto sudore di Ritchie!) esce vincitore, anzi stra-vincitore, con il 71% dei vostri voti...a breve quindi un post riguardante il linguaggio C!!!

domenica 29 giugno 2008

Non pensavo eppure... ASP.NET

Stamattina ho voluto dare un'occhiata al framework ASP.NET
Sempre forte del fatto che il quadrinomio LAMP fosse imbattibile (o almeno è uno dei migliori in circolazione), ho voluto provare a vedere perché molti sviluppano siti web con i linguaggi e i framework forniti da mamma Microsoft, dovendo pagare fior di quattrini per le licenze.

Strano ma vero, Microsoft fornisce una versione gratuita di VisualStudio. Visual Studio Express 2008, nello specifico, è la più recente. Richiede solo una registrazione, obbligatoria per usare il prodotto dopo 30 giorni dall'installazione. La suite intera è una ISO di circa 2 GB e mezzo ma è possibile scaricare solo parti di Visual Studio, come Visual C# 2008 Express, Visual Basic 2008 Express, SQL Server 2008 Express e via dicendo. C'é un' applicazione denominata Visual Web Developer 2008 Express, che è specifica per lo sviluppo di applicazioni web, come dice il nome, giusto? Con questa è possibile sviluppare sia in VB che in C#, appena avviate l'applicazione viene creato il server web di test e avviato il browser. Comodo!

Quindi ho creato un piccola pagina web con un form dove inserire dei dati che venivano scritti in una tabella di un database access. E fin qui tutto normale, un po' di sbattimento per capire quale oggetto utilizzare per la connessione al db (ma è normale, è stata la prima che volta che sviluppavo in ASP.NET).

La cosa che mi ha stupito è il fatto che una volta creato un oggetto AccessDataSource, e aggiunto un oggetto GridView associato all'oggetto AccessDataSource, l'oggetto GridView permette senza scrivere una sola riga di codice di avere già paginati,intabellati, formattati e con le colonne ordinabili, i risultati di una query SQL.

Credo che per la maggior parte degli sviluppatori ASP.NET questa sia una ovvietà, ma per me, che non ho mai sviluppato con .NET, questa cosa mi ha davvero stupito in bene. Fare la stessa cosa in PHP puro avrebbe richiesto sicuramente più tempo che trascinare due oggettini sulla pagina web in produzione.

Ovviamente c'é il rovescio della medaglia: bello, facile, intuitivo e veloce, ma sei uno sviluppatore ASP.NET dovvesse fare la stessa cosa senza avere a disposizione il framework .NET ci riuscirebbe lo stesso?

In conclusione: .NET è molto intuitivo e veloce, ma credo che bisogni incominciare ad usarlo nella "maturità". Ovvero: prima si impara a programmare su linguaggi dove "ci si fa le ossa" e poi, quando si è "stanchi" di programmare si passa .NET. Per quel poco che ho visto credo ne valga la pena di pagare la licenza di Windows Server.

Un mio amico (Sergio De Chiara di windowserver.it) inorridirà (probabilmente no,ma essendo un dipendente Microsoft... ;-)) davanti alle mie parole di oggi, ma tanto tempo fa (era forse appena uscito VB 5 per intenderci) mi disse: "I linguaggi di programmazione visuali sono belli, facili e veloci. Ma se ti dovessero chiedere di scriverne uno come fai?"