Ricerca tra la vecchia roba

I segreti della linea di comando

Posted: Gennaio 30th, 2009 | Author: | Filed under: Bash, Hack, Life, Programmazione | 3 Comments »

A furia di lavorare al computer ho imparato un paio di cosette veramente cool… prima di tutto però una introduzione su cosa è la shell: l’oggetto che ci permette l’interazione su un sistema *nix, chiamato solitamente terminale, benché abbia un’aria così anni 70 permette un macello di azioni simpatiche e performanti.

Prima di tutto la linea di comando di solito è preceduta da un cosidetto prompt, cioè l’indicatore dello stato del terminale (ne esistono 4 diversi) utile per avere informazioni riguardanti la directory in cui ci troviamo, il computer in cui ci troviamo (il cosidetto host) e che utente siamo (cose non date per scontate in un sistema multiutente). Quando viene eseguito un comando all’interno succede una cosa carina:viene eseguita una chiamata di sistema che sostituisce il processo con quello eseguito (la execv e famiglia) con una piccola accortezza dovuta al fatto che ci sono due tipi di programmi, gli eseguibili e gli script; i secondi hanno la particolarità di necessitare di un interprete per funzionare (può essere la stessa shell, può essere l’interprete python, awk etc…). Proprio a questo scopo esiste il cosidetto numero magico del file: siccome il computer non può fidarsi della estensione del file per riconoscerne la natura, visto che l’estensione non è neanche una specifica di nessun tipo se non per winzoz, legge i primi 3/4 byte di un file per riconoscerlo attraverso una segnatura, chiamata appunto numero magico; provate a eseguire su un file PNG il comando head -c 4 e vedrete che uscirà una stringa contenente proprio il formato. Nel caso di un file di script, la sequenza magica è #!, seguita dal percorso dell’interprete. Se quindi viene chiesto di eseguire un file ‘mioscriptpaura.sh‘ che ha al suo interno come prima riga la sequenza #!/bin/sh, il sistema eseguirà invece /bin/sh mioscriptpaura.sh.

Ogni programma *nix può essere immaginato come una scatola nera, di cui non conosciamo l’implementazione, impegnata in un’azione particolare sul suo input per restituire un output diverso, tenendo conto anche di eventuali messaggi di errore o di log relativi all’azione particolare; ad ognuno di questi flussi di dati (detti stream)  è associato un file descriptor, chiamati rispettivamente standard input, standard output e standard error. La cosa carina è che è possibile concatenare comandi per ottenere una cosidetta pipeline e generare tramite sequenza di comandi semplici, azioni complesse; il modo attraverso cui questo è possibile è la pipe, ottenuta attraverso il carattere |. Per fare un esempio, se necessitiamo di controllare se è stata montata la partizione di swap del sistema al boot, dovremmo spulciare le righe di dmesg una ad una, ma usando grep, comando che cerca l’occorrenza di una data stringa in un file, possiamo facilitarci la vita nella seguente maniera

$ dmesg | grep swap
[   28.276971] Adding 2931852k swap on /dev/sda2.  Priority:-1 extents:1 across:2931852k

Ovviamente il carattere | non può essere utilizzato normalmente, ma deve essere trattato con cura (provate a creare una file che lo contenga ;-)). Altre ficate della shell *nix sono la redirezione degli stream descritti sopra: magari noi vogliamo salvare il risultato della elaborazione su un  file oppure prendere un file come standard input per un comando e proprio per questo ecco la magia

COMANDO < INPUT_FILE
COMANDO > OUTPUT_FILE
COMANDO >> OUTPUT_FILE
COMANDO < INPUT_FILE > OUTPUT_FILE
COMANDO < INPUT_FILE >> OUTPUT_FILE

Nel primo caso usiamo le righe di INPUT_FILE come se fossero scritte direttamente sul terminale dopo aver avviato COMANDO (equivalente peraltro a cat INPUT_FILE | COMANDO), nel secondo caso in OUTPUT_FILE viene scritto il risultato dell’esecuzione di COMANDO; il terzo caso è l’unione dei due precedenti. Particolare attenzione riveste l’operatore >> che apre il file in questione e aggiunge alla fine il risultato del comando (l’operatore > nel caso esista già il file e non sia vuoto, lo riscrive da zero).

