jeudi 25 septembre 2008

Installer code::blocks en 2 minutes sur ubuntu

Me revoila ! oula j' arrête pas en ce moment ... bon je vais vous présenter la façon la plus simple d' installer code::blocks sur votre ubuntu, simple mais elle ne ce mettra pas a jour automatiquement mais pour y remèdier j' écrirais un petit script bash de mise a jour que je posterais plus tard.

Donc on commence par télécharger les paquets :
Pour linux-32bit:
http://download.berlios.de/codeblocks/codeblocks_8.02-0ubuntu1.deb.tar.gz
Pour linux-64bit:
http://prdownload.berlios.de/codeblocks/codeblocks-8.02-amd64.tar.gz

placer le tar.gz dans votre home par exemple, puis on ouvre une console et on décompresse :

tar xvfz code-blocks-xxxxxx.tar.gz


après vous allez vous retrouvez avec plusieurs paquets .deb

pour tout installer facilement on tape :

dpkg -i *.deb


et voila vous avez installer code::blocks en moins de 2 minutes !

mardi 23 septembre 2008

structure utsname,obtenir des informations sur votre machine.

Hello,
je voulais mettre ce bout de code, car souvent sur les forums la question est poser, donc voila le code:

#include <stdio.h>
#include <stdlib.h>
#include <sys/utsname.h>

int main()
{
struct utsname info;

if(uname(&info) == -1)
{
        perror("uname ");
        exit(EXIT_FAILURE);
}
else
{
        printf("%s\n", info.nodename);
        printf("%s\n", info.sysname);
        printf("%s\n", info.machine);
        printf("%s\n", info.release);
        printf("%s\n", info.version);
}

return EXIT_SUCCESS;
}


équivalent a un [ uname --all ].

Sortie de la version VLC 0.9.2

Le très célèbre lecteur multimédia VLC est maintenant disponible en version 0.9.2,
au menu des nouvelles fonctionnalités :
- Une nouvelle interface sous Linux et Windows
- Amélioration de la gestion de la playlist et des librairies multimédias
- La prise en charge de nouveaux codecs et de filtres vidéo et audio.

Site officiel : http://www.videolan.org/vlc/

Voici une présentation vidéo de VLC 0.9.2, ou l'on peut voir la nouvelle interface de VLC sous Windows Vista et sous Linux (GNOME et KDE 4) : http://www.youtube.com/watch?v=zVhk7Kq1rEU

Pour plus d'informations sur cette nouvelle version majeur de vlc : http://wiki.videolan.org/What_is_cool_in_0.9

samedi 20 septembre 2008

CodeWeavers propose Google Chrome pour Mac et Linux

Quinze jours après la sortie pour les seuls PC sous Windows (XP et Vista) du navigateur web open-source de Google, Chrome, l'éditeur CodeWeavers se propose de le rendre officieusement disponible sur deux autres plateformes : Mac et Linux. A terme, c'est Google qui va en faire de même, prévoyant effectivement de proposer Chrome en version Mac et Linux en plus de Windows.

Connu principalement pour son logiciel "CrossOver" permettant aux utilisateurs de Mac et Linux d'exécuter certains programmes sous Windows (dont Microsoft Office ou Internet Explorer), cet éditeur américain s'est donc attaqué au navigateur web de Google pour le rendre compatible avec de nouvelles plateformes.

Mais plutôt que d'exploiter la dernière version de Chrome disponible, CodeWeavers a préféré utiliser une version légèrement différente basée sur le moteur d'affichage open-source du navigateur baptisé "Chromium" qui possède à cette heure un rendu légèrement différent de son équivalent pour PC, encore en version bêta. Il ne faudra donc pas s'attendre à des miracles avec cette version Mac et Linux officieuse de Chrome, dépourvue de quelques fonctionnalités dont la mise à jour automatique du programme.

D'ailleurs Jeremy White, le patron de CodeWeavers, précise qu'il s'agit d'un défi technique montrant la viabilité de sa solution exploitant entre autres le logiciel Wine (Wine Is Not an Emulator) plutôt qu'une réelle solution permettant d'utiliser pleinement Chrome. Ceci explique sans doute pourquoi "CrossOver Chromium" est relativement lent et n'exploite pas encore le Flash. Le logiciel est téléchargeable gratuitement à cette adresse et compatible avec Mac OS X 10.4 (ou ultérieur) et différentes distributions GNU/Linux dont Debian, Red Hat, Mandriva, Suse ou Ubuntu.

Lancé le 2 septembre dernier, Google Chrome représente actuellement selon Net Applications moins de 1% du marché mondial des navigateurs web. Selon Nielsen cette fois, Chrome aurait été téléchargé aux Etats-Unis la première semaine suivant son lancement pas moins de 2 millions de fois. Pas de quoi rivaliser avec les 8 millions de téléchargements de Firefox 3 en seule journée (le jour de son lancement le 18 juin dernier) mais cela confirme l'engouement suscité autour de la première version bêta de Chrome.

mardi 9 septembre 2008

Les pointeurs en C

Les pointeurs !! c' est quelque chose qui fait fuire beaucoup de débutant en langage C et pourtant c' est simple comme bonjour... quand on a compris le principe.
C' est ce que je vais essayer de faire avec des exemples pratique, donc pas de théorie ou très peu.
Alors un pointeur est une variable qui peut contenir l' adresse d' une autre variable (du même type).

