Ricerca tra la vecchia roba

Comunicazione fra processi e “non aprite quello STREAM”

Posted: Agosto 30th, 2008 | Author: | Filed under: Ci, Programmazione | Commenti disabilitati su Comunicazione fra processi e “non aprite quello STREAM”

Quello che segue è un esempio di codice in cui viene utilizzato l’output di un programma come input di quello principale; viene utilizzato un sistema di pipe(7) per far comunicare la coppia di processi che si originano in seguito ad una fork(2): in particolare questo programma prende come argomento il nome di un file e ne restituisce il checksum effettuatto attraverso il commando da shell md5sum(1). Il codice lo trovate qui.

Quest’altro invece mette in risalto una caratteristica di un sistema operativo nel trattare i file descriptor, cioè gli indici che internamente vengono usati per tenere conto dei file aperti; i file descriptor sono molto importanti siccome nella filosofia degli Unix è che ogni cosa è vista come un file ed in particolare ogni programma al suo avvio ha almeno tre file descriptor (o stream nella terminologia dell’ANSI C) lo standard input, output ed error. Il problema che si può avere è che chiudendo questi file descriptor all’avvio del programma, un eventuale successiva apertura di un file andrebbe ad occupare quelli che precedentemente erano collegato con gli stream standard citati precedentemente (il sistema restituisce il primo file descriptor libero) e se magari avete una routine di logging che cerca di scrivere su qualche stream che pensa aperto, le conseguenze potrebbero essere belle bastarde. Il codice può farvi capire quello che sto cercando di spiegare.


Annotazioni sparse

Posted: Agosto 26th, 2008 | Author: | Filed under: Hack, Life, Microzozz, Quote, Video | 1 Comment »