Esiste anche l’operatore << che permette di ottenere i cosiddetti Here document; eseguendo

cat <<EOF > porcatroia.txt
sei solo una troia, pensi solo ai $soldi
EOF

ottieni nel file porcatroia la riga "sei solo una troia, pensi solo ai ", la mancanza di $soldi è dovuto al fatto che la shell cerca di sostituirlo con una variabile, per essere riprodotto testualmente, bisogna quotare EOF, ma quello del quoting nella prossima puntata.

Per finire mostro solo la presenza di ulteriori operatori logici presenti nella shell: un programma può nella sua esecuzione incontrare dei problemi/errori dovuti a situazioni particolari (disco pieno, file inesistente, digos) e quindi può comunicarlo alla shell tramite il suo valore di ritorno: nel caso questo sia diverso da zero allora c’è stato un problema altrimenti è tutto ok. La variabile che contiene il valore di ritorno è $?.

Bene, questo può essere usato per concatenare comandi; nel caso vogliamo eseguire un dato comando dopo il successo di un altro dobbiamo porre l’operatore && tra di essi. Nel caso in cui vogliamo eseguire un comando nel caso il primo fallisca, si usa l’operatore ||. Ovviamente non potrete utilizzare normalmente questi comandi in nomi di file.


Crea anche tu il tuo partito di centro-sinistra

Posted: Gennaio 24th, 2009 | Author: | Filed under: Politica | 1 Comment »

Questa notizia mi ha fatto tornare in mente questo… ahahahahahahaha


Qualche filmato

Posted: Gennaio 24th, 2009 | Author: | Filed under: Geometry, Politica, Video | 1 Comment »

Il bello della rete è si può trovare di tutto da vedere, anche in lingua originale (così anche da migliorare la propria comprensione dell’inglese o dell’aramaico nel caso); in questo caso vi consiglio la visione di

History of internet: un video (in inglese) dalla grafica accattivante in cui viene mostrato il significato, la storia e lo sviluppo della rete globale denominata internet (che non è solo l’http:// ricordatelo stolti) [via trivium].
Canone 1 a 2 di Bach su nastro di Moebius: viene mostrato visivamente quanto raccontato su GEB riguardo le costruzioni musicali di Bach.
Valzer con Bashir: film di animazione riguardante il conflitto libanese degli anni ’80 e la strage di Sabra e Shatila; mentre lo guardavo mi chiedevo come fa la gente a fare il soldato…no, questo non lo trovate sull’Ueb, ma esiste bittorrent ;-).

P.S: minchia 5 birre di seguito ti spaccano…


Tu chiamalo se vuoi PhD

Posted: Gennaio 23rd, 2009 | Author: | Filed under: Life | 5 Comments »

Questa settimana ho avuto la discussione della tesi di dottorato (che è abbastanza una farsa, diciamolo) e quindi raggiungendo il titolo di studio più alto conseguibile in italia posso scriverlo sul campanello di casa, causando l’invidia delle mie vicine di casa ottantenni… nel frattempo, con il solo ausilio dei peli della mia barba sono riuscito a bloccare il lavandino del bagno e convinto di avere uno stura-cessi ho passato varie giornate a cercarlo nel mio immenso bilocale, arrivando alla conclusione che in realtà l’oggetto in questione non sia mai esistito… 5.80€ il prezzo del magico utensile dal ferramenta sotto casa… in concomitanza sono riuscito a fulminare in rapida sequenza tutte le lampadine presenti nel lampadario in camera (che erano 3) e quindi adesso mi ritrovo a lavorare con le lampade dell’IKEA, mi serve una scala… tutto sommato non mi posso lamentare…


Nella mia ora di libertà

Posted: Gennaio 11th, 2009 | Author: | Filed under: Letture, Lyrics, Politica | Commenti disabilitati su Nella mia ora di libertà

È l’anniversario della morte di de Andrè e benché non sia propriamente il mio genere, le sue composizioni le considero vere e proprie poesie; qui di seguito il testo di una delle più significative (secondo me) canzoni dall’album "Storie di un impiegato": "Nella mia ora di libertà"

 Di respirare la stessa aria

di un secondino non mi va


perciò ho deciso di rinunciare


alla mia ora di libertà


