468x60

mercoledì 30 settembre 2009

Pattern architetturale Model-View-Controller

Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è un pattern architetturale molto diffuso nello sviluppo di interfacce grafiche di sistemi software object-oriented. Originariamente impiegato dal linguaggio Smalltalk, il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come framework basati su PHP (Symfony, Zend Framework), su Ruby (Ruby on Rails), su Python (Django), su Java (Swing, JSF e Struts), su Objective C o su .NET. A causa della crescente diffusione di tecnologie basate su MVC nel contesto di framework o piattaforma middleware per applicazioni Web, l'espressione framework MVC o sistema MVC sta entrando nell'uso anche per indicare specificamente questa categoria di sistemi (che comprende per esempio Ruby on Rails, Struts, Spring, Tapestry e Catalyst).

Struttura

Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali:
  • il model fornisce i metodi per accedere ai dati utili all'applicazione
  • il view visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti
  • il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti
Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "logica di business"), a carico del controller e del model, e l'interfaccia utente a carico del view.

Creazione di un componente con MVC in Joomla 1.5

Articolo molto interessante sulla creazione di un componente MVC in Joomla 1.5 utilizzando il pattern MVC

martedì 29 settembre 2009

Wiki - progetti per la condivisione della conoscenza

Wiki ha intrapreso un ambizioso progetto, quello di rendere "aperta" la conoscenza, permettendo a chiunque di accedervi per usufruirne e condividerla.

Elenco di seguito alcuni dei progetti di Wiki:

lunedì 28 settembre 2009

Errore HTTP 500 - Internal Server Error

L'errore "HTTP 500" è un errore generico di elaborazione di uno script da parte del webserver. Questo errore è senza dubbio uno tra gli errori più odiati da chiunque si avvicini al mondo dei linguaggi server side, soprattutto tra gli sviluppatori. Perché in realtà dice tutto e niente...

Il codice http di questo errore, il 500, è generato dal webserver quando un errore di elaborazione ha impedito il corretto completamento della richiesta. L'errore è molto generico ed è quindi praticamente impossibile risalire al problema da questa notifica.

Vediamo come è possibile trasformare questo messaggio, decisamente user unfriendly, in uno maggiormente comprensibile. Fortunatamente è possibile ottenere informazioni più dettagliate sulla natura dell'errore che saranno utili per procedere alla correzione. Per visualizzarli è sufficiente usare un browser differente da Internet Explorer o, in alternativa, disattivare i messaggi di errore http brevi seguendo questa procedura:
  • Aprite il pannello di configurazione di IE: Strumenti > Opzioni Internet
  • Scegliete la Scheda Avanzate
  • Alla voce Esplorazione disattivare l'opzione Mostra Messaggi di Errore HTTP Brevi
  • Applicate, chiudete il browser e riavviate

Visitando nuovamente la pagina noterete ora un errore che, per la gran parte degli sviluppatori, risulterà decisamente più comprensibile.
E' così possibile leggere in modo inconfondibile le informazioni riguardo la linea che genera l'errore ed altri contenuti utili ad individuare e correggere il problema.

E' buona norma, anche per gli utenti non sviluppatori, disattivare i messaggi di errori generici, per poter leggere gli errori in modo più specifico e soprattutto non confondere, ad esempio, una pagina non trovata (HTTP 404) con un errore di elaborazione. Visualizzare i messaggi completi si rivela utile anche per avvertire tempestivamente il responsabile di un sito web che state visitando, nel caso incontriate un errore, per permettergli di ricorrere alle necessarie correzioni.

Settare un Timeout ad un Socket in Java

Lavorando al progetto PROMIS ho dovuto sviluppare un'applicazione Java che riceve in UDP Multicast alcune informazioni, lanciando un "timeout" se queste non vengono ricevute entro X millisecondi.

Per settare un timeout è sufficiente utilizzare il metodo setSoTimeout(), vediamo come con un piccolo esempio:
MulticastSocket socket = new MulticastSocket(port);
socket.setSoTimeout(timeout);
in = new BufferedReader(new InputStreamReader(new DatagramInputStream(
socket), "UTF8"));
...

try {
String message = in.readLine();
} catch(SocketTimeoutException ex) {
System.err.println("Timeout exception: "+ex);
}

sabato 26 settembre 2009

Aumentare la sicurezza di un sito Joomla

  • Settare in sola lettura il file configuration.php
  • Modificare lo username "admin" con uno più complesso, utilizzando anche una password complessa
  • Mettere in sicurezza PHP, editando il file php.ini con le seguenti righe
register_globals = Off
magic_quotes_gpc = On
allow_url_fopen = Off
disable_functions = system, shell_exec, exec, phpinfo, proc_open
  • Proteggere la cartella "administrator" nel seguente modo
- Se il Web Serve è Apache, creare nella cartella administrator due files
- .htaccess, che dovrà contenere
AuthUserFile /percorsoMiaWebRoot/administrator/.htpasswd AuthGroupFile /dev/null AuthName "Protezione directory administrator di Joomla" AuthType Basic Require valid-user
- .htpassword, che dovrà contenere
nome:password
La password deve essere criptata, per criptarla è possibile utilizzare questa comoda utility online messa a disposizione gratuitamente
- Se il Web Server è IIS, dalla console di amministrazione di IIS selezionare il sito web di interesse, ed al suo interno selezionare la cartella administrator. Cliccarci sopra col tasto destro del mouse e selezionare la voce "Properties", poi selezionare il Tab "Directory Security", click su Edit, deselezionare la casella "Enable anonymous access" abilitata di default e scegliere un tipo di autentica



MySql - come risolvere errcode 17

Utilizzando MySql 5.x su Windows ho dovuto affrontare il misterioso problema dell' errcode 17, a causa del quale andava in crash il server MySql.

L'errore per esteso è il seguente: "can't create/write to file 'C:\WINDOWS\TEMP\#sql_8b8_0.MYD' errcode 17"

Ho scoperto che l'errore è dovuto ad i files temporanei che MySql memorizza sulla cartella Temp di Windows, e si verifica quando MySql cerca di scrivere un file temporaneo già esistente.

Per risolvere tale problema ho assegnato a MySql una sua propria directory temporanea. Ho perciò creato una nuova temp dir (C:\Programmi\MySQL\tmp) e l'ho specificata in my.ini

[mysqld]
...
tmpdir="C:/Programmi/MySQL/tmp/"


Adesso pare non ci sia più tale problema... in bocca al lupo!
468x60

Cerca su Google

Cerca nel Blog con Google