Je modélise la photochimie dans les nuages. R sert surtout à traiter les sorties de modèle.
Allez, une fastoche.
Je tourne un rond sur un script batch tout naze destiné à contourner la limitation d'un obscur logiciel (c'est pour le boulot, je ne bosse pas dans l'info. Mais j'en ai fait un peu).
Le logiciel en question est un minuscule bidule qui convertit des PDF en images JPG.
C'est un petit .exe qui s'utilise en ligne de commande. Comme j'ai pas mal de PDF à convertir ainsi et que pdfimages.exe ne sait pas en traiter plusieurs à la suite/à la fois, je me dis pas con, je vais te le foutre dans un script qui explore tous les PDF d'un dossier. En plus les collègues pourront bêtement double cliquer sur un .bat et ce sera bonnard. Le premier script donne donc :
Le -j c'est pour convertir en JPG au lien de trucs à la con (.ppm et chais pas quelles autres idioties).Code:@echo off FOR %%f IN (*.pdf) DO ( pdfimages.exe -j %%f . )
Les JPG produit portent un nom de la forme -000x.jpg avec X étant le numéro de la page du PDF convertit (si mon PDF a deux pages, pdfimages.exe produit -0000.jpg et -0001.jpg).
Le problème (que j'aurais pu voir venir) : quand j'exécute mon .bat, ça ne convertit que le premier PDF. Je suppose qu'au suivant, pdfimages.exe tente d'écrire des JPG qui ont le même nom que ceux issus du PDF d'avant, d'où caca zob prout 'cule un mouton.
Je me démonte pas : on va bidouiller le script pour qu'il traite un PDF et tout de suite derrière, renomme les JPG crées. Je dois pas être loin du but mais ça veut pas :
En plus ça devrait être chouette et me renommer les JPG en incluant le nom du PDF d'origine (je devrais même pouvoir en virer le .pdf, d'ailleurs). Si je remplace le REN par un ECHO, ça m'affiche d'ailleurs bien nom_du_pdf_originel.pdf-0000.jpg (et autant de fois qu'il y a de PDF, et ça fonctionne aussi correctement si un PDF a plusieurs pages, et produit donc -0000.jpg, -0001.jpg etc). En l'état, sur un ensemble de PDF, je me retrouve avec un seul JPG qui porte un nom composé de tous ceux des PDF concaténés (?), du style fichier1.pdffichier2.pdffichier3.pdf-0000.jpg.Code:@echo off cls FOR %%f IN (*.pdf) DO ( pdfimages.exe -j %%f . FOR %%g IN (*.jpg) DO ( REN %%g %%f%%g ) )
Je précise que j'y connais rien en batch et que je ne sais plus où j'ai trouvé le truc des "%%x" vu que dans tout ce que je lis maintenant on parle plutôt de %variable%, mais bon
La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!
Heu, attends...
Ah putain, si
Vous voyez que c'était facile.Envoyé par documentation
Ca marche Bon sauf si le .pdf contient un espace dans son nom mais ça on s'en fout.Code:@echo off FOR %%f IN (*.pdf) DO ( pdfimages.exe -j %%f %%f )
Merci !
Edit : je vais faire une passe au début sur les .pdf pour zlataner les espaces en _ et une à la fin sur les .jpg pour les renommer proprement.
Edit2 : bon pis d'autres trucs aussi mais on verra.
La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!
Salut la compagnie,
Pas de problème précis, juste en quête de conseils. Je me lance dans l'apprentissage un peu tardif de langages peu vivants mais bien vivaces.
A 25 piges j'ai l’impression d'être presque trop vieux pour débuter, mais bon.
Donc je pensais partir vers le domaine oueb et réseaux, donc html, css, php pour commencer ?
Mais bon je sais pas, quel est la procédure pour devenir un vrai petit Mitnick en 10 leçons faciles ?
Genre commencer par un langage un peu plus entonnoir, et ensuite aller vers du plus précis je suppose ?
Vous avez des ouvrages/sites efficaces pour apprendre ça en solo ?
Voilà, je prends tous les conseils que je peux trouver.
Merci!
Si tu veux juste apprendre la programmation, ne fais pas du web.
Le web est à mi-chemin entre les vieilles technos obsolètes et les nouvelles technos qui se cherchent encore. Tu as le choix entre "stable" et "de bonne qualité" (encore que "de bonne qualité" ça dépend), mais pas les deux.
Et puis le web c'est pas de la vraie programmation (la plupart des sites web ressemblent à des bouts de ficelle collés ensemble en espérant que ça tienne), mais ça faut pas leur dire sinon ils se fâchent.
Rust fanboy
Python c'est assez pédagogique (c'est-à-dire dégueulasse pour les mecs qui touchent ). Sinon tu peux aussi dégonfler ta bouée et découvrir de nouvelles sensations intellectuelles en tentant, chais pas, Prolog
Ca peut s'utiliser en ligne de commande ? (Histoire que je continue sur un seul .bat sans multiplier les logiciels.)
Je me permet de répondre car j'ai repris les cours (d'info, donc) il ya un peu plus d'un an a 24ans et je ne trouve pas que ce soit trop tard.
Après je suis d'accord avec Tomaka, mieux vaut apprendre à programmer que "faire du web".
Et si possible commencer avec un langage qui ne demande pas des kilotonnes de fichiers de config et qui ont une console, cela te permet de te concentrer sur la programmation et de jauger tes progrès.
Je suggérerai Ruby ou Python (et tu peux faire du web avec, assez facilement). Sinon le langage d'apprentissage de beaucoup de gens est le C mais n'en ayant moi-même pas fait je ne peux pas juger. Simplement je pense que personnellement j'aurai eu du mal à commencer en C mais en même temps je ne vois que maintenant ce que d'autres voient plus tôt grâce au C (arithmétique des pointeurs, problèmes de mémoire et ainsi de suite) et qui sont des notions très importantes.
Après c'est à toi de savoir ce que tu veux faire : apprendre à programmer ou savoir faire un site web avec de jolis rendus html/css.
Pour python il y a un tuto pas trop mal sur openclassrooms : http://fr.openclassrooms.com/informa...mmer-en-python
Pour ruby je ne connais que celui-ci (que j'avais fait avant d'entrer dans mon école) j'ai pas retrouvé la version originale en anglais. http://big-daddy.fr/repository/Docum...urs%20Ruby.pdf
En éspérant que ça aide, même un peu .
En python/ruby tu apprends à programmer, en C tu apprends à programmer mais aussi comment fonctionne un ordinateur.
Rust fanboy
Oui c'est ça, mais ça ne me gêne pas de ne voir ces aspects là qu'un an après avoir commencé.
Merci pour les retours, c'est super cool!
Du coup je vais peut-être plutôt m'orienter vers du C pour commencer par le gros morceau.
Le guide Python de OOCR c'est juste une horreur infâme... Pitié n'en parlait jamais... Il y a de bon mooc sur Python sur edx / coursera .
Perso j'ai commencé par Python avant de faire du C, j'ai tendance à faire des codes plus légers que certains de mes camarades qui ont commencé par le C mais les pointeurs j'ai ramé à comprendre... Je pense pas qu'il y ait une bonne ou une mauvaise école pour commencer c'est juste des approches différentes mais dans les deux y a de quoi bien s'amuser . La vraie question c'est tu veux faire quoi après ? Perso en tant que bioinfo Python est plus intéressant sur mon CV (c'est mes certificats python + mon expérience en R qui m'ont permis d'obtenir mon stage de M2 qui débute en mars 2015) le C est moins intéressant sur mon cv, alors que je pense qu'en info cela sera plutôt l'inverse .
Il y a pourtant des pointeurs cachés en Python, et si tu ne fais pas gaffe… boum.
Exemples :
Code:liste=[[]*15] a=[15,12] b=a fonction(a)
une balle, un imp (Newstuff #491, Edge, Duke it out in Doom, John Romero, DoomeD again)
Canard zizique : q 4, c, d, c, g, n , t-s, l, d, s, r, t, d, s, c, jv, c, g, b, p, b, m, c, 8 b, a, a-g, b, BOF, BOJV, c, c, c, c, e, e 80, e b, é, e, f, f, f, h r, i, J, j, m-u, m, m s, n, o, p, p-r, p, r, r r, r, r p, s, s d, t, t
Canard lecture
Oui ça pourrait pas marcher sans pointeurs (ou alors tout est manipulé sur la pile, avec le risque de la faire péter) c'est pareil en javascript mais on ne les manipule pas directement. Dans le cas que tu décris je ferai plutôt une copie de la liste.Ou utiliser le générique en faisant un 'import copy'Code:liste=[[]*15] a=[15,12] b = list(a)
@ookami Ben il m'a permi de mettre le pied à l'étrier en python (mais c'est pas le langage avec lequel j'ai appris, qui est javascript (node)) mais j'ai fait que le début du tuto (50pages peut être).
Pour l'objet en python y a le tuto de sam et max qui est assez conséquent (suis pas encore arrivé au bout). Et le blog en général regorge d'infos sur python. (merci Teocali )
Je maintiens le Phython (ou Ruby selon les autres palmipèdes mais je connais pas). C'est bien pour commencer, à mon sens, parce que ça se torche un peu avec les détail il me semble. La syntaxe est relativement souple tout comme le comportement des variables. Du coup ça permet d'aborder la pierre angulaire (toujours à mon sens) de la prog' ; l'algorithmique.
En C, je pense que tu vas d'abord te heurter à des problèmes autres que ceux de l'algorithmique pure (en Python aussi hein, mais ils seront bien plus surmontables). Tu risques aussi plus, en C, de chercher des trucs sur le net qui vont partir dans tous les sens (genre te faire glisser sur du C++ sans que tu t'en aperçoives).
Je dis pas que Python est un langage génial, mais pour apprendre ça me paraît cool. Une fois que tu as acquis cette espèce d'intuition du programmeur qui fait que quand on te dit "je veux un programme qui fait ça", tu attaques direct le code (ce dont je n'ai jamais été capable et qui est la raison pour laquelle je n'ai pas persisté dans l'info ), tu pourras passer au C ou choisir le langage qui te plaît.
Mais c'est mon avis de programmeur loupé
oui mais caché ils font moins peur mdr . Mais bon dans le C tu fais des fonctions qui renvoient X trucs, c'est phun (comme disent les jeunes )
Perso, j'ai appris avec http://inforef.be/swi/python.htm + Coursera (le mooc de Toronto) + edx (mooc du MIT 6.00.1).
Là je vais tenter de me faire le mooc 6.00.2, la suite pour renforcer mes connaissances pour le stage .
Ruby me tente mais il est pas au programme de cette année, il faudrait que je me lance dans le monde de JAVA (i n33d coff33).
@ook4mi Ha ouais celui de Swinnen est réputé, je l'avais commencé mais pas allé au bout non plus (on ne fait pas de python dans mon école, ce semestre c'est C# et ça me fait bizarre )
Il est juste génial ! C'est bien le C# ? Tu fais quoi avec ? J'en ai pas mal entendu parler et d'après ce qu'on m'a dit c'est assez prisé par certaines boites .
Moi pour le moment, je suis très partagé sur mon avenir car clairement c'est pas mes 2 années de master en bioinfo qui font de moi une machine à coder... T.T ! Je sais pas si je trouverais un taff avec mon master en poche ou si je devrais éventuellement tenter de conclure sur un second master cette fois en informatique (j'ai une licence de bio, je prog que depuis 2ans). J'ai une amie qui avec le master bioinfo à réussi à rentrer en ssii car elle avait fait du C# . Bref, je m'inquiète pour moi après mon master .
Pour l'instant on apprend le paradigme objet et le langage C# surtout mais on va bientôt attaquer un projet (3 mois) GUI (winforms). Probablement une simulation (de quoi jsais pas encore) qui vit sa vie toute seule une fois lancée.
J'aime bien C# mais je dois avouer que j'ai du mal à passer de python (temps libre) à C# (école) dans la même journée. Ca donne lieu à des phases de mongolisation extême chez moi .
J'ai un truc bizarre avec les SSE.
J'ai mis au point des fonctions accélérées SSE qui marchent bien, après les avoir testées dans un programme test d'un seul tenant.
J'encapsule ça dans une classe (une template avec un héritage, une autre à type fixe en .h d'un seul tenant). Eh ben ça fait un truc très bizarre
Le premier appel de la fonction SSE pour chaque instance de classe est ralenti, et tourne aussi vite que la fonction non optimisée. Les appels suivants, par contre, vont à la bonne vitesse.
C'est pas trop grave a priori, vu que l'intérêt pour moi est d'utiliser ce code dans une boucle, mais enfin, quand-même
Tu n'as aucune fonction virtuelle dans ta classe ?
Normalement, ta fonction devrait être inlinée dans tous les cas...
Dans la première classe, il y a du virtuel en effet. L'idée est d'avoir une classe de base qui gère le CPU classique et une classe dérivée qui redéfinit certaines méthodes pour être implémentées en SSE4 (et éventuellement AVX avec une autre classe, etc).
Dans la seconde, par contre, tout est vraiment basique de chez basique. Pas d'héritage, pas de templates, rien de rien. J'en bouffe mon clavier
Pour la mesure du temps, j'utilise soit boost::chrono, soit ceci, bricolé à partir de code donné dans ces colonnes. Ca donne la même chose à peu de choses près. Tant que j'ai pas d'écart, je reconnais que je fouille pas trop
Code:static inline uint64_t get_clock(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000000000LL + ts.tv_nsec; } // très sale #define TIMING( CODE ) \ { \ double t1, t2; \ t1 = get_clock(); \ \ CODE\ \ t2 = get_clock(); \ printf("\ntime spent ms: %g", ((double)t2 - t1) / 1000000); \ } \
En clair, c'est bricol'man, et majoritairement du wall time. Mais vu que mon code doit supporter l'exécution de plusieurs programmes concurrents, je ne peux pas me contenter de test synthétiques
Dernière modification par vectra ; 21/10/2014 à 22h03.
Ça peut marcher si la granularité des fonctions est assez grosse. Sinon l'indirection de l'appel de fonction va ajouter un overhead et surtout emmerder le compilo en l'empêchant d'inliner et d'optimiser tout ensemble.
Compile en -S -masm=intel et regarde la tronche du code généré.Dans la seconde, par contre, tout est vraiment basique de chez basique. Pas d'héritage, pas de templates, rien de rien. J'en bouffe mon clavier