se c’è qualcosa da spartire


tra un prigioniero e il suo piantone


che non sia l’aria di quel cortile


voglio soltanto che sia prigione


che non sia l’aria di quel cortile


voglio soltanto che sia prigione.


È cominciata un’ora prima


e un’ora dopo era già finita


ho visto gente venire sola


e poi insieme verso l’uscita


non mi aspettavo un vostro errore


uomini e donne di tribunale


se fossi stato al vostro posto…


ma al vostro posto non ci so stare


se fossi stato al vostro posto…


ma al vostro posto non ci sono stare.


Fuori dell’aula sulla strada


ma in mezzo al fuori anche fuori di là


ho chiesto al meglio della mia faccia


una polemica di dignità


tante le grinte, le ghigne, i musi,


vagli a spiegare che è primavera


e poi lo sanno ma preferiscono


vederla togliere a chi va in galera


e poi lo scanno ma preferiscono


vederla togliere a chi va in galera.


Tante le grinte, le ghigne, i musi,


poche le facce, tra loro lei,


si sta chiedendo tutto in un giorno


si suggerisce, ci giurerei


quel che dirà di me alla gente


quel che dirà ve lo dico io


da un po’ di tempo era un po’ cambiato


ma non nel dirmi amore mio


da un po’ di tempo era un po’ cambiato


ma non nel dirmi amore mio.


Certo bisogna farne di strada


da una ginnastica d’obbedienza


fino ad un gesto molto più umano


che ti dia il senso della violenza


però bisogna farne altrettanta


per diventare così coglioni


da non riuscire più a capire


che non ci sono poteri buoni


da non riuscire più a capire


che non ci sono poteri buoni.


E adesso imparo un sacco di cose


in mezzo agli altri vestiti uguali


tranne qual’è il crimine giusto


per non passare da criminali.


C’hanno insegnato la meraviglia


verso la gente che ruba il pane


ora sappiamo che è un delitto


il non rubare quando si ha fame


ora sappiamo che è un delitto


il non rubare quando si ha fame.


Di respirare la stessa aria


dei secondini non ci va


e abbiamo deciso di imprigionarli


durante l’ora di libertà


venite adesso alla prigione


state a sentire sulla porta


la nostra ultima canzone


che vi ripete un’altra volta


per quanto voi vi crediate assolti


siete per sempre coinvolti.


Per quanto voi vi crediate assolti


siete per sempre coinvolti.

 


xkcd è un pazzo

Posted: Gennaio 9th, 2009 | Author: | Filed under: Letture, Microzozz | 2 Comments »

Gaza

Posted: Gennaio 7th, 2009 | Author: | Filed under: Letture, Life, Politica | 1 Comment »

Per quanto riguarda l’argomento che dà il titolo al post, posso consigliarvi di giocare cinicamente a raid gaza (fonte qwerty) e magari leggere qualche post del buon vecchio maestro del te (quello dei razzi kassam del 2004 è imperdibile) come questo. Intanto vi lascio, anche se il mio desiderio di scrivere è molto forte… andate a fanculo…


Anno nuovo

Posted: Gennaio 3rd, 2009 | Author: | Filed under: Life | Commenti disabilitati su Anno nuovo

Dopo essere tornato dal mercato e aver subito gli effetti delle basse temperature sulle mie dita (in culo al global warming) posso consigliarvi la lettura del buon xiaodong (che finalmente è ricomparso con i suoi magici post) relativa al discorso di fine anno del capo della maf… stato


World of goo

Posted: Gennaio 1st, 2009 | Author: | Filed under: General | 3 Comments »

Se vi siete infognati con armadillo run, ecco un gioco che potrebbe farvi passare qualche giornata in tensione emotiva: world of goo, prodotto da due giovani che hanno fondato una software house (formata solo da loro due!!!). Il gioco colpisce per la grafica accattivante e particolare e dal gameplay… c’è una demo funzionante anche su Linux tramite Wine e vi consiglio di provarla (considerando che le richieste hardware sono abbastanza modeste). Il gioco completo viene venduto per 20USD e dovrebbe uscire anche per Linux e mi sa che ci farò un pensiero… scoperto grazie al blog di molleindustria

P.S: per chi se lo stesse chiedendo, non ho vomitato a capodanno…