Programmatically update XML attributes via XmlDocument and XmlNodeList.Nodes

The following posts illustrated how to programmatically update XML Attributes contained into a huge XML file. Technically the post give a sample usage of XmlDocument and XmlNodeList.SelectNodes ;)

Add a custom syscall to the linux kernel

Hi all,

back from oblivion for a new post.

This is mostly a note for me than something new. I found some really good guides on how to add a new syscall to the linux kernel, but they’re all outdated in a way or another, so I decided to write a post to remind me how to do it.

Prerequisites:

  • a 32bit linux installation of your favorite distro
  • gcc, make, ncurses: the usual stuff to build your custom kernel

First: we need kernel sources.

This guide is based on the latest kernel I have installed on my archlinux box, that is linux 2.6.39.

You can wget it like this:

wget -O http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.1.tar.bz2

So now we can just expand it with the good old

tar xzf linux-2.6.39.1.tar.bz2

Ok now we can start editing files:

We can insert our syscall in an existing file or creating a new one. I decided to create a new file with my custom syscalls so this guide will take this approach.

So we start by creating our syscall file:

cd linux-2.6.39

vim kernel/omg.c

In our newly created source file we’ll insert this code (note that this is a skeleton for a working syscall):

/* adding omg syscall */
#include <linux/kernel.h>
#include <linux/linkage.h>

asmlinkage int sys_omg(){
	printk(KERN_EMERG "OMGWTFBBQ!!11\n");
	return 0;
}

So we need two includes: linux/kernel to use the printk and linux/linkage to use the asmlinkage tag,
used basically to tell the compiler that we want all the parameters to be passed on the stack.
Now we have to link it to the rest of the kernel
Step 1- let’s add it to the Makefile

vim kernel/Makefile

In the first lines we find a list of <filename>.o, one for each source file located inside the current folder, this is the list of the object files to be compiled.
We have to add our file to this list by adding omg.o to the end of the list, just after “jump_label.o”
Step 2- let’s add it to the syscall lists.

vim arch/x86/include/asm/unistd_32.h

Somewhere around line 352 we see the end of the syscall list.
We can add our syscall to the list like this:

#define __NR_omg		345

and then we can increment the syscall number 4 lines below to 346.
Now we have to edit

vim arch/x86/include/asm/syscalls.h

Around line 45 we can find the X86_32 only section of the file. We can insert our syscall prototype on the line below the #ifdef CONFIG_X86_32 line by adding

asmlinkage int sys_omg();

Last but not least we have to add it to the syscall_table_32.S file:

vim arch/x86/kernel/syscall_table_32.S

We move to the end of the file and we add

 .long sys_omg /* 345 */

Ok. Now we can build again our kernel and we should have our new syscall waiting to be used :)
How to test it? Let’s build a small C program to invoke it!

#include <sys/syscall.h>
#include <unistd.h>
#include <stdio.h>

#define __NR_omg        345 

int omg() {
   return (int) syscall(__NR_omg);
};

main () {
   printf("The return code from the omg system call is %d\n", omg());
}

Build it and launch it. After that if you launch

dmesg | tail

You should see our custom message.
P.s. This guide is almost copied from this emuboy post, with only some modifications, kudos to him :)


Prova post da telefono

Image posted by MobyPicture.com
- Posted using MobyPicture.com

MacVim: la distribuzione janus

Un altro post su Vim, devo dire che più il tempo passa più mi rendo conto di quanto sia ganzo, oltre che gratis, anzi ancora di più, fa addirittura del bene!

Ma veniamo al dunque: recentemente sono tornato ad usare il buon vecchio MacOSX e quindi mi sono deciso a provare janus, una vera e propria distribuzione Vim.

Con distribuzione, in questo caso, intendo una raccolta di script e plugin per Vim, installabili ed aggiornabili in modo semplice e veloce.

