| 1 | = Trucs & Astuces de programmation = |
| 2 | [[PageOutline(2-3)]] |
| 3 | |
| 4 | == C++ == |
| 5 | === Apprendre le C++ à partir de ZERO === |
| 6 | |
| 7 | Vous avez toujours rêvé d'apprendre la POO, mais pas vraiment trouvé comment faire ? Ce site est fait pour vous : |
| 8 | [http://www.siteduzero.com/tutoriel-3-11406-apprenez-a-programmer-en-c.html] |
| 9 | |
| 10 | Toutes les bases du C++ y sont abordés à partir de zéro (d'où le nom du site...). En un rien de temps vous serez capable de faire vos propres classes, GUI, et le monde dont vous avez rêvé (celui d'un code propre qu'on comprend) vous sera ouvert ! |
| 11 | |
| 12 | On trouve également sur le même sites de nombreux tutoriels, entre autres : |
| 13 | Makefile |
| 14 | Linux |
| 15 | Langage informatique divers (C, C++, Python, IDL...) |
| 16 | |
| 17 | === Faire des ''cout'' en couleur === |
| 18 | Dans vos programmes vous pouvez rajouter un peu de couleur lorsque vous faites des ''cout'' grâce aux commandes d'échappement ANSI. |
| 19 | Par exemple essayez ceci : |
| 20 | {{{ |
| 21 | cout<<"\x1b[33m"<<"\x1b[1m"<<"\x1b[40m"<<" YO"<<"\x1b[0m"<<"\x1b[33m"<<endl; |
| 22 | }}} |
| 23 | Le code source perd un peu en lisibilité mais l'affichage gagne vraiment une dimension supplémentaire. |
| 24 | |
| 25 | Pour plus de détails, reportez vous à la page http://www.iut-arles.up.univ-mrs.fr/eremy/Aide/SeqEscANSI.html |
| 26 | |
| 27 | |
| 28 | \\ |
| 29 | |
| 30 | |
| 31 | == ROOT == |
| 32 | |
| 33 | [http://root.cern.ch/ Root] est un programme d'analyse de données développé par le CERN. |
| 34 | |
| 35 | === Configurer ROOT === |
| 36 | |
| 37 | Il faut redéfinir les variables d'environnements : |
| 38 | * ROOTSYS (quel Root utilisez vous), |
| 39 | * PATH (où se trouve l'exécutable), |
| 40 | * LD_LIBRARY_PATH (où se trouvent les librairies) |
| 41 | * MANPATH (où se trouve l'aide) |
| 42 | Seul ROOTSYS est propre à Root, les autres sont utilisées plus généralement par linux. |
| 43 | |
| 44 | Par exemple : |
| 45 | {{{ |
| 46 | # sur SLC4 (Scientific Linux 4) |
| 47 | setenv ROOTSYS /utils/SLC4/ROOT/root_v5.18.00 |
| 48 | # sur SLC3 (Scientific Linux 4) |
| 49 | setenv ROOTSYS /utils/SLC3/root_v5.17.02.Linux.slc3/ |
| 50 | |
| 51 | setenv PATH ${ROOTSYS}/bin:${PATH} |
| 52 | |
| 53 | if( $?LD_LIBRARY_PATH ) then # teste si la variable existe déjà |
| 54 | setenv LD_LIBRARY_PATH ${ROOTSYS}/lib/root:${LD_LIBRARY_PATH} |
| 55 | else |
| 56 | setenv LD_LIBRARY_PATH ${ROOTSYS}/lib/root |
| 57 | endif |
| 58 | |
| 59 | setenv MANPATH ${MANPATH}:${ROOTSYS}/man |
| 60 | }}} |
| 61 | |
| 62 | === Quelques trucs en vrac === |
| 63 | |
| 64 | * gStyle->!SetPalette(1) permet d'avoir de plus jolies couleurs que celles par défaut. |
| 65 | * TH1.!SetDirectory(0) permet de ne pas référencer l'histogramme dans le répertoire courant, et donc de continuer à pouvoir y accéder lorsque celui-ci est fermé (par exemple si on lit un fichier). Par défaut pour tous les histogrammes : TH1::!AddDirectory(kFALSE). |
| 66 | * Pour sauver des TTree dans des fichiers de plus de 2 Go, rajouter : {{{TTree::SetMaxTreeSize(20000000000LL); // 20 GB}}}. |
| 67 | |
| 68 | === Faire un script root auto-exécutable === |
| 69 | |
| 70 | La solution : utiliser env. Mais il y a deux problèmes : |
| 71 | * root va lire la première ligne qui commence par #!/bin/env et ne va rien comprendre |
| 72 | * Solution : écrire #!//bin/env (// interprété comme un commentaire) |
| 73 | * env ne permet pas de passer des options à root (comme -l : pas de splash screen ou -q : quitte après l'exécution de la macro) |
| 74 | * Solution : utiliser [attachment:rootMacro ce script (rootMacro)] (à mettre soit dans le même répertoire soit dans un répertoire listé dans $PATH). Il permet également d'avoir des arguments sur la ligne de commande qui seront passés sous la forme d'une chaîne de charactère unique. |
| 75 | |
| 76 | Si tout cela est fait, commencer votre macro par : |
| 77 | {{{ |
| 78 | #!//bin/env rootMacro |
| 79 | }}} |
| 80 | Il ne reste plus qu'à faire un chmod +x monScript.C. Et ./monScript.C est auto-exécutable. |
| 81 | |
| 82 | |
| 83 | \\ |
| 84 | |
| 85 | |
| 86 | == IDL (Interactive Data Language) == |
| 87 | |
| 88 | C'est un langage de programmation interprété créé dans les années 70 pour traiter des observations, donc surtout utile pour ceux (et celles) qui font de l'astro. |
| 89 | |
| 90 | Tout d'abord le site officiel de l'éditeur du language: [http://www.ittvis.com/]. |
| 91 | |
| 92 | Aide synthaxique (vraiment des trucs de base mais pratique quand on débute) sur [http://fermi.jhuapl.edu/s1r/idl/idl_syntx.html]. |
| 93 | |
| 94 | Un peu de documentation sur [http://www.astro.virginia.edu/class/oconnell/astr511/idl_5.1_html/idl.htm]. |
| 95 | |
| 96 | Sinon le guide online de IDL est très facile à consulter : après avoir lancé IDL dans un terminal, taper ? et le fichier pdf s'ouvre automatiquement. |
| 97 | |