Ricerca tra la vecchia roba

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.

Anatomy of a Subway Hack

Posted: Agosto 18th, 2008 | Author: | Filed under: Hack | 6 Comments »

[…]AND THIS IS VERY ILLEGAL! So the following material is for educational use only.[…] infatti

 Three MIT students will not be presenting their security research at
the annual DEF CON hacker convention this weekend because of a
temporary restraining order filed by the Massachusetts Bay
Transportation Authority on Friday afternoon. The students — legally
represented by the Electronic Frontier Foundation, a nonprofit advocacy
group — are appealing the order.


  AGGIORNAMENTO:
parrebbe che la causa sia rientrata come leggo qui. Intanto beccatevi grazie a pdfimages(1) la mappa delle vulnerabilità della metro di Boston (chissà in Italia cosa si scoprirebbe con una indagine simile ๐Ÿ˜‰)

Mappa delle vulnerabilità metropolitana Boston.


Error 2: unknown file or directory type

Posted: Agosto 15th, 2008 | Author: | Filed under: Hack, Installation party, Life | 2 Comments »

Io e GRUB è evidente che non andiamo d’accordo e a ‘sto giro ho collezionato un bel errore numero 2 (probabilmente il numero 1 causerà la deflagrazione del computer o l’arrivo della digos [immagino "Error 1: Digos are coming to take you"]). A ‘sto giro pare un errore grave dovuta alla incompatibilità con il programma e2fsprogs che gestisce i filesystem ext2/3: alla versione >1.40.5 crea degli inode di dimensione 256 al posto di 128 e il programma di bootloading quale è GRUB non riconosce la partizione e così ciocca. Read the rest of this entry »


Samsung SCX-4100 / SCX-4521

Posted: Agosto 5th, 2008 | Author: | Filed under: Hack, Installation party, Life | Commenti disabilitati su Samsung SCX-4100 / SCX-4521

Mi sono ritrovato sotto mano queste due stampanti in un assolato giorno di Agosto, quei giorni in cui solo una birra potrebbe segnare la differenza fra una sopravvivenza gentile o una segnata dall’agonia capitalista. Queste fottute stampanti sono multifunzione, con un fottuto scanner ed un fottuto driver per linux "unificato" (cercatelo sul sito del produttore, non so se è possibile trovare quello "più" nuovo.).

Il driver è fatto abbastanza bene portandosi dietro le dipendenze necessarie (solo magari installate storie di SANE prima di iniziare e pluggate la stampante) solo che nella ultima ubuntu non trova la stampante in quanto non è montato il filesystem USB o almeno mi pare; la soluzione è editare a manina il file /etc/init.d/mountdevsubfs.sh decommentanto le seguenti righe

#mkdir -p /dev/usb/usb/.usbfs
#domount ….
#<non mi ricordo, l’ho iniziato a scrivere su un foglio di carta ma evidentemente sono un picio>

 Non so se è possibile non riavviare, ma farlo crea il necessario file system; a questo punto il vostro cazzo di programma di installazione vede effettivamente la stampante e potete continuare. Quando userete xsane dovrete aggiungere il vostro utente al gruppo lp (strano che la stampante funzioni correttamente anche senza questo e lo scanner no, boh…) e se vi segfaulta usate sudo e non mi spaccate il cazzo…

P.S: questo tricks l’ho trovato sul forum di ubuntu.it, ma non me lo sono segnato (mod_rewrite loro non sanno manco cosa sia porcamadonna) quindi eventuali segnalazioni saranno premiate da una rivolta proletaria.


La fisica del biliardo (subatomica)

Posted: Luglio 27th, 2008 | Author: | Filed under: Fisica spicciola | Commenti disabilitati su La fisica del biliardo (subatomica)

Sappiamo tutti cosa sia una collisione, cioé un urto fra due o più oggetti che eventualmente può avere una conseguenza emotiva o legale; tuttavia rimanendo nell’ambito della fisica spicciola e sopratutto nel caso semplice della collisione fra due semplici corpi di massa e velocità predeterminate esistono delle semplici leggi di conservazione che ci permettono di studiare il risultato di tali urti. Read the rest of this entry »


