Filtri per client di posta

I programmi per la gestione della posta (Microsoft Outlook, Thunderbird, Evolution, …) hanno una funzionalità molto utile per automatizzare l’archiviazione: le “regole” o “filtri”; in base ad una regola (o filtro) è possibile compiere in automatico delle operazioni: spostare, ad esempio, un messaggio in arrivo dentro ad una cartella specifica se arriva da un determinato mittente.

Evolution ha la possibilità di creare dei filtri e di esportarli su file di testo in formato XML. Analogamente Thunderbird, solo che scrive su un formato custom, ma sempre di testo.

E, finché c’è testo, c’è speranza.

Ho abbandonato Evolution e sono tornato a Thunderbird, ma, sebbene migrare la rubrica sia semplice (la posta è sul server IMAP per cui non c’era nulla da migrare), invece migrare i filtri non lo è: non ho trovato nulla in rete, quindi mi son fatto un esportatore di legno.

Qui, se volete, c’è un abbozzo del programmino. Usatelo se vi serve e, se qualcosa non va, scrivetemi: mi piacerebbe migliorarlo; così com’è, mi è bastato per i miei scopi.

Strumenti per lo sviluppo Oracle

Sto sviluppando un applicativo PHP/Oracle.

In mancanza di strumenti di terze parti ho adottato la consolle di Oracle per l’amministrazione inclusa in Database Express Edition 10.

In particolare per il debugging delle procedure e dei trigger è utile l’Object Browser; gli oggetti affetti da errori sono segnalati con un rettangolino rosso sulla sinistra del nome; cliccando sul nome e poi, sulla barra superiore, su Errors (vedi la figura), è possibile vedere l’elenco degli errori commessi, così da poter procedere con la correzione:

debugging con Oracle DBExpress 10

C’è però un errore particolare: se il testo contiene delle tabulazioni esce questo errore:

/apex/wwv_flow.show was not found on this server

Ho trovato qui il perché dell’errore, appunto la presenza di caratteri di tabulazione.

Strumento di Wiki in Alfresco Share

Leggi qui: http://tinyurl.com/3zk6obo

FailoverSyslogServer – come scrivere log in un server dedicato

Chi scrive software, di solito, usa tracciare i messaggi accessori generati dal software in varie situazioni (in fase di debug, in caso di errore, o di avvertimento o di semplice informazione) su uno o più file di log che generalmente risiedono nella macchina stessa su cui gira il software.

Ad esempio, con PHP è possibile scrivere una riga di log nei log di sistema con il codice:

<?php
openlog("MioScritpDiLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);
$access = date("Y/m/d H:i:s");
syslog(LOG_WARNING, "$access - messaggio personalizzato");
closelog();
?>

Quando viene eseguito questo frammento di codice, viene scritta una riga nel file

/var/log/messages

Questo avviene poiché si è utilizzata una chiamata di sistema alla funzione syslog; a seconda del valore del parametro int facility andremo a scrivere in un file diverso all’interno di /var/log/ nella stessa macchina in cui risiede la facility (applicazione) che può essere un’applicazione di sistema (ad esempio mail) oppure personalizzata.

È possibile indirizzare la chiamata ad un server che si occupa esclusivamente di logging; tale server poi può essere equipaggiato in modo tale da accedere ai contenuti dei log ad esempio attraverso un browser.

rsyslogd è un demone che permette la scrittura di log remoti. Questa che segue è un frammento tratto da http://wiki.rsyslog.com

FailoverSyslogServer

Si presentano spesso situazioni in cui i dati di log devono essere spediti da un sistema locale verso un demone syslogd centrale (per consolidamento del dato, archiviazione o per altre ragioni). Un problema comune è che i messaggi vengono persi quando il syslogd centrale va fuori servizio.

Rsyslog ha la capacità di lavorare con server fuori servizio per prevenire la perdita di messaggi. Un prerequisito è che l’inoltro di messaggi di log verso server centrale sia basato su TCP. La ragione di ciò è che con UDP (che è un protocollo senza connessione) non c’è possibilità di sapere se il sistema remoto è andato giù.

Supponiamo di avere un server primario centrale e due secondari. In questo caso potete usare il seguente estratto di file di configurazione per mandare loro i dati:

rsyslog.conf:

*.* @@primary-syslog.example.com
$ActionExecOnlyWhenPreviousIsSuspended on
& @@secondary-1-syslog.example.com
& @@secondary-2-syslog.example.com
& /var/log/localbuffer
$ActionExecOnlyWhenPreviousIsSuspended off

Questo selettore processa tutti i messaggi che riceve (*.*). Poi tenta di inoltrare ogni messaggio al server primary-syslog.example.com (via tcp). Se questo non è raggiungibile, prova con secondary-1-syslog.example.com, se anche questo fallisce tenta con secondary-2-syslog.example.com. Se nessuno di questi server è raggiungibile, i dati sono salvati localmente in /var/log/localbuffer.

Notate che i secondari ed il log locale vengono usati se quello prima di loro non funziona. Così, idealmente, /var/log/localbuffer non riceverà mai un messaggio. Se il serve che è andato in failover torna su, prenderà il sopravvento sugli altri sistemi sotto di lui.

(Fonte: http://wiki.rsyslog.com)

Un altro sito in cui si trovano notizie precise anche per i cosiddetti newbies è questo.

SCORM

Sharable Content Object Reference Model è un insieme di standard tecnici per la produzione e la fruizione di oggetti didattici o e-learning obiects. Non è uno standard granitico costruito da zero a tavolino, ma piuttosto un insieme di regole che indirizza chi produce questo tipo di oggetti a degli standard già presenti sul mercato che si occupavano di aspetti particolari del problema dell’e-learning.

Ad esempio SCORM fornisce tre sotto specifiche per questi problemi concreti:

  • come dev’essere “pacchettizzato” l’oggetto didattico;
  • con quale tecnologia dev’essere letto/eseguito e come interagisce con la piattaforma LMS (Learning Management System) che è il sistema che sovraintende la distribuzione dei corsi (l’iscrizione, le la distribuzione delle lezioni, le prove d’esame a altro);
  • come il fruitore può accedere alle varie sezioni dell’oggetto.

È stato sviluppato da ADL (Advanced Distributed Learning, sito), un gruppo di ricerca del Dipartimento di Difesa degli Stati Uniti d’America.

Maggiori informazioni qui.

SIP (Session Initiation Protocol)

Session Initiation Protocol (SIP) è un protocollo di controllo (segnalazione), a livello di applicazione, per la creazione, modifica e terminazione di sessioni con uno o più partecipanti.

Queste sessioni includono le chiamate telefoniche su Internet, distribuzione di contenuti
multimedia e conferenze multimediali.

Gli inviti SIP sono utilizzati per creare sessioni che trasportano descrizioni che permettono ai partecipanti di concordare un insieme di tipi di supporti compatibili.

SIP si avvale di elementi chiamati proxy server per instradare le richieste alla posizione attuale dell’utente, autenticare e autorizzare gli utenti per i servizi, implementare un provider di politiche di instradamento delle chiamate, e per fornire funzionalità agli utenti.

SIP fornisce anche una funzione di registrazione che permette agli utenti di caricare le loro attuali locazioni, informazioni utili al proxy server.

SIP funziona nel livello più alto di diversi protocolli di trasporto.

Ci sono molte applicazioni di Internet che richiedono la creazione e la gestione di una sessione, dove con il termine sessione si intende uno scambio di dati tra un’associazione di partecipanti.

L’attuazione di queste applicazioni è complicato dalle pratiche dei partecipanti: gli utenti possono muoversi tra gli endpoint (punti periferici o terminali), essi possono essere indirizzabili da più nomi, e possono comunicare tramite media diversi – a volte contemporaneamente.

Sono stati scritti numerosi protocolli che trasportano in tempo reale varie
forme di dati di sessione multimediali, come voce, video o messaggi di testo.

Il Protocollo di Iniziazione di Sessione (SIP) lavora in concerto con questi protocolli,
abilitando i teminali Internet (chiamati agentiuser agents) a scoprire un altro agente e a concordare con questo una caratterizzazione della sessione che vorrebbero condividere.

Per l’individuazione dei potenziali partecipanti alla sessione, e per altre funzioni, SIP consente la creazione di una infrastruttura di host di rete (chiamati proxy server) a cui l’agente utente può inviare iscrizioni, inviti alle sessioni, e altre richieste.

SIP è un agile strumento di uso generale per la creazione, la modifica e la chiusura le sessioni, che funziona in maniera indipendente dai protocolli di trasporto sottostanti e senza dipendenza dal tipo di sessione che si è stabilito.

(Fonte: Internet Engineering Task Force, rfc 3261. Sull’IETF leggi questo documento introduttivo)

Appunti Linux

Per conoscere l’indirizzo IP di una macchina dato il nome è sufficiente il comando ping:

marcob@jsbach:~$ ping www.google.it
PING www.l.google.com (209.85.143.104) 56(84) bytes of data.

Per la risoluzione inversa, utilizzare il comando dig:

marcob@jsbach:~$ dig -x 209.85.143.104
...
;; QUESTION SECTION:
;104.143.85.209.in-addr.arpa.    IN    PTR

;; ANSWER SECTION:
104.143.85.209.in-addr.arpa. 86135 IN    PTR    dy-in-f104.1e100.net.
...

LDAP

Link utili per la configurazione di OpenLDAP 2.4

http://www.openldap.org/doc/admin24/quickstart.html

http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-it-4/ch-ldap.html

PHP Excel

Errore in cui sono incorso provando la libreria PHPExcel:

marcob@jsbach:~$ tail -f  /var/log/apache2/error.log
[Thu Mar 31 16:40:26 2011] [error] [client 127.0.1.1] 
PHP Fatal error: Uncaught exception 'Exception' with message 
'Could not close zip file
/var/www/Classes/PHPExcel/Tests/01simple.xlsx.' in
/var/www/Classes/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php:344
Stack trace:n#0 /var/www/Classes/PHPExcel/Tests/01simple.php(77):
PHPExcel_Writer_Excel2007->save('/var/www/Classe...')
#1 {main}
thrown in 
/var/www/Classes/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php
on line 344

In sostanza non riesco a scrivere nella directory

/var/www/Classes/PHPExcel/Tests/

Soluzione:

root@jsbach:/var/www/Classes/PHPExcel# chmod 775 Tests/
root@jsbach:/var/www/Classes/PHPExcel# chgrp www-data Tests/

L’errore sparisce e il file viene salvato.

150° anniversario dell’Unità d’Italia

150° Anniversario dell'Unità d'Italia