Il tutto integrato e pre-configurato e ben integrato con i keybinding di MacVim. Questo non significa che non sia usabile al 90% anche su una normale distro Linux, c’è solo da ritoccare qualcuno dei keybinding ed è perfetto (ad esempio quello assegnato al plugin Command-T.

Installarlo è semplicissimo, a patto che abbiate git, ruby e rake installati sul vostro sistema.

A quel punto vi basterà lanciare

git clone git://github.com/carlhuda/janus.git ~/.vim
cd ~/.vim
rake

Al resto penserà lo script.

Per aggiornarlo vi basterà ripetere gli ultimi due step: entrare nella directory  .vim e lanciare

rake

I plugin più utili? Beh il già citato Command-T è fantastico, permette di trovare il file che si vuole editare in un attimo.

L’altro plugin che uso più spesso in realtà l’ho aggiunto io a mano, e lo potete trovare qui.

Permette di ricercare all’interno di un file o di una cartella, integrandosi con l’utilissimo NERD_Tree.

E’ necessario anche installare ack, se usate brew (cosa che vi consiglio), vi basterà un semplice

brew install ack

Infine basterà scaricare lo script in

~/.vim/plugin/

e il gioco è fatto. Da dentro il NERD_tree potrete posizionarvi su una qualsiasi voce, che sia una cartella o un file, premere ‘m’, poi scegliere ‘s’ ed avrete la possibilità di effettuare una ricerca.

I risultati vi verranno mostrati in un buffer dedicato, fantastico!


Meanwhile in the Netherlands

Cosa mi è piaciuto dell’Olanda:

  • Praticamente tutte le strade hanno le corsie per le biciclette ai lati. Una per senso di marcia. Anche nelle rotonde.
  • I ciclisti hanno una propria segnaletica stradale, dei propri percorsi consigliati, i propri “turni” al semaforo.
  • Non ci sono cavi volanti o antenne sui tetti (rarissime le parabole). E’ tutto interrato.
  • L’acqua del rubinetto non ha sapore ed è indistinguibile da quella in bottiglia.
  • Le scuole sono belle, nuove, pulite, attrezzate, con le smartboard in ogni aula, con tanti laboratori e tanti computer a disposizione degli studenti.
  • Non esistono i bidelli. Sono gli studenti e gli insegnanti che puliscono, INSIEME, le aule dopo le lezioni.
  • Conseguentemente a quanto accade sopra, non ci sono scritte sui muri o sui banchi.
  • Le autostrade sono gratuite.
  • Le persone sono MOLTO più open-minded, complice anche il distacco dalla Chiesa.
  • Non ci sono politici che vanno a letto con le minorenni. O almeno, io non li ho trovati.
  • TUTTI (non ne ho trovato neanche uno, dal contadino al cassiere del supermercato al professore di chimica) parlano Inglese.
  • Non esistono programmi doppiati in Olandese. Audio originale, sottotitoli  tradotti e via.
  • Se sei omosessuale puoi passeggiare tranquillamente senza essere aggredito.
  • Le coppie omosessuali hanno gli stessi diritti delle coppie etero.
  • Le persone ti trattano bene anche se hai un passaporto italiano in tasca (specialmente dopo che scoprono che parli Inglese decentemente).
  • C’è molta più sorveglianza per quanto riguarda il consumo di alcool, le feste e le discoteche. Mi hanno chiesto un documento ogni volta che sono entrato (lo chiedono anche quando uno ordina da bere, ma sono astemio e con me non funziona). C’è un orario preciso di chiusura (mai più tardi delle due, e di locali ne ho girati parecchi, forse nelle grandi città è diverso ma non saprei dire), allo scattare del quale tutti escono disciplinatamente. Si spengono le luci e via.
  • Non ci sono prostitute ai lati delle strade. Certo, Amsterdam ha il quartiere a luci rosse, ma tutto è comunque molto più discreto che in Italia. Quello che posso dire è che di giorno è un quartiere come tutti gli altri, magari con qualche sexy shop e cinema di troppo.
  • Al supermercato ti chiedono l’ID anche se compri le sigarette.
  • La tessera sanitaria NON è un documento valido per entrare in discoteca (in Italia mi è successo di vederla usare).
  • Quando esci da una discoteca, il sabato sera, fuori ci sono gli autobus e i taxi, non gli ubriachi al volante.
  • Puoi fare 10km in bicicletta alle tre di notte, tornando dalla discoteca suddetta, sentendoti perfettamente al sicuro.
  • Le biciclette possono svoltare a destra anche se il semaforo è rosso.
  • Gli automobilisti si fermano alle strisce pedonali. SEMPRE.
  • Il clacson non è uno strumento usato per attirare l’attenzione di aspiranti partner per l’accoppiamento.
  • Sono tutti gentili, cordiali e disponibili. Anche il più poveraccio di Amsterdam ti indica la strada. In Inglese.
  • Non c’è gente per le strade a chiedere l’elemosina. Nemmeno ad Amsterdam.
  • Davanti alle scuole ci sono le distese di biciclette, non di motorini.
  • Van Gogh.
  • La scuola inizia alle 8.45. Vuol dire che puoi alzarti alle 7.30, fare una doccia, fare colazione CON CALMA, prendere la tua bella bicicletta e pedalare fino a scuola (questo vale sopratutto se il tuo partner abita a 700 metri dalla suddetta). Non devi alzarti alle 6.40 per passare cinque minuti in bagno, prendere un caffè volante e salire su un autobus stracolmo e puntualmente in ritardo per essere a scuola per le 8.
  • Hanno meno compiti. Vuol dire che non devono tirare via a scrivere post come questo perché il giorno dopo hanno compito di matematica e interrogazione di filosofia insieme.
  • I bagni pubblici sono pulitissimi. Anche quelli in aeroporto.

Cosa non mi è piaciuto:

  • Bevono VERAMENTE troppo.
  • Non hanno il bidet (avrò pure lo spirito del viaggiatore, ma Italiano resto). Compensano con il tempo da dedicare alla doccia. Io, ad esempio, con la mia routine italiana non riesco a fare la doccia ogni giorno.
  • La suddivisione delle vacanze. Se non ho capito male, lo stop estivo dura 6 settimane. I giorni effettivi di vacanza sono più o meno gli stessi, ma non è la stessa cosa.
  • Il caffè-brodaglia-liquido marrone semitrasparente che in molti ti rifilano. Lui però aveva una macchina del caffè ultra-tecnologica con un programma “Caffè Italiano”, che era bevibile.

Stranezze varie:

  • Olanda, tulipani, mulini a vento. Ebbene: nella parte sud non ci sono. Indovinate dov’ero io? Appunto.
  • Gli Olandesi ammettono esplicitamente di sbagliare il nome del loro Stato. L’Olanda è una regione dei Paesi Bassi (a dire la verità sono due, c’è quella settentrionale e quella meridionale). E’ come dire “Lazio” invece di “Italia”.
  • Hanno una fissa per i punti luce. In OGNI casa in cui sono entrato ci sono ottomila interruttori, ma ne funzionano quattro. Predispongono cavi per lampadari che non useranno mai.
  • Per dire “prelevare al bancomat” esiste un’espressione idiomatica la cui traduzione in Inglese è più o meno “take some money out of the wall”.
  • Essendo più a nord, alba e tramonto durano più che da noi. Se aggiungiamo a questo il fatto che nove ore prima del mio volo di andata era entrata in vigore l’ora legale, otteniamo insonnia e mal di testa.
  • Il pollo con la mozzarella (che però era buono).
  • Le patatine Pringles da tuffare nella salsa di avocado.
  • Le doppie vocali, nelle parole olandesi, si leggono esattamente come se ce ne fosse una sola.

Just empty your Internet cache

…poi ditemi se è cambiato qualcosa ;-)

