
A solo un mese dal rilascio della versione 0.2.3 procede a ritmo serrato lo sviluppo di imel giunto alla versione 0.2.4. Le novità al contrario di quanto si possa pensare. dato il poco tempo passato tra le due versioni, sono tante.
Tra le più importanti ritroviamo il supporto a pkg-config così da poter compilare staticamente senza dover scrivere manualmente tutte le librerie, possibilità di tracciare un ellisse e disegnare un cerchio, in più reso possibile il disegno di una linea o una curva con un’immagine così da poter realizzare l’effetto “pennello” presente in molti programmi di grafica e tante altre funzioni.
E novità più importante di tutte: aggiunto il supporto al formato BMP.
Il Changelog con tutte le modifiche dettagliate.
Colgo l’occasione per annunciare la partecipazione di una persona oltre a me a questo progetto: Simone “Skary” Scarinzi, per il momento ha aiutato nella creazione della funzione per il disegno di un ellisse ma per le prossime versioni ci regalerà altre funzioni riguardanti il disegno
Link pacchetto – Link documentazione
P.s.: Il servizio HImages è stato aggiornato per avere il supporto alle bmp.
Vi sarà capitata l’occasione di ritrovarvi una stringa contenente un numero binario e di doverlo convertire in un numero decimale ( o comunque memorizzarlo in una variabile ) e utilizzare i procedimenti più assurdi per farlo? No? Beati voi, a me è capitato.. anzi in particolar modo è capitato di avere i vari 1 e 0 divisi in varie variabili.. In questo post farò vedere un metodo, a mio avviso elegante, per ottenere la nostra decantata variabile contenente il valore decimale.
Ed ecco qui, subito subito la funzione:
unsigned char get_value_from_binary_string (const char *s)
{
short int i;
unsigned char byte = 0;
if ( !s || strlen (s) != ( sizeof (unsigned char) * 8 ) )
return byte;
for ( i = (sizeof (unsigned char) * 8) - 1; i > -1; i-- )
byte = ( byte | (s[(sizeof (unsigned char) * 8) - ( 1 + i )] - '0') ) << ( i ? 1 : 0 );
return byte;
} |
Naturalmente qua si parla di una stringa contenente il valore di un byte, ma è facilmente utilizzabili con stringhe contenenti valori di 2, 4, 8, 16, 32 e 64 byte utilizzando le variabili appropriate.
Il fulcro della conversione comunque sta in quelle due righe di for. 2 righe e si fa quello che molti altri farebbero in minimo 20 in modo osceno.
Ciauz
Proprio poco fa stavo parlando in chat con Dani, mentre io insultavo quelli che hanno creato la strcmp ( in quanto se gli si passa uno dei due parametri a NULL fa andare il programma in Segmentation Fault che è una bellezza ), mi ha detto che la strcmp oltre a fare il semplice confronto tra le due stringhe restituisce anche la differenza tra i caratteri, e proprio per questo lui l’aveva utilizzata per riordinare alfabeticamente i pacchetti in slackyd.
Allora non sapendo questa cosa da niubbo della situazione mi son messo a fare un test:
1
2
3
4
5
6
7
8
9
10
11
| #include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
if ( argc < 3 ) return 1;
printf("Diff: `%d'\n", strcmp(argv[1], argv[2]));
return 0;
} |
Benissimo lo vado ad avviare e mi restituisce solo 0 ( uguali ), 1 o -1 ( non uguali ).. dopo vari attimi di stupore da parte sua, va a provare lo stesso identico codice e le stesse identiche stringhe passate come parametro sul suo computer e la funzione lì restituiva davvero la differenza tra le due stringhe!
Ora mi domando cosa renda così variabile una funzione standard che dovrebbbe avere lo stesso funzionamento su tutti i computer del mondo. La versione delle libc comunque era uguale giusto per cronaca. Da notare comunque anche che ho provato la strcasecmp che non dovrebbe far parte del C Standard, e restituisce la famosa differenza tra le due!
? Mah..
P.s.: Altra cosa che mi fa incazzare, se si passa un parametro null alla strcmp, o all’atoi perchè cavolo mi deve compromettere tutto il programma? cosa gli costa a quelli che hanno scritto la gnu c library mettere due piccolissime macro del tipo:
1
2
3
4
5
6
| #define return_if_fail(cond) if ( !(cond) ) { \
return; \
}
#define return_val_if_fail(cond, val) if ( !(cond) ) { \
return (val); \
} |
per controllare che i parametri non siano nulli? BAH!
Nuovo servizio su HdS619.net, ovvero LYS ( Load Your Source ) un servizo che permette appunto di caricare online i propri sorgenti¹ e ottenere una pagina html dove verrà visualizzato il codice con la sintassi colorata e un link diretto al sorgente originale ( così da far contenti gli amanti dei colori e quello del bianco e nero ). Altre notizie su questo servizio ( e la pagina da cui poterlo utilizzare ) le trovate QUI.
¹Per il momento supporta solo sorgenti C

E’ nata la versione 2 di COwH ( MUccAH! ( battuta schifosa) Compile Online with HdS619 ), ovvero quel servizietto che forse alcuni di voi conoscono che permette di compilare online dei sorgenti in C per il sistema linux ( in particolare la compilazione avviene su Ubuntu 7.10 ).
Di seguito farò un breve elenco di ciò che c’era nella versione precedente e ciò che c’è in quella nuova. Prosegui la lettura…
Commenti recenti