Estensione HTTP per PHP 5

Dovevo usare questa libreria per eseguire un logout da remoto.

la libreria http ha l’utile funzione http_get() che faceva al caso mio, ma non avevo la libreria installata nel server. Da qui l’errore:

Fatal error: Call to undefined function http_get()

Passaggi da compiere per una distro Ubuntu 10.04 come root:

# apt-get install libcurl3-openssl-dev
# pecl install pecl_http

Output utile:

...
Build complete.
Don't forget to run 'make test'.
...
install ok: channel://pecl.php.net/pecl_http-1.7.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=http.so" to php.ini

Aggiungere, come suggerito, la riga extension=http.so al file php.ini.

Alla fine riavviare il servizio Apache:

# service apache2 restart

Per controllare che le esenzioni siano caricate, creare una pagina info.php contenente

<?php
   phpinfo();
?>

puntare su di essa il browser e controllare che ci sia CURL e HTTP.

Link utile.

Sfiati per reattori nucleari

Dal The New York Times di oggi, mecoledì 18 maggio 2011

I sistemi di sfogo che, i funzionari americani hanno detto, impedirebbero devastanti
esplosioni in impianti nucleari negli Stati Uniti, sono stati messi
alla prova in Giappone e non hanno funzionato.

La cosa che mi fa maggiormente pensare è riassunta qui:

American officials had said early on that reactors in the United States would be safe from such disasters because they were equipped with new, stronger venting systems. But Tokyo Electric Power Company, which runs the plant, now says that Fukushima Daiichi had installed the same vents years ago.

Leggi il seguito

JCAPS

Sun Solris JCAPS

Ancora un’altra sigla…

(Traggo da http://it.toolbox.com/wiki/index.php/JCAPS)

JCAPS (Java Composite Application Platform Suite) è una suite di integrazione di applicazioni di Sun Microsystem che fornisce una piattaforma unificata, completa e basata su standard per sviluppare, installare, gestire e controllare una SOA (Architettura Orientata ai Servizi).

L’adozione di una suite unificata e completa facilita l’azienda nell’integrazione di applicazioni frutto di investimenti esistenti, nonché nella fornitura di nuovi servizi con un minore costo totale di realizzazione e gestione.

Caratteristiche di JCAPS

JCAPS consente all’azienda di costruire un’architettura di business flessibile in grado di rispondere alle iniziative che nascono dalla propria attività in modo tempestivo, razionalizzando e semplificando la gestione dei processi aziendali.

JCAPS offre una visione integrata dei dati attraverso i sistemi, integrando i dati dei clienti per creare un’unica e comune vista sui dati che si collega ai sistemi di back-end ed estende il campo di applicazione dagli archivi fisici a punti di presenza online.

In tutte le aziende in cui lavoro come consulente ci sono decine di progetti che richiedono ad applicativi di scambiarsi dati, cioè di realizzare una cooperazione o integrazione applicativa che sia un sollievo all’attività manuale di prendere i dati da una applicazione e inviarli ad un’altra. È per questo motivo che si integrano le applicazioni. Ovviamente ognuno all’inizio sviluppava un po’ come gli pareva la struttura dei dati ed il modo di comunicarli con gli operatori (maschere personalizzate per l’input, report personalizzati per l’output).

Con l’avvento di XML e dei web service si è cominciato ad automatizzare lo scambio dati tra applicazioni anche situate in posti geograficamente distanti ma collegate tra loro attraverso internet e, in particolare, che fanno uso del protocollo HTTP.

Molti web service li ho sviluppati lavorando come il sarto, su misura: tu mi dici di che dati hai bisogno e io mi preoccupo di andarli a prendere dove sono e restituirteli nel modo che vuoi tu.

JCAPS consente di fare queste cose in modo standard.

SAT

Mi sono per caso imbattuto in una sigla che nasconde un problema formidabile dall’aspetto innocuo: data una funzione booleana (guadagno = lavoro o gioco a Win For Life) determinare se esiste una combinazione (vero, falso) delle variabili che rende vera la funzione.

E’ questo il problema della soddisfacibilità (SATisfiability) di una espressione. Problema arduo più di quanto avessi immaginato: è addirittura un problema NP-completo, come il problema del commesso viaggiatore.

Questo è il sito del Journal On Satisfability Boolean Modeling And Computation in cui è possibile farsi un’idea.

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)