martedì 29 luglio 2008

Find & Replace su più file

Eclipse ha una funzione di ricerca su tutto il workspace molto utile, sopratutto quando occorre fare sostituzioni di testo in tutti i sorgenti di un progetto (ad esempio per l'aggiornamento di un copyright o di una licenza.
La sotituzione è semplice: dal menù Search si selezione la voce Search e nella finestra di dialogo che compare si inserisce il testo da ricercare e l'eventuale pattern per i file da cercare (es. *.java).


Una volta completata la ricerca compare una nuova finestra di dialogo per l'immissione del testo di sotituzione, e il gioco è fatto.

Eclipse & PDT

Dovendo iniziare a gestire un progetto PHP, ho pensato di sfruttare tutta la potenza di Eclipse e di configurare l'ambiente con il PDT (PHP Development Tools); la cosa è stata tutt'altro che banale!
Ho scaricato e installato l'ultima versione di Eclipse, Ganymede, per poi richiedere al software updater di installare i PDT. In realtà per Ganymede è stato necessario scaricare l'integration build dei PDT, da scompattare e installare manualmente (vedere istruzioni qui). Fin qui comunque nessun problema particolare.
Per testare il tutto ho creato un nuovo progetto PHP e ho iniziato ad editare un nuovo file, ma subito una dialog di errore è apparsa lamentandosi per un Job name selection error. Mi è stato impossibile editare il file, poiché ad ogni lettera premuta la dialog di cui sopra compariva.
Con la coda fra le gambe ho quindi ripreso in mano la mia affidabile installazione di Eclipse Europa (che non avevo ancora rimosso) e ho installato la relativa versione dei PDT, questa volta completamente tramite il manager degli update di Eclipse. Ma ahimé, nonostante l'editazione dei file ora funzionasse senza problemi, l'outline risultava vuota e i salti a funzioni e definizioni di variabili (F3 e simili) non funzionavano.
Così mi sono rimboccato le maniche e ho ripreso a lavorare sulla versione Ganymede. Dopo parecchi tentativi, e i medesimi problemi di cui sopra, mi sono accorto che alla pagina che descrive le dipendenze dei PDT per Ganymede si parlava della versione 1.0 dei DLTK (Dynamic Languages ToolKit), guardacaso il package dal quale scaturiva la dialog di errore di cui sopra. Peccato che seguendo il link per scaricare la versione 1.0 dei DLTK non si approdava a nulla, così mi sono recato sulla pagina ufficiale del progetto, scaricando poi la versione 1.0 e installandola manualmente (scompattandola e copiandola nella radice dell'installazione di Eclipse). L'operazione ha avuto successo, e adesso i PDT girano con Ganymede!
I problemi comunque non erano finiti: l'esecuzione di un file PHP come pagina web falliva miseramente poiché non era configurato nessun server. Così sono dovuto andare nelle preferenze, alla voce PHP configurare un server su localhost (la mia macchina di sviluppo) e usare quello per lanciare un file PHP. Ma ancora non funzionava: giustamente Apache (il server Web in esecuzione sulla mia macchina) non trovava i file PHP poiché di essi non ne veniva fatto il deployment (cosa indicata nella configurazione di lancio di PHP). Ho aggirato il problema creando un link dalla root di Apache alla directory del progetto Eclipse, così da poter visualizzare i file PHP in Apache e poterli modificare in Eclipse.
Mi sarei comunque aspettato una installazione più semplice dei PDT (e ancora non ho configurato il debugger!) e anche l'utilizzo, di default, di un server web interno (in maniera simile a quello che avviene per Tomcat/Servlet).

giovedì 24 luglio 2008

Materiale nuovo

E' stato un periodo pieno di avvenimenti: mi è arrivato il materiale nuovo (una stabilizzazione Beiter completa e un tubo di Easton Navigator), e oltre a questo ho fatto i soliti allenamenti.
Ora il mio arco appare così:


Ebbene sì, ho anche comprato un cavalletto magnetico, dopotutto ho pensato che visto il valore dell'arco e della stabilizzazione è meglio non rovinarlo più appoggiandolo per terra.
Ho anche costruito qualche corda nuova, sbagliando di brutto le misure le prime volte. Ora comunque sto provando una 16 fili in fast-flight, ancora un po' corta (visto che il brace height è a 9.6) ma che spinge abbastanza bene. L'arco tutto sommata appare silenzioso e senza vibrazioni.

Manutenzione: pulizia del berger
Ho proceduto ad una semplice pulizia del bottone Beiter lungo (nero): l'ho pulito all'interno con un cotton-fioc imbevuto di alcool, poi ho lubrificato un po' il filetto esterno in modo che sia più semplice far scorrere l'anello di regolazione, e infine ho inserito un nuovo pistoncino e una molla medio-morbida. Userò questo bottone con il set di frecce nuove.


Io con l'arco faccio quello che voglio
Leggevo un vecchio numero di Arcieri (non trovo più quale), nel quale c'era una intervista al nuovo tecnico della Nazionale Senior Maschile, che dichiarava che durante i suoi allenamenti lui era arrivato ad un controllo tale che "...con l'arco facevo quello che volevo...". Ora non voglio sembrare irrispettoso, ma una persona che con l'arco fa quello che vuole, non dovrebbe semplicemente tirare invece che insegnare? Se fa quello che vuole, non dovrebbe stupire tutti con punteggi mozzafiato?

domenica 13 luglio 2008

Ubuntu & cupsys: not authorized

Installando un nuovo server Ubuntu ho notato come l'installazione del sistema di stampa CUPS (chiamato cupsys) abbia qualche problema. Selezionando infatti di installare il sistema di stampa durante la prima installazione del sistema, qualche cosa non va a buon fine, e il risultato è che ogni qual volta si cerca di mandare in stampa qualche cosa nei log di cups si trovano dei messaggi di tipo "Not authorized". La soluzione consiste nel reinstallare il sistema di stampa:

apt-get install --reinstall cupsys*

e a quel punto tutto riprende a funzionare regolarmente.

domenica 6 luglio 2008

Ricordi di Natale...

Ero piccolo quando alla televisione andava in onda questa pubblicità della Coca-Cola. Ricordo che a quel tempo facevamo l'albero di Natale in casa, e spesso mentre questo video scorreva sullo schermo, io andavo a rubare le monete di cioccolato appese!

venerdì 4 luglio 2008

SquidGuard: creare una lista di domini/siti bloccati

Se si utilizza squidGuard come redirector per squid, è possibile inserire una serie di domini e siti da bloccare (ridirezionare). Questo può risultare utile ad esempio per impedire sprechi di banda verso siti che offrono contenuti multimediali.
I passi da seguire sono semplici:
  1. entrare nella cartella /var/lib/squidguard/db/blacklists (o dove risiedono i file di blacklist), creare una cartella (ad esempio generic) e entrare in tale directory;
  2. creare un file di testo dal nome domains e al suo interno inserire, uno per riga, i domini e i siti da bloccare;
  3. lanciare il comando squidGuard -C all per la rigenerazione dei database (in questo caso tutti);
  4. cambiare i permessi della directory appena creata e dei suoi file assegnando utente e gruppo usati dal proxy server (nel mio caso proxy). Questo passaggio è fondamentale, altrimenti si vedrà morire squid inaspettatamente dopo alcuni secondi dal suo riavvio;
  5. riavviare squid.

giovedì 3 luglio 2008

AnzioWin - Telnet - Ubuntu

AnzioWin, un programma Telnet per la piattaforma Microsoft Windows, ha qualche problema nel collegamento a server Ubuntu (impostazioni di default), specialmente quando si utilizzano applicazioni che sfruttino le librerie ncurses.
La soluzione è quella di impostare il terminale AnzioWin in VT220, e di settare la variabile della connessione Ubuntu a xterm.

Ubuntu & rc.local

Una cosa molto carina delle distribuzioni Ubuntu è la presenza del file /etc/rc.local, al quale ero abituato dalle Red Hat e simili, ma del quale avevo imparato a fare a meno quando anni fa mi misi a usare SuSE. Il file in questione viene eseguito al termine del processo di boot, ed è quindi un buon posto in cui inserire dei comandi da eseguire a boot completato.
Una cosa curiosa da notare è che in Ubuntu esiste un servizio apposito per l'esecuzione di rc.local: /etc/init.d/rc.local, che supporta le opzioni start e stop. In sostanza il comando non fa altro che richiamare il proprio file /etc/rc.local come script shell, ma occorre che nessun comando al suo interno fallisca al fine della sua completa esecuzione.