That dream can’t come true

BEEP!
Apro gli occhi. Attaccato allo schienale del sedile davanti al mio c’è il cartello con le dotazioni di sicurezza tipico della Ryanair.
Si è acceso il segnale delle cinture di sicurezza.
Sono su un Boeing 737 blu e giallo. Viaggio da solo. Sento il carrello d’atterraggio che scende. Vedo la pista. Touchdown.
Le trombette che annunciano l’atterraggio suonano.

Sono nel piazzale dell’aeroporto. Guardo verso il tetto.
Oltre la terrazza panoramica, oltre i vetri dell’ultimo piano. C’è scritto il nome dell’aeroporto ma non riesco a leggerlo.
Non mi importa, lo riconosco, so dove sono e sono felice di esserci.

Ritiro bagagli. Prendo la valigia e vado verso l’uscita.
Riconosco il cartello che vieta l’esportazione di stupefacenti dal Paese.
La porta scorrevole si apre e io posso uscire nel terminal. Li vedo.

BEEP! BEEP! BEEP! BEEP!
Apro gli occhi. Soffitto di camera mia. Sono le 6.45.
“Cazzo, ho il compito di latino oggi!”

Che dolce ritorno

Ieri abbiamo scattato l’ultima foto di gruppo, fuori dall’aeroporto.
Poi sono entrato nel terminal, senza voltarmi, mentre fuori incominciava a piovere.
Quando l’aereo si è staccato da terra ero quasi contento di tornare a casa.
Più che altro avevo accettato l’idea.
La vista delle Alpi con il sole mi ha messo di buon unore.

