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.

CAS & CAS

Ultimamente sono entrato in contatto con queste due entità (incontri ravvicinati del terzo tipo davvero). Due acronimi per due entità molto diverse:

  • CAS nel senso di Central Authentication Service, un software scritto in Java per la gestione centralizzata degli accessi protetti ad una rete di applicativi collegati via web. CAS fornisce cioè la possibilità di effettuare un accesso di tipo Single Sign On ad un insieme di applicazioni web anche diverse, basate ognuna anche su una fonte di autenticazione diversa (database, LDAP, etc): io mi autentico in una sola delle applicazioni (ad esempio un portale) e poi da qui posso accedere ad altri applicativi senza dover rifare la login. CAS è un progetto Open Source della comunità Jasig che offre tutta una serie di applicazioni (client) che consentono di interfacciare a CAS applicazioni scritte in linguaggi diversi (PHP, .NET)
  • CAS nel senso di Content Addressable Storage, file system nel quale gli oggetti di tipo file vengono identificati attraverso il loro contenuto anziché attraverso un metadato aggiuntivo (attraverso, ad esempio, il nome e il percorso della directory del file). Contenuto anziché posizione. Questo è un sistema che va bene per gli archivi, nei quali vi sono documenti che non sono più suscettibili di modifiche nella loro vita: il loro contenuto è costante nel tempo (si pensi all’esito di un’analisi del sangue), per cui è possibile estrarre una chiave univoca (detta indirizzo di contenuto o content address) in base al contenuto del file. L’algoritmo di calcolo della chiave dev’essere probabilisticamente robusto, nel senso che deve produrre chiavi diverse per file diversi e deve produrre chiavi uguali a partire da contenuti diversi con una probabilità zero. Inoltre il sistema deve avere un corredo di algoritmi per effettuare le ricerche. Algoritmi simili sono l’hash o il CRC.

150° anniversario dell’Unità d’Italia

150° Anniversario dell'Unità d'Italia

Simon Van Der Meer

Il 4 marzo scorso è scomparso Simon Van Der Meer, ingegnere tra le personalità più importanti nella storia del CERN di Ginevra.

Aveva vinto il premio Nobel 1984 assieme a Carlo Rubbia per gli esperimenti che avevano confermato l’esistenza delle particelle Z e W, i bosoni dell’interazione debole, e credo sia l’unico ingegnere ad essere stato insignito con un premio così importante nell’ambito della Fisica. Il suo contributo alla scoperta fu l’invenzione e la realizzazione del raffreddamento stocastico applicato all’acceleratore SPS (Super Proton Synchrotron), un metodo per stabilizzare i fasci di protoni e antiprotoni.

Il CERN gli ha dedicato un elogio nel sito istituzionale.

Nel sito http://nobelprize.org si trovano la lezione di Van Der Meer sul raffreddamento stocastico e la sua autobiografia.