en faisant *pointeur j' obtiens la valeur de l' adresse pointer par pointeur.
en faisant &pointeur j' obtient l' adresse de pointeur.
c' est comme pour une variable normal.

Mais vérifions tout de suite ce que j' avance :

char *p;
printf("[ adresse de p: %p adresse pointer par p: %p ]\n", &p, p);


L' execution de ce bout de code me donne :

[ adresse de p: 0xbffb5d28 adresse pointer par p: 0xbffb5d48 ]


La vous allez me dire mais le pointeur ne pointe sur rien du tout et pourtant il contient une adresse c' est normal ?
Oui en effet, je n' ai pas initialiser le pointeur a NULL, donc il pointe n' importe ou en mémoire, donc voila l' importance d' initialiser ses pointeur a NULL.

On recommence de la bonne façon cette fois :

char *p = NULL;
printf("[ adresse de p: %p adresse pointer par p: %p ]\n", &p, p);


L' execution de ce bout de code me donne :

[ adresse de p: 0xbffa9d28 adresse pointer par p: (nil) ]


La ok il pointe nul part et est bien initialiser a NULL.

Maintenant on sais initialiser comme il faut un pointeur mais on sais autre chose, on sais que si on veut que notre pointeur pointe sur l' adresse d' une variable on va devoir remplacer (nil) qui est rien d autre qu une case pour stocker une adresse, par l' adresse de la variable sur laquelle on veut pointer non ?

donc c' est simple :

char caractere = 'B';
char *p = NULL;

printf("[ adresse de caractere : %p | contenu de caractere: %c ]\n\n", &caractere, caractere);

printf("[ adresse de p : %p -> adresse pointer par p: %p ]\n\n", &p, p);

puts("Maintenant on remplace (nil) par l adresse de caractere\n");

p = &caractere;

printf("[ adresse de p : %p -> adresse pointer par p: %p ]\n", &p, p);

printf("[ adresse de p: %p | contenu de l' adresse pointer par p: %c ]\n", &p, *p);


L' execution donne:

[ adresse de caractere : 0xbfcd4253 | contenu de caractere: B ]

[ adresse de p : 0xbfcd424c -> adresse pointer par p: (nil) ]

Maintenant on remplace (nil) par l adresse de caractere

[ adresse de p : 0xbfcd424c -> adresse pointer par p: 0xbfcd4253 ]

[ adresse de p: 0xbfcd424c | contenu de l' adresse pointer par p: B ]


Vous voyez que les adresses en rouge sont les mêmes, donc on bien réussi a faire pointer q sur l adresse de caractere.J' aurais pu faire l impasse sur l adresse du pointeur (qui est toujour la meme elle ne change pas) mais c' est justement pour bien comprendre qu' un pointeur est exactement comme une variable sauf que a la place de contenir une valeur, elle contient l adresse d' une valeur.

On va appronfondir cette histoire de signe afin de bien comprendre avec un exemple simple:

rapel :
en faisant *pointeur j' obtiens la valeur de l' adresse pointer par pointeur.
en faisant &pointeur j' obtient l' adresse de pointeur.
donc voici un bout de code tout a fait valide et qui va permettre de comprendre encore mieux cette histoire de signe.

char caractere = 'B';

printf("caractere: %c\n", caractere);

*(&caractere) = 'C';

printf("caractere: %c\n", *(&caractere) );


et oui *(&caractere) est bien equivalent a caractere.

met moi la lettre C dans le contenu *() de l' adresse de &caractere.

Pour finir voila un bout de code que vous ne devriez plus avoir aucun mal a comprendre, j' ai mis des couleurs pour aider:
char caractere = 'B';
char *p = NULL;
char **p_p = NULL;
p = &caractere;
p_p = &p;

printf("[ adresse de caractere: %p | valeur: %c ]\n\n", &caractere, caractere);
printf("[ adresse de p: %p | adresse pointer par p: %p ]\n\n", &p, p);
printf("[ adresse de p_p: %p | adresse pointer par p_p: %p ]\n\n", &p_p, p_p);

printf("valeur de caractere : %c\n", caractere);
printf("valeur de p : %c\n", *p);
printf("valeur de p_p : %c\n", **p_p);


L' execution de ce code donne:

[ adresse de caractere: 0xbf94aed3 | valeur: B ]

[ adresse de p: 0xbf94aecc | adresse pointer par p: 0xbf94aed3 ]

[ adresse de p_p: 0xbf94aec8 | adresse pointer par p_p: 0xbf94aecc ]

valeur de caractere : B
valeur de p : B
valeur de p_p : B

mardi 2 septembre 2008

Plusieur consoles dans la meme fenêtre avec Terminator

Yop, ces derniers temp je me suis mis a tester un peu les petits logiciels pas trop connu sous ubuntu et j' ai découvert Terminator, Terminator est enfaite une simple console, mais qui offre quelque avantages par rapport celle de gnome par défaut.
On peut par exemple diviser la fenêtre en plusieur, ou enlever les bordures, voila un petit screen:



ou avec l' option -b enlever les bordures :



voila pour le reste c est exactement pareil alors pourquoi s' en privé !!!