sabato 28 febbraio 2009
EmailERASER - software freeware per filtrare le email indesiderate e per ripulire le caselle di posta intasate
martedì 24 febbraio 2009
XAMPP - ottimo stack Apache/MySql/Php
XAMPP è un acronimo con cui si indica una piattaforma di sviluppo web/database che prende il nome dalle iniziali dei componenti software con cui è realizzata.
XAMPP è un pacchetto software gratuito contentente Apache HTTP Server, il database MySQL e tutti gli strumenti necessari per utilizzare i linguaggi di programmazione PHP e Perl.
Il programma è rilasciato sotto la GNU General Public License, è gratuito e caratterizzato da un approccio user friendly. Mediante XAMPP è possibile avere un application server capace di interpretare pagine dinamiche PHP. Ottenendo un dominio dns, si può, se il computer è connesso, accedere alle pagine web . Attualmente, XAMPP è disponibile per Windows, GNU/Linux, Sun Solaris e Mac OS X.
martedì 17 febbraio 2009
Query SQL per JOIN su intervalli temporali
select t1.*, t2.*
from tab1 t1 LEFT JOIN tab2 t2
on t2.WIDATE >= t1.data - INTERVAL '120' SECOND and
t2.WIDATE <= t1.data
lunedì 16 febbraio 2009
Monitorare le sessioni attive in JSP
void sessionCreated (HttpSessionEvent e)Il metodo
void sessionDestroyed (HttpSessionEvent e)
sessionCreated()
viene invocato nel momento in cui il Container crea una nuova sessione, mentre il metodo sessionDestroyed()
viene invocato quando la sessione viene distrutta, sia nel caso in cui venga invalidata esplicitamente mediante il metodo invalidate
(), sia nel caso in cui la sessione venga invalidata automaticamente dal container perché scade il timeout. Entrambi i metodi ricevono in ingresso un'istanza della classe HttpSessionEvent, mediante la quale è possibile intercettare diverse informazioni sulla sessione.
Per la creazione pratica, nella nostra classe Listener definiamo una Collection di Stringhe che conterrà l'elenco delle sessioni create.
Nel metodo sessionCreated()
aggiungiamo alla lista l'ID della sessione creata. Nel metodo sessionDestroyed()
eliminiamo l'ID della sessione distrutta. Definiamo anche un metodo pubblico che ci permette di ottenere la lista delle sessioni attive.
public class HtmlSessionListener implements HttpSessionListenerPer attivare il Listener è necessario definirlo nel file web.xml, nel seguente modo:
{
private static Collectionutenti = new ArrayList ();
public void sessionCreated(HttpSessionEvent e)
{
System.out.println("Nuova sessione creata. ID sessione: " + e.getSession().getId());
utenti.add(e.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent e)
{
System.out.println("Distrutta sessione con ID " + e.getSession().getId());
utenti.remove(e.getSession().getId());
}
public static CollectiongetUtenti()
{
return utenti;
}
}
HtmlSessionListener listener.HtmlSessionListener
Possiamo testare il tutto creando una pagina JSP, nella quale stampiamo il numero di sessioni attive con i relativi ID di sessione assegnati.
<%@page import="listener.HtmlSessionListener"%>
<%@page import="java.util.Iterator"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Utenti connessi</title>
</head>
<body>
Gli utenti connessi al sistema sono
<%= HtmlSessionListener.getUtenti().size() %>
<%
Iterator<String> it = HtmlSessionListener.getUtenti().iterator();
while (it.hasNext()){
String id = it.next();
%><p><%= id %></p>
<%
}
%>
</body>
</html>
Per testare l'esempio, impostiamo un valore basso al timeout di sessione. Per farlo è necessario inserire nel web.xml il seguente tag:
venerdì 13 febbraio 2009
Affiliati.org - potente network pubblicitario per guadagnare online
giovedì 12 febbraio 2009
SlideShare - utile strumento per condividere le presentazioni
A differenza degli strumenti per creare direttamente presentazioni on line (Google Docs, Zoho, Teamslide o Thumbstacks), Slideshare non ha limitazioni di sorta nella grafica e nell’uso dei caratteri, semplicemente perché la presentazione viene creata offline e solo dopo caricata sul sito, che immediatamente la converte in un file Flash, visibile allo stesso modo su qualunque piattaforma. La pagina principale di Slideshare presenta un tripudio di thumbnail: sono le ultime presentazioni inserite, le più scaricate, quelle in evidenza (spesso caricate in occasione di qualche BarCamp). Cliccando su un thumbnail si accede alla pagina della presentazione, molto simile alla pagina di un singolo video su YouTube. La presentazione si può lanciare (anche a tutto schermo), commentare, condividere, taggare e scaricare (se il creatore lo ha permesso a monte). Sulla colonna di destra, appaiono presentazioni simili per argomento o tag.
Per avere un proprio Slidespace in cui inserire le presentazioni create e condividerle, è sufficiente iscriversi (Sign up) inserendo pochi dati anagrafici. La pagina del proprio profilo appare inizialmente semivuota, ma a poco a poco – usando Slideshare come un qualsiasi altro social network – la pagina si riempirà di immagini relative alle presentazioni caricate, i contatti nel network, gli eventi cui si partecipa (per esempio, conferenze, fiere, barcamp), i commenti, la tag cloud, le ultime presentazioni degli amici e le presentazioni preferite. Per caricare una presentazione si possono usare diversi strumenti: l’upload singolo, il caricamento di un file che ha già un suo Url (che è già presente sul web, quindi), il caricamento via mail e soprattutto il “bulk upload”, per chi desidera caricare più di un file alla volta – con la raccomandazione di non superare i 30 MB per ogni file. In caso di dimensioni eccessive delle slide, è comunque sufficiente spezzare il file in più segmenti inferiori alla dimensione massima.
La presentazione, dopo un lasso di tempo più o meno breve dedicato alla conversione, sarà visibile in formato Flash a tutti, con un Url unico (simile a quello dei filmati su YouTube) che potrà essere pubblicizzato dall’autore. A questo punto non resta che inserire dei tag per la propria presentazione ed eventualmente inserirla in qualche gruppo tematico. Le presentazioni caricate possono essere pubbliche o private, cioè condivise solo con alcuni altri utenti Slideshare o con altre persone (che abbiano almeno un accesso web). Ogni utente può comunque decidere a monte, al momento dell’upload, se la sua presentazione dovrà essere liberamente scaricabile o meno.
Più recentemente, Slideshare ha aggiunto alle sue funzionalità lo Slidecast: un neologismo originato dalla fusione dei termini “slide” e “podcast”. La propria presentazione può essere commentata da un flusso audio registrato e caricato su un qualsiasi spazio web. Slideshare offre uno strumento di sincronizzazione tra l’audio e le slide che origina in output uno Slidecast, cioè un file multimediale che potenzia ulteriormente il valore della presentazione caricata in origine. Sincronizzare audio e slide in uno Slidecast non è difficile, anche se richiede una certa familiarità con l’interfaccia di programmi di editing audio/video. Gli utenti più esperti apprezzeranno comunque la possibilità di montare con grande precisione il flusso multimediale. Per questa funzione (come per tutti gli aspetti dell’uso di Slideshare) sono disponibili Faq molto dettagliate.
WEKA da prompt dei comandi
WEKA, notissima suite per data mining, può essere utilizzato anche da prompt dei comandi, permettendo un completo ed utile controllo dei parametri per elaborazioni batch.
Vediamo come specificare i parametri per la classificazione:
Esempio: java weka.classifiers.trees.J48 -t data/weather.arff
-t | specifies the training file (ARFF format) |
-T | specifies the test file in (ARFF format). If this parameter is missing, a crossvalidation will be performed (default: ten-fold cv) |
-x | This parameter determines the number of folds for the cross-validation. A cv will only be performed if -T is missing. |
-c | As we already know from the weka.filters section, this parameter sets the class variable with a one-based index. |
-d | The model after training can be saved via this parameter. Each classifier has a different binary format for the model, so it can only be read back by the exact same classifier on a compatible dataset. Only the model on the training set is saved, not the multiple models generated via cross-validation. |
-l | Loads a previously saved model, usually for testing on new, previously unseen data. In that case, a compatible test file should be specified, i.e. the same attributes in the same order. |
-p # | If a test file is specified, this parameter shows you the predictions and one attribute (0 for none) for all test instances. If no test file is specified, this outputs nothing. In that case, you will have to use callClassifier from Appendix A. |
-i | A more detailed performance description via precision, recall, true- and false positive rate is additionally output with this parameter. All these values can also be computed from the confusion matrix. |
-o | This parameter switches the human-readable output of the model description off. In case of support vector machines or NaiveBayes, this makes some sense unless you want to parse and visualize a lot of information. |
I clusterers possono essere utilizzati in modo simile ai classificatori, vediamo come specificare i parametri per il clustering:
Esempio: java weka.clusterers.EM -I 10 -t train.arff
- -t
specifies the training file - -T
specifies the test file - -p
for outputting predictions (if a test file is present, then for this one, otherwise the train file) - -c
performs a classes to clusters evaluation (during training, the class attribute will be automatically ignored) - -x
performs cross-validation for density-based clusterers (no classes to clusters evaluation possible!). With weka.clusterers.MakeDensityBasedClusterer, any clusterer can be turned into a density-based one. - -d
and -l
for saving and loading serialized models
GeoTagging - associare a qualunque oggetto informazioni sul posizionamento
Il GeoTagging associa a qualunque oggetto o servizio, informazioni sul suo posizionamento sulla terra tramite coordinate geografiche e altri dati come altezza e velocità, in modo da poter facilmente organizzare, ricercare e visualizzare graficamente le informazioni su mappe digitali.
Sono ormai molti i servizi di cartografia via web-browser che permettono di utilizzare il GeoTagging, ma quando si tratta di rappresentare graficamente le informazioni, nessuno di questi servizi si avvicina neanche lontanamente alla fluidità, dettaglio e precisione della navigazione tridimensionale di Google Earth.
Nell'immagine sopra, alla mappa base di Google Earth, é sovrapporta la collezione di foto di Panoramio che, oltre a permettere di archiviare online fino a 2 Gb di foto personali, ha la possibilità di "GeoTaggare" le foto esattamente nel punto in cui sono state scattate.
Anche Flickr ha introdotto questa possibilità, e in pochissimo tempo ha già GeoTaggato alcuni milioni di foto. Ecco ad esempio quelle di Milano.
Altro valido esempio é Wikimapia che seguendo la filosofia Wiki si prefigge di "illustrare il pianeta terra" tramite un lavoro collettivo. Ecco ad esempio i luoghi GeoTaggati intorno a Napoli. Come per Panoramio, i dati di Wikimapia sono visualizzabili con Google Earth.
mercoledì 11 febbraio 2009
Posizione GPS realtime con Google Earth
Google Earth é un software di cartografia 3D, eccezionale per esplorare la terra e cercare informazioni GeoTaggate in tutto il mondo, ma se lo colleghi con un ricevitore GPS diventa anche un sistema cartografico 3D per visualizzare e tracciare la tua posizione GPS in tempo reale.
Per questo servono un PC portatile con installato Google Earth 4 (o superiore),
un ricevitore GPS con una uscita seriale o USB standard NMEA, e un programma che converta il segnale GPS NMEA in KML per poterlo visualizzare in Google Earth.
Questa soluzione é per la versione gratuita di Google Earth, per chi utilizza la Plus il programma di conversione non é necessario dato che é già presente l'ingresso GPS in tempo reale ( menú Strumenti > GPS). Il programma gratuito da scaricare é GooPs, un solo file .exe autoeseguibile che non necessita installazione. Scaricare qui il programma, leggere in fondo alla pagina le istruzioni, e iniziare a provare il programma senza ricevitore GPS utilizzando la funzione "Demo" cliccando su “Start Demo”.
Selezionare poi nel ricevitore GPS come protocollo di invio dati NMEA, quindi collegarlo via seriale o USB al PC, aprire le “Options..." di GooPs, deselezionare “Demo Mode” e immettere il numero della porta Com e la velocità di trasferimento.
Stabilito il collegamento si vedrà evidenziata la posizione su Google Earth. E' possibile modificare a piacere le varie opzioni di visualizzazione presenti in GooPs, tra cui la visione 2D o 3D, la visualizzazione della velocità, e la possibilità di salvare la traccia GPS come archivio KML.
Per utilizzare questa soluzione in auto o in barca, o comunque dove non si ha connessione internet, si deve prima caricare nella cache di Google Earth l'area geografica dove si prevede di viaggiare, per fare questo é sufficiente impostare il massimo della dimensione cache su disco ( 2000 MB ), nel menu Strumenti > Opzioni > Cache, e poi sorvolare a bassa quota l'area interessata, in modo da acquisire la cartografia nella cache.Buon divertimento! Anzi, buon viaggio!
lunedì 9 febbraio 2009
Apache Lucene - motore di ricerca open source
Vediamone in dettaglio le caratteristiche:
Indexing Scalabile, Performante
- oltre 20MB/minuto su Pentium M 1.5GHz
- richiede poca RAM -- only 1MB heap
- incremental indexing veloce come il batch indexing
- dimensioni dell'indice di circa il 20-30% della dimensione del testo indicizzato
Algoritmi di Ricerca Potenti, Accurati ed Efficienti
- ranked searching -- i migliori risultati sono i primi
- molti tipi di query potenti: phrase queries, wildcard queries, proximity queries, range queries and more
- fielded searching (e.s., titolo, autore, contenuti)
- ricerca in base alla data
- ordinamento in base a qualsiasi campo
- ricerca multi-indice
- permette simultaneamente aggiornamenti e ricerca
Soluzione Cross-Platform
- Disponibile come software Open Source sotto Apache License che permette di usare Lucene in programmi commerciali e Open Source
- 100%-puro Java
- Implementazioni in altri linguaggi di programmazione
mercoledì 4 febbraio 2009
Google LATITUDE - Segnala ai tuoi amici la tua posizione
Il download avviene puntando il Browser del vostro dispositivo su google.it/latitude. Disponibile in 24 lingue e 42 paesi
[fonte GoogleMobileBlog]
Segnalare gli articoli sui Social Network con Blogger
Andare nella bacheca di Blogger: http://www.blogger.com/home
cliccare su Layout e poi Modifica HTML, si aprirà la pagina contentente il codice HTML per modificare il modello, mettere la spunta a “Espandi i modelli Widget” e poi cercare il seguente tag:
<div class=’post-footer’>
dopo questo tag inserite il codice che trovate nel file zip.
Ora non vi resta che cliccare sul bottone “Salva Modello”.
Qui potete scaricare il file del codice con le istruzioni:
http://www.carmelosaffioti.it/blog/social_blogger.zip
Nel file zip allegato sono presenti anche le icone che dovete caricare su un vostro spazio web, ovviamente dopo dovete modificare il codice in base alla vostra URL.
ICTv - WebTv italiana dedicata a tecnologia e informatica
martedì 3 febbraio 2009
FileZilla - client e server FTP open source
FileZilla Client è un software libero multipiattaforma che permette di trasferire file attraverso il protocollo FTP. Il programma è disponibile per GNU/Linux, Microsoft Windows, e Mac OS X. Tra i vari protocolli supportati, oltre all'FTP vi è l'SFTP, e l'FTP su SSL/TLS. Il 10 agosto del 2007 era uno dei dodici software più popolari di Sourceforge.net di tutti i tempi.
FileZilla Server è un server FTP che supporta il normale protocollo FTP più l'FTP per l'SSL/TLS.
Il codice sorgente di FileZilla è disponibile sul sito Sourceforge.net e, in alcuni casi, anche al momento dell'installazione del programma. Il progetto fu nominato Progetto del Mese nel novembre del 2003.
Le principali caratteristiche del programma sono:
- il site manager, che permette all'utente di creare una lista di siti FTP e di selezionarne uno con un menu a tendina. Una volta selezionato il sito desiderato, il programma si connetterà al sito stesso permettendo l'upload o il download di file;
- il message log, è presente in alto e contiene la lista di tutti i messaggi inviati ai server dal programma e le relative risposte ricevute dai server FTP;
- il file and folder view, è l'interfaccia grafica associata al motore di trasferimento dei file. Posto al di sotto del message log e composto da due finestre di egual grandezza, esso permette all'utente di fare il drag and drop ovvero di navigare tra le cartelle del sistema (parte sinistra) e trascinarle dall'altra parte (parte destra) per trasferire i file o le cartelle selezionate sul server desiderato;
- il transfer queue, posto sulla parte inferiore della schermata, è formato da una luce rossa e una verde e indica la velocità di download o di upload.
Il programma fu creato come progetto per il corso di informatica nel 2001 da Tim Kosse e due suoi amici. Fin dall'inizio, ci fu una discussione sul tipo di licenza da attribuire al progetto: alla fine si decise di rilasciarlo come software open source perché erano presenti già numerosi client FTP e se l'avessero distribuito come prodotto commerciale molto probabilmente non ne avrebbero venduta una copia.
La versione Alpha del progetto fu rilasciata a gennaio del 2001. Tutte le caratteristiche del progetto divennero complete verso la versione Beta 2.1. Prima della versione 3.0 il progetto era disponibile solo per Microsoft Windows.
Sito web del progetto: http://filezilla-project.orglunedì 2 febbraio 2009
WEKA - Connesione ad un db MySql tramite JDBC
- Copiare il file JAR del driver JDBC di MySql Connector J su $JRE/lib/ext
- Estrarre da weka.jar il file DatabaseUtils.props sulla home directory di WEKA
- Editare il file DatabaseUtils.props assicurandosi di avere jdbcDriver=sun.jdbc.odbc.JdbcOdbcDriver e jdbcURL=jdbc:mysql://localhost/nome_db
Servlet - utilissimo mezzo per incapsulare il codice
Possiamo costruire una servlet scrivendo una classe Java che erediti le caratteristiche della classe HttpServlet. Questa può essere richiamata da una pagina Jsp per effettuare lavori come calcoli, ricerche, elaborazioni di vario genere. In pratica può essere considerata una "estensione" dell'application server. Mostriamo come sviluppare una Servlet che effettui il controllo sulla stringa digitata dall'utente e richiami la pagina corretta:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class Main extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String categoria = request.getParameter("categoria");
String jspPage = "";
if ( categoria.equals("politica") )
{
jspPage = "pagine/politica.jsp";
}
else if ( categoria.equals("finanza") )
{
jspPage = "pagine/finanza.jsp";
}
else if ( categoria.equals("sport") )
{
jspPage = "pagine/sport.jsp";
}
else
jspPage = "pagine/error.jsp";
response.sendRedirect(jspPage);
}
}
Una volta scritta e compilata bisognerà registrare questa classe come Servlet nella nostra applicazione web. Per fare ciò, creiamo nella cartella della nostra applicazione una cartella WEB-INF ed all'interno una cartella classes. Dentro la cartella WEB-INF andrà creato il file web.xml così fatto:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/Web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>MainServlet</servlet-name>
<servlet-class>Main</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/MainUrl</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
Questo file XML permette di registrare la servlet nella nostra applicazione. Da qui impostiamo il nome della servlet (MainServlet), la classe corrispondente (Main) e l'Url tramite il quale verrà richiamata dal form nelle pagine Web (MainUrl). Dopo aver creato questo file, spostiamo il file Main.class nella cartella WEB-INF/classes e riavviamo Tomcat. Alla fine la struttra dovrà essere così fatta:
A questo punto non ci resta che riavviare Tomcat ed aprire nuovamente l'applicazione col browser. Quando cliccheremo sul tasto Show, il submit del form richiamerà la servlet Main.class
, questa verrà eseguita ed alla fine verrà richiamata la pagina Jsp corrispondente (error, finanza, politica o sport).