Cairo-Dock cafe | Café Cairo-Dock
nochka85, Thursday 25 September 2008 à 19:46
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Allez : Suite à la suggestion de Mr Mav, je me suis décidé à me lancer dans l'apprentissage du C .... çà risque d'être "un tout petit" long car je pars de zéro !!! ... et du coup, je me lance dans les tutos dispo sur "Le Site du Zéro" (http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html) !!!!
Je ne fais pas çà dans le but de pouvoir programmer une "tuerie" (du moins pas avant disons .... 20 ans ) ... mais si je peux réussir ne serait-ce qu'à comprendre ou modifier un bout de code ... et dans l'idéal pouvoir programmer une petite applet pour mon dock préféré, alors je serais ravi !!
... Bref, je vous raconte tout çà et j'ai décidé d'ouvrir (et de faire "vivre") ce post pour plusieurs raisons :
- Je me suis dit qu'en cas de difficultés (et c'est sûr qu'il y en aura
), peut être qu'une âme charitable parmis les devs pourraient m'aider <- OK, je pourrais demander sur un site dédié à la programmation ... mais vu la compétence des devs de cairo-dock, je suis sûr de n'avoir QUE des bons conseils ici <- Alors là, si vous ne m'aidez pas, je ne comprendrais pas :mrgreen:
- Cela pourrait peut être "inciter" d'autres personnes de la communauté cairo-dock qui, comme moi, n'y connaissent rien (pour ma part, je ne connais que "2 ou 3 trucs" en bash + un peu de Basic à l'époque où j'avais mon Amstrad CPC 6128
) à se lancer dans l'aventure !
Bref, j'éspère que les "pros" pourront me (nous) aider .... et j'invite donc toute personne souhaitant "franchir le pas" à se joindre à ce post afin de partager nos questions, les réponses, nos désillusions ( ), nos erreurs, les solutions ....
Voilà pour l'intro ....
Merci d'avoir lu jusque là |
nochka85, Thursday 25 September 2008 à 19:54
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Entrons dans les choses sérieuses :
.... mais je suis sympa, pour l'instant, je n'ai "aucun" soucis .... je vous poste juste mon 1er bout de code afin que vous vous rendiez compte du chemin qu'il reste à parcourir :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
printf("J'écris de texte :-P\n\n\nJe saute des lignes...\t\t\tet fais des tabulations :-D\n"); //et je mets un commentaire ;-)
printf("... et le tout avec des smileys ... sinon, cela ne serait pas moi !!! ;-)");
return 0;
}
.... C'est cool , non ? ... maintenant, je sais faire un "echo" en C !!!!!!!!!
.... allez, juste une petite question aux "pros" histoire de ne pas poster pour rien (en fait, je l'avais postée en "hors sujet" dans un autre post, mais autant la remettre ici) :
Quel IDE (ou EDI) utilisez vous ? <- Pour ceux qui, comme moi il y a 12 heures, ne savent pas ce que c'est, c'est un 3 en 1 qui permet de tapper son code + débugguer + compiler
... j'ai pour l'instant jeté mon dévolu sur Code::Blocks 8.02 .... mais est-ce un bon choix ? |
Mav, Thursday 25 September 2008 à 20:05
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Perso, je te conseille d'y aller à la bonne vieille méthode, mais c'est purement personnel.
Geany pour l'édition (le CTRL+E pour les commentaires est ultra pratique)
un terminal ouvert qui pointe vers le dossier de ton plugin (je te parle à la sauce cairo-dock vu que c'est le but :)) pour pouvoir compiler (make et make install)
un autre onglet terminal pour lancer CD quand la compilation est finie
N'hésites pas par exemple à regarder le premier musicplayer dès que tu voudras te mettre au code de CD, je l'avais pas mal commenté et il était assez simple |
nochka85, Thursday 25 September 2008 à 20:18
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Geany pour l'édition (le CTRL+E pour les commentaires est ultra pratique)
... j'ai vu qu'il n'avais pas de débuggueur .... même si je ne vois pas encore à quoi cela pourra me servir ... Bref, Code::Blocks est il trop compliqué pour débuter ?
un terminal ouvert qui pointe vers le dossier de ton plugin (je te parle à la sauce cairo-dock vu que c'est le but :)) pour pouvoir compiler (make et make install)
... oui, mais pour l'instant, j'en suis juste à vouloir tapper du code et le lancer pour voir ce que cela fait -> si faut que je me tappe un "make et make install" à chaque fois |
cchumi, Thursday 25 September 2008 à 20:20
|
|
Subscription date : 11 January 2008
Messages : 390
|
tu es obliger à chaque fois de faire le make install. |
ppmt, Thursday 25 September 2008 à 20:42
|
|
Subscription date : 29 November 2007
Messages : 3520
|
c'est la beaute du C |
cchumi, Thursday 25 September 2008 à 21:02
|
|
Subscription date : 11 January 2008
Messages : 390
|
Nochka ( ou les autres ! ) si je peux t'encourager j'ai commencer le C pour cairo dock et à vrai dire n'y connaissais rien du tout . Je me suis taper le tuto du site du zero en premier. Ensuite à chaque problème que je pouvait rencontrer je cherchais sur le net. Tu trouves réponse à tout enfin presque . Je t'assure que Fabounet en ayant repris mon code pourra t'affirmer que je n'y connaissais rien. Mais lance toi et tu vas apprendre. Couragggggeeee |
nochka85, Thursday 25 September 2008 à 21:09
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Mais lance toi et tu vas apprendre. Couragggggeeee
merci
tu es obliger à chaque fois de faire le make install.
Bah pour l'instant, avec Code::Blocks, je clique juste sur l'icone "Compiler et executer" et cela me lance mon programme ... c'est du coup même plus rapide que de lancer un script bash |
ChAnGFu, Thursday 25 September 2008 à 21:10
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Moi c'est très simple, mon IDE: gEdit.
Il existe une tonne de "Greffons" qui permettent d'avoir la complétion, un correcteur orthographique (utile!), un volet de navigation de fichier, surbrillance automatique, etc...
Un lien intéressant: http://artisan.karma-lab.net/node/1619
Il existe un système d'outil externe qui permet d'intégrer des scripts bash:
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME
echo "Bienvenue dans l'outils de compilation de Gedit"
echo ""
echo "Outils créé par ChAnGFu"
sleep 1
echo "Changement de dossier vers $DIR"
cd "$DIR"
PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Compilation: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`
echo "Compilation de $FILE vers $NOM"
gcc "$FILE" -o "$NOM"
sleep 2
echo "Fichier Compilé!"
- Compiler et exécuter un .c
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME
echo "Bienvenue dans l'outils de compilation de Gedit"
echo ""
echo "Outils créé par ChAnGFu"
sleep 1
echo "Changement de dossier vers $DIR"
cd "$DIR"
PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Compilation: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`
echo "Compilation de $FILE vers $NOM"
gcc "$FILE" -o "$NOM"
sleep 2
echo "Fichier Compilé!"
echo ""
echo "Lancement du programme dans un terminal..."
gnome-terminal --working-directory="$GEDIT_CURRENT_DOCUMENT_DIR" -x "./$NOM"
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME
PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Execution: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`
echo "Lancement du programme dans un terminal..."
gnome-terminal --working-directory="$DIR" -x "./$NOM"
Voila pour ma contrib du soir  |
cchumi, Thursday 25 September 2008 à 21:11
|
|
Subscription date : 11 January 2008
Messages : 390
|
Bah pour l'instant, avec Code::Blocks, je clique juste sur l'icone "Compiler et executer" et cela me lance mon programme ... c'est du coup même plus rapide que de lancer un script bash
Ohhhh c'est pas vrai j'avais jamais tester je my mets de suite |
nochka85, Thursday 25 September 2008 à 22:26
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Ohhhh c'est pas vrai j'avais jamais tester je my mets de suite
C'est vrai ? Tu ne connaissais pas ?
Voila pour ma contrib du soir
merci bien |
pico, Friday 26 September 2008 à 06:44
|
|
Subscription date : 23 February 2008
Messages : 144
|
Je compte bien m'y mettre car faire des themes...
Enfin quelque chose qui puisse aidé réellement !
Je m'y mettrai ce soir ! |
Subscription date : 29 April 2008
Messages : 106
|
Ben moi perso, j'utilise Vim + compilation en ligne de commande avec GCC...
C'est moins lourd que Geany ou Code::Blocks
Tu peux automatiser aussi la compilation en créant un Makefile avec des arguments de ce type :
install: gcc -o monexe.x fichier1.o fichier2.o fichier3.o
# Attention, il faut utiliser des tabulations après les :, pas des espaces !
Edit : sinon, tu peux regarder par là : http://www.cs.usask.ca/staff/oster/makefiles.html |
fabounet, Friday 26 September 2008 à 12:17
|
|
Subscription date : 30 November 2007
Messages : 17118
|
Très bonne initiative Nochka, et je t'en remercie !
vu que le but est de créer une applet pour le dock, tu peux essayer de lancer le script de génération d'applet : generate-new-applet.sh on un nom approchant, dans le répertoire plug-ins.
tu auras une applet dans ton dock en 1 minute (et pas besoin de tripatouiller les Makefile) ! (si tu veux pas faire le "sudo make install" à chaque fois, tu peux utiliser l'option -m du dock )
après tu peux mettre des trucs dans la partie INIT de applet-init.c qui sera ton bac à sable.
L'applet la plus simple est à mon avis logout (ou showDesktop)
3 trucs à comprendre en C : les pointeurs, les macros et les signaux (glib).
après c'est juste connaître les APIs des diverses lib, je te conseille devhelp pour ça, très pratique.
PS : Kate powa ! |
nochka85, Friday 26 September 2008 à 13:12
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Alors, juste pour recadrer un tout petit peu -> Pour l'instant (en 1 soirée de tuto sur le site du zéro) je sais simplement faire 1 menu à choix multiple dans une console ! -> Bref, je crois qu'il faut au moins que je finisse ces tutos avant de m'attaquer à quoi que ce soit pour cairo-dock
... Je vous dis tout çà pour ne pas que vous alliez trop vite -> je ne sais même pas "exactement" ce qu'est un makefile, des pointeurs, les signaux glib, etc... moi j'en suis juste à manipuler des variables (ou constantes) numériques (char,long,int,float,double <- z'avez vu, j'ai bien appris ma leçon ) à faire quelques conditions (if, else, else if ... ou encore des switch + case), à faire des calculs simples (je viens juste d'apprendre ce qu'était un modulo ) ou des incrémentations/décrémentation sous forme de raccourcis, etc .... Bref, je découvre ....
Alors svp, n'allez pas trop vite -> Vous risquez de me parler de trucs que je vous redemanderai dans quelques temps |
nochka85, Saturday 27 September 2008 à 11:01
|
|
Subscription date : 29 November 2007
Messages : 7408
|
Bon, çà y'est : je suis rentré dans le vif du sujet : les POINTEURS !!!
Encore 6 mois de pratique et j'aurais tout compris
|
nochka85, Saturday 27 September 2008 à 13:11
|
|
Subscription date : 29 November 2007
Messages : 7408
|
J'aurais une petite question :
Je suis actuellement en train d'apprendre les pointeurs et les tableaux ... seulement, sur le site du zéro, il est écrit que pour afficher l'adresse d'une variable , on peut faire (exemple pour une variable nommée "age") :
- printf("L'adresse de la variable age est : %p", &age); <- pour avoir l'adresse en hexadécimal
- printf("L'adresse de la variable age est : %ld", &age); <- pour avoir l'adresse en décimal
Mais cela ne semble pas marché chez moi :
- avec %p , j'obtiens une adresse du type : 0xbfec5fc0
- avec %ld , j'obtiens (après une belle erreur à la compilation) comme "valeur" d'adresse : -1075028032
Bref, le seul truc qui semble marcher est %p .... mais ce n'est pas de l'hexadécimal non plus !! ... à moins que l'on puisse aller jusqu'à x désormais
... Donc, voici ma question : Ce comportement est il normal ? (est-ce une "spécificité" de linux par rapport à windows sur lequel s'appuie le site du Zéro ?) |
ChAnGFu, Saturday 27 September 2008 à 14:01
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Sincèrement, je vois pas d'intérêt à cette exercice, si tu code des applets tu ne va jamais "voir" les adresses de pointeurs que tu utilise. Et je crois que c'est %x pour afficher une adresse de variable en hexa. |
Subscription date : 08 February 2008
Messages : 166
|
Les résultats sont les bons.
0x signifie que tu lis une valeur hexadécimale
L'autre valeur est assez explicite, elle est bien décimale
Ensuite, les pointeurs, représentent une adresse dans la mémoire, donc les valeurs sont (un peu) incompréhensible pour un humain.
Je sais pas si ils ont mis un schéma sur le site, mais un pointeur c'est une valeur qui indique l'adresse en mémoire d'une autre valeur.
le & sert à indiquer l'adresse du pointeur.
Exemple :
toto (à ladresse 0x123AB) pointe vers titi (à l'adresse 0xAB123)
&toto => 0x123AB
*toto => 0xAB123
(Ou un truc du genre, je confonds souvent & et *, mais ça doit être ça) |
Cairo-Dock cafe | Café Cairo-Dock
|