Onda MT503HS

Posted: Luglio 26th, 2008 | Author: | Filed under: Hack, Installation party, Life | 2 Comments »

Questa chiavetta è una merda!!! fanno delle chiavette che all’interno hanno driver e modem assieme e poi per supportarle su Linux ti danno il CD a parte!!! ma siamo scemi? poi uno pensa "all’interno ci sono i pacchetti Debian, bella storia, funzionerà tutto", peccato che per loro i pacchetti Debian sono i tar.gz… ma si può… speriamo che sull’EEEPC vada… se seguite la guida per l’onda mt505up che ho scritto funziona anche per questa chiavetta, solo che una volta preso l’IP non viaggia la rete… e pare che a lamentarmi non sia il solo!(comunque se guardi l’UPDATE più sotto io ho vinto!!!) Read the rest of this entry »


Grub error 17

Posted: Luglio 24th, 2008 | Author: | Filed under: Hack, Installation party, Life, Microzozz | Commenti disabilitati su Grub error 17

PORCODIO, madonna, ma come cazzo si fa… installi due volte e dico due volte ubuntu Hardy Rocco su un laptop e si non riesce a finalizzare l’istallazione perché grub dà errore… porcodio…. sapete qual’è il problema? ho ricreato una partizione con mkfs.ext3 in modo da cancellare tutto e poi usato debootstrap solo che dopo aver configurato n-mila pacchetti di ‘sta minchia, al momento topico di renderlo bootabile ed installare GRUB, mi dava "partition unknown" o qualche madonna di simile… in pratica me la vedeva come una NTFS di merda, che sia maledetto balmer…

Per risolvere dovete usare fdisk e cambiare il tipo di partizione con "t"…. porcodioporcodioporcodio…


Shared library or something like this

Posted: Luglio 19th, 2008 | Author: | Filed under: Guide, Programmazione | Commenti disabilitati su Shared library or something like this

Sto riscrivendo dei miei esempi di codice in C e ho varie routine di X11 da modificare in maniera tale da farle lavorare come librerie shared e poterle condividere facilmente tra i vari programmi che scrivo; visto che ogni volta mi incasino per farle funzionare perché non mi ricordo le flags da passare al compilatore/linker qui metto i miei tricks. Per adesso scrivo questo poi metto apposto tutto (sono reduce da una serata di alcol).

Dalla pagina di manuale di gcc(1)

-llibrary
-l library
           Search the library named library when linking.  (The second
           alternative with the library as a separate argument is only for
           POSIX compliance and is not recommended.)

           It makes a difference where in the command you write this option;
           the linker searches and processes libraries and object files in the
           order they are specified.  Thus, foo.o -lz bar.o searches library z
           after file foo.o but before bar.o.  If bar.o refers to functions in
           z, those functions may not be loaded.

           The linker searches a standard list of directories for the library,
           which is actually a file named liblibrary.a.  The linker then uses
           this file as if it had been specified precisely by name.

           The directories searched include several standard system
           directories plus any that you specify with -L.

           Normally the files found this way are library files—archive files
           whose members are object files.  The linker handles an archive file
           by scanning through it for members which define symbols that have
           so far been referenced but not defined.  But if the file that is
           found is an ordinary object file, it is linked in the usual
           fashion.  The only difference between using an -l option and
           specifying a file name is that -l surrounds library with lib and .a
           and searches several directories.

  Ricordarsi che per passare opzioni direttamente al linker si necessita della flag -Wl,<Opzione>,<valore>. Molto comoda l’opzione -rpath (vedi ld(1)).


Scadenze

Posted: Luglio 12th, 2008 | Author: | Filed under: Hack, Life, Physics | Commenti disabilitati su Scadenze

Se per caso avene una stampante dell’HP (nel mio caso è una multifunzione) e vi succede che vi esce un messaggio di questo tipo

 error: Unable to communicate with device (code=12): Read the rest of this entry »