30 luglio 2010

Su Apache, ODT, PDF e unoconv

Da tempo in ufficio si utilizza una applicazione web, da me scritta, per la creazione di fax per la richiesta di visite fiscali alle ASL. Sebbene l'idea di partenza fosse quella di utilizzare direttamente Hylafax per l'invio dei fax, alla fine, per problemi puramente burocratici (firma "manuale" da apporre al documento e mancanza di una linea telefonica da utilizzare verso l'esterno), si è optato per la generazione di un file PDF da far stampare all'utente.
Tutto il servizio è basato su di una macchina virtuale GNU/Linux Mandriva 2009.1 su cui gira l'applicazione Rails per mezzo di Mongrel e Apache: ciò perché sussisteva già un'altra applicazione Rails che girava appoggiandosi al solo Mongrel. Impostando Apache in modalità revese proxy ero riuscito a far funzionare entrambe le applicazioni web come se fossero una sola.La generazione dei file avveniva in maniera alquanto macchinosa: si partiva da un modello in formato RTF, che veniva "riempito" con i dati presi da un database e convertito in PDF (tramite una antidiluviana applicazione, ted); il file risultante, a sua volta, veniva sovrapposto ad un altro contenente l'intestazione ed il piè di pagina con il necessario logo (tramite il mitico pdftk). Inoltre, per non appesantire troppo la macchina virtuale, ciascuna applicazione web girava in una singola istanza di Mongrel, invece che in cluster.
Morale della favola, vuoi per problemi di virtualizzazione (VMware), vuoi per problemi di carico su Mongrel, a volte al posto del PDF richiesto veniva mostrato un poco simpatico 504 Gateway Timeout.
Per risolvere il problema avevo pensato dunque di fare un doppio passaggio:
  • utilizzare Phusion Passenger al posto di Mongrel per le applicazione web;
  • sostituire i macchinosi script per la creazione del PDF con documatic (vedi pure su github per una versione più aggiornata) e unoconv.
Phusion Passenger
il passaggio a Phusion Passenger è stato alquanto semplice: è bastato installare la gem passenger (ora alla versione 2.2.11) e seguire le istruzioni per la corretta installazione dell'applicazione web.
Passaggio a Documatic ed unoconvL'utilizzo di Documatic è stato un po' più problematico per la fase di installazione dell'applicazione. Come prima, installiamo la gem documatic e assicuriamoci che sulla macchina server sia installato OpenOffice (attenzione, potrebbe essere necessario installare anche un desktop manager!). Predisponiamo anche unoconv ad essere eseguito ponendolo nella cartella /usr/bin od equivalente, purché sia nel path di root.
A questo punto il problema è che unoconv si rifiuta di funzionare, sebbene usandolo stand alone tutto sia a posto! Per risolverlo, è necessario un passaggio che ho scovato sul blog Blog of a LAMP Developer based near Guildford, Surrey, scorrendo il post Converting a Doc to PDF, txt or HTML using PHP and Linux, scritto per l'utilizzo di unoconv con PHP, si scopre che bisogna creare una home anche per l'utente apache:
[root@localhost home]# mkdir /home/apache
[root@localhost home]#chown apache:apache /home/apache
[root@localhost home]#usermod -d /home/apache apache
[root@localhost home]#chmd 755 /home/apache

In questo modo il funzionamento è assicurato.
Quello che non sono riuscito a fare, è predisporre un istanza di unoconv come listener e lanciare dalla applicazione web la connessione a quest'ultimo, in quanto dopo un po' di tempo (variabile di volta in volta) il listener sembrava fermarsi da solo, con unoconv che ti avvisava di andare in funzione in modalità stand-alone.

Powered by ScribeFire.


Continua...

20 aprile 2010

urpmi: downgrade di pacchetti.

A seguito di un aggiornamento di KDE che non mi aveva del tutto soddisfatto (per la cronaca, da 4.3.2 a 4.4.2, non ancora ufficialmente supportata in Mandriva) , mi sono trovato nella condizione di di dover fare un downgrade alla precedente versione. Ovviamente non è bastato eliminare le fonti da cui avevo tratto l'aggiornamento, in quanto il successivo
# urpmi task-kde4
mi rispondeva dicendo che avevo già installato un pacchetto più aggiornato di quello presente nel repository :-(.

Neanche le maniere dure sono bastate:
# urpme task-kde4
# urpmi task-kde4
ha sì reinstallato il buon vecchio KDE 4.3.2, ma non tutte le dipendenze sono state risolte correttamente. Cosicché parecchi pacchetti erano rimasti ancora "troppo" aggiornati!
Per reinstallarli (ad uno ad uno!) mentre durate l'uso ne scovavo qualcuno, diventava impossibile eliminarli tramite urpme poiché ogni volta si rischiava di dover cancellare tutto KDE con successiva reistallazione; pura follia.
Dopo un attimo di spavento, ho ravanato un po' fra Google e Mandrivaitalia.org
, alla ricerca di un metodo per effettuare un downgrade correo di ciascun singolo pacchetto. Alla fine la soluzione trovata e testata è:
# rpm -e --nodeps <nomepacchetto>
# urpmi <nomepacchetto>
per ciascun pacchetto da di cui effettuare il downgrade.


Continua...

23 marzo 2010

Ruby Best Practices di Gregory Brown

Dal creatore e principale manutentore di Prawn, ecco un interessante libro sulle "best practices" in Ruby, derivanti dal suo lavoro con questo linguaggio.
La versione versione open source dell'intero libro è disponibile all'interno del post Full Book Now Available For Free! sul suo blog.
L'indirizzo da cui prelevare il libro è http://sandal.github.com/rbp-book/pdfs/rbp_1-0.pdf, ma penso davvero che possa essere interessante visitare il blog di Gregory.

Buona lettura!

Powered by ScribeFire.


Continua...

19 febbraio 2010

CUPS 1.4.1 ed un baco malefico risolto

Con CUPS 1.4.1 ho avuto modo di imbattermi in un malefico bug con le stampanti condivise con SaMBa.
Il baco consiste nella richiesta continua delle credenziali per l'accesso alla stampante, anche se si è configurato correttamente l'accesso ad un dominio Windows da GNU/Linux.
Questo baco, molto sottile consiste nel fatto che CUPS 1.4.1 imposta (e reimposta dopo ogni stampa), nel file /etc/cups/printers.conf  l'attributo
AuthInfoRequired username,password

La soluzione al problema consiste nel commentare nel file tal riga e nel rendere tale file non modificabile: a tal fine non basta usare
[me@mybox]# chmod a-x /etc/cups/printers.conf
, in quanto CUPS riesce a reimpostare anche tali permessi, ma usare il meno noto (almeno a me)
[me@mybox]# chattr -i /etc/cups/printers.conf

Ecco di seguito tutto quello che c'è da fare:
[me@mybox]$ su
Password:
[me@mybox]# chattr -i /etc/cups/printers.conf
[me@mybox]# /etc/init.d/cups stop
[me@mybox]# vim -i /etc/cups/printers.conf

editare il file, ad es.
<defaultprinter theprinter="">
#AuthInfoRequired username,password
...
# eliminare la password e l'username quando il baco di CUPS 1.4.1 sparira'
DeviceURI smb://me:mypwd@MYDOMAIN/windoze/theprinter
...
</defaultprinter>

e poi
[me@mybox]# chattr +i /etc/cups/printers.conf
[me@mybox]# /etc/init.d/cups start

Powered by ScribeFire.

Continua...

20 gennaio 2010

Ottenere la documentazione di classi e metodi di Ruby da command line

Poiché uso spesso la documentazione on-line di Ruby e Rails, invece di quella da riga di comando, scrivo questo post come promemoria personale.
Per ottenere la documentazione di Ruby (e quindi anche di Rails e di altre Gem installate in locale) prodotta da rdoc bisogna, stranamente, utilizzare il comando ri, così:
[me@mypc]$ri String

In questo modo otterremo la documentazione prodotta tramite rdoc per la classe String.
Ricordo, inoltre, che il parametro del comando è case-sensitive, per cui c'è differenza fra
[me@mypc]$ri String
e
[me@mypc]$ri string

(in particolare, in Ruby con la maiuscola si fa riferimento ad una classe e con la minuscola ad un metodo, e così assume anche ri/rdoc.



Powered by ScribeFire.


Continua...

7 maggio 2009

VMWare Server 2.0: (strana) console failure con guest Windows 2003

Per un lungo periodo ho sbattuto la testa su di uno strano problema relativo alla mancata apertura della console di VMWare Server 2.0 su di un guest Windows 2003.

La macchina host era una Mandriva 2009.0 su cui, oltre al guest di cui sopra è presente anche un altro guest Mandriva 2009.0: su quest'ultima la console si apriva sempre senza alcun problema, mentre con la prima, a seconda della risoluzione video impostata in Windows 2003, ottenevo:
  • schermata nera, senza alcuna possibilità di vedere alcunché all'interno;
  • errore di segmentation fault della console al suo avvio.
Con un po' di sbattimenti riuscivo ad ovviare al problema, ad esempio eseguendo il log-in su di una macchina remota Windows e da lì usando VMware Infrastructure Web Access (da cui stranovviamente il problema non si riproduceva).
Ma dopo un lungo cercare, riesco a trovare un interessante articolo sul blog di Holger Paschke proprio relativo al mio caso in esame (VMWare Server 2.0 Console Failure).
Nel commento seguente al post, Holger puntualizza che la soluzione potrebbe consistere nell'impostare anche solamente la variabile di ambiente VMWARE_USE_SHIPPED_GTK=yes prima di lanciare firefox.
Nonostante io usi KDE e QT, una veloce prova conferma che la cura suggerita è quella valida. Ciò nonostante, prima di inserire in .bash_profile l'istruzione export VMWARE_USE_SHIPPED_GTK=yes mi balena un idea!
Provo ad installare gtk-qt-engine e... *snap*, il problema si risolve automagicamente!
Ovviamente se provate a cambiare gli stili GTK e selezionate QT o QTCurve non aspettatevi che quest'ultima soluzione da sola funzioni!

Powered by ScribeFire.


Continua...

4 dicembre 2008

NETIZEN CLANDESTINO, il tuo sito è clandestino. Sciopero e lutto di tutta la rete Internet italiana.

vai al gruppo su FaceBook Contro il DDL anti-Blog presente alla Camera

Sembra paradossale, ma è la realtá.
Anche il tuo sito/blog può essere oscurato e tutti noi come Carlo Ruta possiamo essere condannati per stampa clandestina.
Infatti esiste una legge (N° 62 del 7/3/2001) che dice a chiare lettere che in Italia siamo tutti in situazione di illegalità.
E tu cosa vuoi fare? Aspettare che ti arrivi una denuncia perché hai espresso le tue idee?

Continua...