Poi siamo atterrati, e lì è cominciato il finimondo.
Il Galilei sempre disorganizzato, sporco, vecchio, deprimente.
Caldo italiano.
Ci hanno stipati sulla navetta per fare quaranta metri di strada.
Dieci minuti per vedere il nastro bagagli ricominciare a girare, altri cinque abbondanti prima che la mia valigia arrivi. Dogana senza intoppi.
All’uscita non c’è nessuno ad aspettarmi. In compenso, il monitor degli arrivi continua a segnalare il mio volo come previsto, nonostante io sia sul suolo italiano da almeno venti minuti.

$padre è in ritardo. Al telefono chiarisce che non intende parcheggiare (sapete, può costare diversi quattrini).
Accosta la macchina dalla parte sbagliata dell’aeroporto, bloccando il traffico del piazzale e urlandomi nel telefono di correre immediatamente da lui.
Io agli arrivi internazionali, lui alle partenze. Dell’altra hall. Ovvero, dall’altra parte dell’aeroporto.
Della serie: se è di così tanto disturbo, la prossima volta prendo il treno. (detto in faccia al signore di cui sopra)

In macchina soliti discorsi su quanto l’Italia sia bella, su quanto la politica italiana sia perfetta, su quanto mi possa essere mancata l’Italia (zero).
Nel frattempo la diramazione di Pisa si immette sulla superstrada.
Tre chilometri di coda, lavori in corso da decenni, asfalto toppato, strada inguardabile.

Intanto scrivo un SMS alla prof. spiegandole perché sono letteralmente scappato via dall’aeroporto.

Empoli è grigia, spenta. La mia scuola, dopo una settimana di Udens College, è un carcere.
Intanto le notizie che ho avuto in una settimana all’estero (lettura di sfuggita della prima pagina del De Telegraaf, in Olandese) sull’Italia sono diametralmente opposte rispetto a quelle che $padre mi sta fornendo.
(dichiara di non sapere nulla di George Clooney coinvolto nello scandalo sessuale di B.)

Casa sempre uguale. Malinconia. Trattengo le lacrime tutta la sera.
Chissà perché, ogni volta che vado via da solo non voglio mai tornare.

Quand’è che parto di nuovo? Ah, sì, il 3 luglio avrei questo volo per New York… Tre mesi, ce la posso fare…

Data Validation in WPF

Hi, WPF provides two main ways for implementing data validation: ValidationRule and IDataErrorInfo. In this post is focused on IDataErrorInfo. The demo project is available here and the below images displays the result from an UI point of view: Using ValidationRule you are able to validate user inputs directly into UI (View). This way consists [...]

I’m an alien

Fermata dell’autobus. Ore 14.15 circa.
Devo dire a Max tutta una serie di cose. Inizio a scrivere un SMS (ovviamente in Inglese). Dopo un po’ mi rendo conto che ci metterò anni prima di avere scritto tutto, e che magari una telefonata con Skype costerebbe meno di tutta la serie di SMS che dovrei inviare. Detto fatto, apro Skype e chiamo. Anche lui ha tutta una serie di cose da dirmi, quindi la cosa va per le lunghe.
Dopo 3,2 secondi dall’inizio della telefonata, realizzo che:
– la totalità della gente alla fermata si è zittita
– 3/4 delle persone mi fissano con sguardo stranito
– una buona metà ridacchia sommessamente
– uno continua a ripetere “ma chi si crede di essere?”

Quindi, la domanda che vado ponendomi da un tre ore a questa parte è la seguente: sono stupido io che parlo decentemente una lingua straniera o gli altri?
Perché ho come l’impressione di conoscere già la risposta, ma mi serve la conferma di qualcuno con qualche neurone in più di questi signori.
Grazie.