MediaWiki e il modulo math

Ho installato in locale, in jsbach, MediaWiki per gestire la mia knowledge base, sempre molto limitata ma ciononostante, incredibilmente, fuori controllo.

Una cosa che subito ho fatto, a causa della mia passione per la Matematica, è l’installazione del modulo che permette di scrivere espressioni matematiche all’interno del Wiki utilizzando il potentissimo e caro vecchio LateX.

In breve:

  • prima di configurare MediaWiki, vanno installati LaTeX, dvipng, texvc: per quest’ultimo middleware, occorre seguire il manuale sull’installazione dell’estensione Math.
  • occorre poi rendere scrivibili dall’utente sotto cui gira Apache le directory mediawiki/images/tmp e mediawiki/images/math

Fare riferimento a questa pagina qui: Manuale Mediawiki

Apache 2: integrazione tra MirthConnect e end point dei webservices INPS

Sto lavorando all’integrazione tra due enti pubblici per la notifica punto – punto di avvio di una procedura. Qui di seguito riassumo un how to che mi è servito a configurare Apache e Mirth in modo tale che quest’ultimo, girando in locale, scriva i risultati di una interrogazione del database su un end-point pubblico.

Il problema che risolve è: raggiungere l’end-point con il protocollo HTTPS quando, nella versione Open, Mirth ha soltanto un canale di scrittura su HTTP.

Realizzo questo funzionamento usando i reverse Proxy di Apache.

Forward e Reverse Proxy

Apache può essere configurato sia in modalità proxy diretta (o in avanti) che inversa (o all’indietro). Per leggere l’articolo completo, fare riferimento al sito Apache.

Forward Proxy

Un proxy diretto (ordinario, o in avanti) è un server intermedio che si trova tra il client e il server di origine. Al fine di ottenere contenuti dal server di origine, il client invia una richiesta al proxy server usando la denominazione di origine come obiettivo e il proxy richiede poi il contenuto dal server di origine e lo restituisce al client. Il client deve essere appositamente configurato per utilizzare il proxy in avanti per accedere ad altri siti.

Un utilizzo tipico di un proxy in avanti è quello di fornire accesso a Internet a client interni che altrimenti sarebbero individualmente bloccati da un firewall.

Il proxy in avanti può anche utilizzare la cache (grazie al modulo aggiuntivo di Apache mod_cache) per ridurre l’utilizzo della rete. Il proxy in avanti si attiva usando la direttiva ProxyRequests. Poiché i proxy diretti consentono ai client di accedere a siti arbitrari sul server nascondendo la loro vera origine[1], è essenziale che voi assicuriate il vostro server in modo che solo i client autorizzati possano accedere al proxy prima di effettuare un proxy in avanti.

Reverse Proxy

Un reverse proxy, al contrario, appare al client come un web server normale. Nessuna configurazione speciale è necessaria sul client. Il client effettua richieste ordinarie per i contenuti in spazio-nomi del reverse proxy. Il reverse proxy decide dove inviare tali richieste, e restituisce il contenuto come se fosse l’origine. Un utilizzo tipico di un proxy inverso è quello di fornire accesso a Internet agli utenti di un server che si trova dietro un firewall.

Un reverse proxy può essere utilizzato anche per bilanciare il carico tra più server back-end, o per fornire la cache per un server di back-end più lento.

Semplici Esempi

Gli esempi che seguono rappresentano solo l’idea di fondo per aiutarvi a partire. Leggete la documentazione per le singole direttive. Inoltre, se volete usare la cache, consultate la documentazione di mod_cache.

Forward Proxy

  ProxyRequests On
  ProxyVia On

  Order deny,allow
  Deny from all
  Allow from internal.example.com

Reverse Proxy

ProxyRequests Off
Order deny,allow
Allow from all      

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

Tentativi per capire

Ho abilitato i moduli per il ReverseProxy; per fare ciò si aggiunge ai mods-enabled i moduli che si desiderano:

root@jsbach:/etc/apache2# cd mods-enabled/
root@jsbach:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.conf .
root@jsbach:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.load .

Ora, avevo la possibilità di intervenire nel file proxy.load per configurare, ma l’ho fatto in conf.d; infatti, in /etc/apache2/apache2.conf c’è la riga:

# Include generic snippets of statements
Include conf.d/

che include nel file di configurazione tutti i file sotto conf.d. Io ho creato un file rproxy.conf:

# prova reverse proxy
Order deny,allow    Allow from all
ProxyPass /inps https://blabla.it/TCW/services/InvioCertificato
ProxyPassReverse /inps https://blabla.it/TCW/services/InvioCertificato

Occorre riavviare Apache:

# apache2ctl configtest
Syntax OK
# apache2ctl restart

Problema

Richiamando la pagina http://jsbach/inps ho Errore 500. Nel file /var/log/apache2/error.log si legge

[Mon Jun 20 16:53:39 2011] [warn] proxy: No protocol handler was valid for the URL /inps. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

Non c’è un protocollo disponibile per trattare la richiesta. In effetti, Apache deve reindirizzare la richiesta verso una connessione HTTPS. A questo punto è sufficiente abilitare il motore SSL; quindi, riassumendo, il file di configurazione è il seguente:

# prova reverse proxy
Order deny,allow
Allow from all
SSLProxyEngine On
ProxyPass /inps https://blabla.it/TCW/services/InvioCertificato
ProxyPassReverse /inps https://blabla.it/TCW/services/InvioCertificato

Il risultato è illustrato in figura:

Proxy inverso

Mirthconnect

Ho avuto un problema nell’avvio di Mirth (www.mirthcorp.com) versione 1.8, che è lo stesso documentato qui.

Per risolverlo, aprire (sono sempre sulla mia Ubuntu 10.04) Sistema > Preferenze > Sun Java 6 Policy Tool

Selezionare Impostazioni di rete > Connessione diretta come illustrato:

Pannello di COntrollo Java 6

Schermata-Impostazioni di reteDopodiché puntare il browser a http://localhost:8080/, Cliccare sul pulsante ed autenticarsi. Tutto OK.

Per Windows compiere le stesse operazioni sulla Consolle Java 6.

Nota: l’installazione non ha nemmeno inizio se si usa OpenJDK anziché SunJDK.

Ancora acronimi

Un utile strumento per domare la belva:

https://www.acrofinder.net/

Onda o particella?

Solo un paio di annotazioni nel diario.

Un’interessante cartone animato per illustrare il dualismo à la De Broglie delle particelle quantistiche: http://www.youtube.com/watch?v=JiRg6gC1WhM

Sto guardando due cose in questo periodo:

  • MediaWiki (il free software – anzi, come dicono loro, il free software open source – usato da Wikipedia): software per la creazione dei Wiki veramente potente e flessibile (una delle cose divertenti è configurarlo perché lavori con LaTeX). In particolare ho dovuto confrontare alcuni software che gestiscono Wiki: quello di Alfresco Share e quello di Liferay. Ho trovato questi due strumenti molto più grezzi e molto meno configurabili di WikiMedia; l’unico plus “out of the box” è la fruibilità di un editor WYSIWYG, che peraltro è possibile integrare in MediaWiki come estensione (con FCKEditor, ad esempio). Personalmente, poi, trovo migliore il non usarlo.
  • uno sguardo più approfondito sul mondo dei web services (SOAP e WSDL, assieme al software Mirth che consente l’interoperabilità tra applicazioni cliniche, ma tra applicazioni in generale).

Skype

Da qualche giorno chi usa Skype, come me, si sarà imbattuto in un fastidioso crash del client all’avvio.

Riporto qui i passi fondamentali per rimediare, come indicati da Skype:

  • Windows
    Chiudere Skype ed assicurarsi di aver chiuso del tutto il client. Cercare la cartella \appdata\skype e cancellare il file shared.xml. Riavviare Skype.
  • Mac OS X
    Chiudere Skype. Cercare la cartella ~/Library/Application Support/Skype/ e cancellare il file shared.xml. Riavviare Skype.
  • Linux
    Chiudere Skype. Identificare la cartella /home/YourLinuxUserName/.Skype e cancellare il file shared.xml. Riavviare Skype.

Ho provato io stesso (l’opzione Linux) e Skype si è riavviato correttamente.

Fonte: (Giacomo Dotta) Webnews

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.