Allora, visto che sono le 23:00 e sono già stanco senza aver fatto un cazzo se non aver capito che i simplessi rimangono ancora un mistero per me; intanto che manca un mesetto all’HM a palemmo dove spero fortemente di riuscire ad andare ecco qualche bel link di cose trovate in rete

  • Hacking di defibrillatori
  • Qualche papers su problemi di sicurezza (qualcuno sulla programmazione Php e Javascript)
  • La nuova versione di Vim non imposta di default filetype plugin on che quindi va inserito nel proprio file di configurazione (via ml di debian
  • Qualche talk di Blackhat
  • Video di nuove features di blender
  • Inventati un brevetto anche tu
  • Hitler uomo dell’anno per il Times del ’38

Alsa e snd-pcsp

Posted: Agosto 25th, 2008 | Author: | Filed under: Hack, Life | Commenti disabilitati su Alsa e snd-pcsp

Stamattina accendo il computer e sento un suono quasi metallico che ho associato con un eventuale danno all’HD, in realtà era quella merda di alsa che ha impostato lo speaker come prima scheda audio: dando

 $ cat /proc/asound/cards

mi sono ritrovato con

0 [pcsp           ]: PC-Speaker – pcsp
                      Internal PC-Speaker at port 0x61
1 [Intel          ]: HDA-Intel – HDA Intel
                      HDA Intel at 0xdfdf8000 irq 19

per mettere a posto il tutto mettete la riga blacklist snd-pcsp in /etc/modprobe.d/alsa-base-blacklist e date alsa force-reload da superuser e tornate ad ascoltare radio blackout. C’è anche una segnalazione di baco però cita Pulse audio che io non ho neanche installato…


Citazioni 1

Posted: Agosto 24th, 2008 | Author: | Filed under: Quote | Commenti disabilitati su Citazioni 1

"Bruce Schneier can stop bullets with elliptic curves and can break elliptic curves with bullets." (via Bruce Schneier facts).


Statistiche

Posted: Agosto 23rd, 2008 | Author: | Filed under: Life | 1 Comment »

È sabato sera e mi sto guardando le statistiche di accesso al sito; come uno può immaginare ce ne sono un casino da google, ma alcune fanno spaccare: sappiate che una mia pagina è la prima per la ricerca della stringa

"perche porco dio non funziona la usb device"

è inutile dire che sono commosso…

P.S: ovviamente sono uno sfigato per essere qui al sabato sera


Il sabato del villaggio

Posted: Agosto 23rd, 2008 | Author: | Filed under: Hack, Life, Programmazione | 1 Comment »

Giornata a base di SSL: volevo scrivere un programma per condividere file con i miei friends direttamente senza passare da chat o cose simile che a colpi di 2KiB/s ci metto un anno a copiarmi i file; inoltre vogliamo mettere la possibilità di creare una connessione criptata con la quale scambiarsi file compromettenti? dopo due giorni di coding selvaggio in cui ho perso la elasticità del cristallino posso condividere questa merda di codice con voi. Il codice è questo (peerssl.tar.gz) decompattate e date make; per usare la versione server dovete creare un certificato chiave privata tramite openssl. Sulla mia debian sono solito eseguire

$ openssl genrsa -out packz-private-key.pem 2048
$ openssl req -new -x509 -key packz-private-key.pem -out packz-certificate.pem -days 1095

Non mi chiedete come si aprono le porte del router che esiste google (anche se io ho un link paura che adesso non ho voglia di cercare).

 Intanto beccatevi una foto dal mio modernissimissimo cellulare fatta sotto i portici della mia angusta città in uno dei pochi momenti di pausa della mia retina

I portici hanno sempre qualcosa da insegnare.

P.S: sono alla seconda lattina di birra di questo fottuto sabato e ho appena ucciso una zanzara di almeno 3cm di raggio che mi svolazzava in casa a colpi di scopa.


È quasi magia mplayer

Posted: Agosto 23rd, 2008 | Author: | Filed under: Hack, Life, Microzozz, Video | Commenti disabilitati su È quasi magia mplayer

Le olimpiadi non è che mi prendano poi così bene, ma rimango colpito come si possano fare certe cose con aste e cose simili (e non sto parlando di film porno). Visto che ho il televisore nell’altra stanza (modello anni 70) ma volevo vedere la ginnastica ritmica (il mio interesse è relativo allo spazio delle configurazioni del sistema in esame) senza dover tralasciare la mia postazione personale; purtroppo il sito della RAI chiede di installare merde winzoz like e quindi con l’energia del sole (google ed mplayer) vincerò. Da un forum scopro gli indirizzi

mms://livestream.rai.it.edgestreams.net/reflector:21533
mms://livestream.rai.it.edgestreams.net/reflector:54836
mms://livestream.rai.it.edgestreams.net/reflector:30773
http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=4132
mms://livestream.rai.it.edgestreams.net/reflector:59496
http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=4134
http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=4135
http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=4136

e quindi con la giusta cache si può vedere lo sport che è il vero vincitore (non mi chiedete quale indirizzo corrisponda ad un dato canale).


Citazioni 0

Posted: Agosto 22nd, 2008 | Author: | Filed under: Quote | Commenti disabilitati su Citazioni 0

Inauguro la nuova categoria delle citazioni: partiamo da una chicca di Linus
che si fa sempre rispettare nelle mailing list; a ‘sto giro risponde in maniera spigliata nella ml di git a proposito di una questione riguardante il pulling… Read the rest of this entry »


Piccolo vademecum per il programmatore

Posted: Agosto 22nd, 2008 | Author: | Filed under: Guide, Programmazione | 1 Comment »

Regole da seguire per scrivere codice in C

  1. Appena apri un file (sopratutto non tuo) imposta shiftwidth, tabstop ed eventualmente expandtab in maniera adeguata al tuo stile. Eventualmente set list ti può far capire che impostazioni sono state usate.
  2. Il preprocessore ti ha fatto conoscere # e ## che sono tue amiche e ci sanno fare.
  3. Ricordati che con -llibrary dici al linker che al programma serve la libreria library e con -L eventualmente dove trovarla. Un controllo con ldd non fa mai male.
  4. Commenta il codice
  5. Commenta il codice
  6. Se hai creato una funzione con più di due blocchi distinti mi sa che ti tocca riscriverla.
  7. Ricordati di nascondere con static una funzione al mondo esterno.
  8. Non sforare le 80 colonne.
  9. Sempre sia lodato ulimit -c unlimited.
  10. Quando migliori il codice assicurati di non peggiorarlo.
  11. I Makefile sono una figata
  12. Se il tuo programma prevede di scrivere su file usa full(4) per provare cosa succede nel caso si esaurisca lo spazio su disco (tu ovviamente credevi di aver pensato a tutto!!!).
  13. Le mailing list sono tue amiche (magari leggile tramite thunderbird che ha un eccellente sezione sulla iscrizione ai news groups di gmane.org).
  14. Se desideri open(2) ma vim ti apre open(1) ricordati di premere ‘2K‘.
  15. If a macro contains more than one statement, use a do/while structure to enclose the
    macro. (Don’t forget to leave out the semicolon of the statement).
  16. gcc -dM -E - < /dev/null può dirti quali sono le macro predefinite nel tuo compilatore preferito.
  17. Se per caso devi utilizzare le feature_test_macros(7), ricordati di inserire i #define prima di qualunque altro #include.
  18. Puoi impostare un campo di una struct tramite per esempio
    variabile_struct = (struct punto){ .x = 10.0 , .y = 14.89 }; secondo me è più leggibile e anche se cambi la definizione della struct non hai bisogno di cambiare l’ordine delle inizializzazioni (e il compilatore non ti avverte!!!).
  19. Usa -Wpadded, -Wpacked e nel caso utilizza __attribute__ ((__packed__)) per controllare l’alignment ed il padding di una struct. Utile se usi una fread su un file binario e gli elementi della struct non sono caricati correttamente.
  20. Usa un regola esplicita nel makefile per gli header: file.o: header.h. Altrimenti nella ricompilazione può usare una struct che in realtà è stata ridefinita e il segfault diventa un mistero.
  21. Quando definisci un file oggetto come libreria, con il nome per esempio "cazzo-util.c", includi in esso l’header "cazzo-util.h" così da avere sotto controllo eventuali definizioni diverse di funzione.
  22. extern va in .h
  23. Se devi leggere un double con scanf, devi usare il modificatore "long", cioè %lf,  porcatroia…
  24. Magari inizi a scrivere un po’ di funzioni static in un unico file e poi in un secondo tempo vuoi spostare per argomento in altri file queste, puoi usare sed(1) usando come pattern ‘/^static.*(/,/^}/p’ per studiartele un attimo.
  25. Usa valgrind per controllare memory leak: ‘valgrind –tool=memcheck <programma e argomenti>‘.
Compiling.
Linkografia

Agosto

Posted: Agosto 20th, 2008 | Author: | Filed under: Life | 1 Comment »

I pro e i contro di questo mese fottuto

PRO

  • Le tipe sono praticamente nude.
  • Gli uffici pubblici sono senza coda.
  • Non paghi il riscaldamento.
  • Di solito si va in ferie e non si lavora.

CONTRO

  • Le tipe sono praticamente nude (ti scoperesti anche un comodino).
  • Sono tutti in ferie, a te non te ne frega un cazzo visto che praticamente non lavori, ma ti viene la carogna lo stesso.
  • Ti berresti birra GHICCIATA fino a farti esplodere lo stomaco.
  • Passa così in fretta che ti chiedi se non sei rimasto in botta da luglio.