Informatica spiccia...
Cossa nasse?

Come forse avrete notato è sparito l'ultimo post. No, non ho già venduto la casa, è che sabato sono stato colto da un pericoloso desiderio di aggiornare il blog.
Tale istinto percorre le sinapsi di ogni ottuso programmatore, ma sarebbe meglio che non lo facesse.
L'upgrade infatti è andato malissimo, per fortuna avevo un backup completo che sono riuscito a mettere in linea domenica mattina. L'unica cosa che è andata persa è l'ultimo post.
Per chi fosse interessato, il problema che si è verificato è che non si può fare l'upgrade da drupal 4.7.4 direttamente a drupal 6.0, si deve prima passare per un qualche rilascio della versione 5.
Non tutto il male viene per nuocere. Mi sono studiato un metodo un po' meno invasivo per l'aggiornamento quindi nei prossimi giorni farò la migrazione e, udite udite, cambierò anche il tema!!
Stay tuned!
- gtrev's blog
- Aggiungi un commento
- 907 reads
Blocco del traffico

In questi giorni di blocco del traffico da parte dei camionisti, riflettevo sul fatto che noi informatici siamo proprio una categoria di mammalucchi.
A noi basterebbe stare seduti sulle nostre sedie, aprire una bash, collegarci al router e mettere un bel
deny all
per bloccare tutto il traffico TCP.
Sapete che botto?
- gtrev's blog
- 7 comments
- 1324 reads
Archeologia informatica

Ieri mi è capitato tra le mani un tracciato record come quello che vedete nell'immagine, solo molto più complicato.
Il male è ancora tra noi.
- gtrev's blog
- 3 comments
- 1126 reads
Arriva gutsy
Manca poco ormai al
- gtrev's blog
- 14 comments
- 1178 reads
Parancoe: i controller
Scrivo qui un breve tutorial su come definire un controller per Parancoe. A breve una versione in inglese sul sito del progetto (Lucio te lo prometto ;) )
Update 2007-10-02 12:55:00: If you want the English version of this tutorial follow this link
Definizione
Per definire un controller in Parancoe i passi da compiere sono due:
- scrivere la classe del controller
- definire in parancoe-servlet qual è il package nel quale il controller si trova.
Supponiamo di dover creare un controller che gestisca le chiamate alle url del tipo "/admin/*.html". Definiamo la classe AdminController in questo modo:
package org.parancoe.basicWebApp.controllers;
public abstract class AdminController extends BaseMultiActionController {
...
}BaseMultiActionController è una classe di Parancoe che estende MultiActionController aggiungendo utilità per il logging e la gestione degli errori.
Una volta definito il controller, per agganciarlo al corretto url è sufficiente mettere l'annotazione @UrlMapping("mia_url") in questo modo:
package org.parancoe.basicWebApp.controllers;
@UrlMapping("/admin/*.html")
public abstract class AdminController extends BaseMultiActionController {
...
}Autodiscovery
A questo punto è sufficiente inserire la seguente riga nel file parancoe-servlet.xml:
<define-controllers
basePackage="org.parancoe.basicWebApp.controllers"
parent="abstractController" />Parancoe si occuperà di andare ad analizzare i controller definiti in basePackage e a caricarli nel contesto di Spring. Inoltre registrerà il mapping definito dall'annotazione.
Le annotazioni
Le annotazioni che si possono utilizzare per definire il mapping sono tre:
- @UrlMapping: riceve una stringa che contiene la definizione di un'url;
- @MultiUrlMapping: premette di definire più mapping per lo stesso controller
- @DefaultUrlMapping: questa annotazione non prevede alcun parametro e serve ad indicare a Parancoe di usare il metodo di default per la definizione del mapping.
Per quanto riguarda l'ultima annotazione, il metodo di default definisce il mapping a partire dal nome del controller: così AdminController mapperà su /admin/*.html, mentre MioFantasticoController su /mio/fantastico/*.html.
(e adesso forse è più chiaro a cosa servisse il metodo uncamelize che avevo descritto qualche tempo fa).
Alcune note finali
E' ancora possibile definire i propri controller all'interno del file parancoe-servlet.xml.
Si deve però avere l'accortezza di usare come id il nome completamente qualificato del controller, così da sovrascrivere la definizione costruita dall'autodiscovery.
Happy parancoing!
- gtrev's blog
- Aggiungi un commento
- Read more
- 1088 reads
Spezzare una parola in CamelCase

Il camelcase come ci ricorda wikipedia:
[...] è la pratica di scrivere parole composte o frasi unendo tutte le parole tra loro, ma lasciando le loro iniziali maiuscole. Il nome (letteralmente "carattere a cammello") deriva dai "salti" all'interno di una parola, che fanno venire in mente le gobbe di un cammello. [...]
Il camel case è molto usato dai programmatori Java perché è la convenzione ufficiale di Sun per la scrittura dei nomi di classe e di variabile.
Detto questo, può capitare di voler prendere una parola in camel case e separarla nelle sue componenti. Confesso di aver cercato un po' su internet ma di non aver trovato del codice già pronto, quindi ecco di seguito il metodo che mi sono
scritto.
L'idea è semplice:
prendo gli indici di dove sono le lettere maiuscole e spezzo le parole secondo questi indici.
Per fare questo mi viene in aiuto il pattern matching e precisamente il pattern che rappresenta le lettere maiuscole nel character set unicode, cioè \p{Lu}.
Il codice è qua di seguito:
List<Integer> idxList = new ArrayList<Integer>();
//\p{Lu} is the unicode pattern for capital letters
Pattern p = Pattern.compile("\\p{Lu}");
Matcher m = p.matcher(camelString);
//find all occurrences of an uppercase letter and
//put their position in a list
while(m.find()){
idxList.add(m.start());
}
Una volta ottenute le posizioni è sufficiente usare il metodo substring sulla stringa considerata, avendo cura di usare gli indici appena ricavati.
Allego al post la classe completa.
- gtrev's blog
- 8 comments
- Read more
- 1656 reads
Java and compiz issue reprise

Do you remember of the problems between java and compiz that I talked about in a recent post?
I thought I solved them by using a recent version of the jdk (precisely 1.6.0_02 build 05) but I was wrong.
It seems that some weird behaviors are still present, for example when netbeans displays a JDialog.
I found another bug for this problem, which is still work in progress, precisely 6509038.
A german user commented on the bug that this issue is still present in jdk6 update 2 but not in jdk7. Yes you read it right.
jdk7 is still under development, but developers produce weekly snapshots at this site.
So I downloaded and installed the linux version (amd64 of course), configured netbeans to use this jdk and magically everything started working fine!
So if you don't fear of using a jdk under development and you are bored of weird issues on netbeans GUI, give jdk7 a try!
By the way, I'm using netbeans 6.0M10 and jdk7 which are both development versions and they are pretty stable! Kudos to both development teams!
- gtrev's blog
- Aggiungi un commento
- 996 reads



9 weeks 2 days ago
9 weeks 2 days ago
9 weeks 3 days ago
9 weeks 4 days ago
14 weeks 17 hours ago
19 weeks 2 days ago
19 weeks 2 days ago
19 weeks 2 days ago
21 weeks 1 giorno ago
21 weeks 1 giorno ago