SlideShare une entreprise Scribd logo
1  sur  99
goo.gl/4mmJQ




des statistiques en un coup de baguette magique




                        Claude Falguière - @cfalguiere

                         Devoxx France 20 Avril 2012


                                                         1
L’incantation du jour




                        2
L’incantation du jour




                        2
L’incantation du jour




                        3
L’incantation du jour




                        3
Claude Falguière


                      Architecte Technique
                      depuis plus de 10 ans




@cfalguiere


                                              4
Incanter : Clojure + R




                The R Project for
                Statistical Computing




                                        5
Incanter : Clojure + R


 =           +

                 The R Project for
                 Statistical Computing




                                         5
Incanter, quelles magies

    Charting & visualization

    Mathematical functions

      Statistical functions

Matrix & linear algebra functions

      Data manipulations



                                    6
Incanter, quelles magies

    Charting & visualization

    Mathematical functions

      Statistical functions

Matrix & linear algebra functions

      Data manipulations



                                    6
Incanter, quelles magies




                           7
Incanter, quelles magies
Probability distributions
                            Probabilités
Monte Carlo simulation




                                           7
Incanter, quelles magies
Probability distributions
                                  Probabilités
Monte Carlo simulation



                            Linear regression
                            Hypothesis / Significance / Correlation tests
                            Principal Componants Analysis (PCA)
      Statistiques
                            Statistical learning / Classification
                            Bayesian statistics
                            ...

                                                                           7
Langage fonctionnel
          Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle

Pas de
panique ...




                                                                           8
Langage fonctionnel
            Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle


Fonctions




                                                                             8
Langage fonctionnel
                      Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle


Fonctions

    Programme = emboîtement de fonctions
    que l'on peut voir comme des « boîtes noires »




                                                                                       8
Langage fonctionnel
                      Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle


Fonctions

    Programme = emboîtement de fonctions
    que l'on peut voir comme des « boîtes noires »


                 Chaque boîte possède plusieurs paramètres
                 en entrée mais une seule sortie




                                                                                       8
Langage fonctionnel
                      Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle


Fonctions

    Programme = emboîtement de fonctions
    que l'on peut voir comme des « boîtes noires »


                 Chaque boîte possède plusieurs paramètres
                 en entrée mais une seule sortie


                 Pas d’état => pas d’effet de bord




                                                                                       8
Clojure
LISP like       ((()()()))



                         compilé en bytecode
            Sur JVM
                         toutes les librairies Java sont disponibles



   Orienté            données immuables et collections persistantes
   concurrence        support du multi-threading


                                                                       9
Clojure - expressions




                        10
Clojure - expressions

(println "Hello Devoxx")   -> "Hello Devoxx"




                                               10
Clojure - expressions

(println "Hello Devoxx")   -> "Hello Devoxx"


(def conference "Devoxx")
(println "Hello" conference)




                                               10
Clojure - expressions

(println "Hello Devoxx")   -> "Hello Devoxx"


(def conference "Devoxx")
(println "Hello" conference)


(count (str "Hello" conference))   ->
                                   11




                                               10
Clojure - intégration Java




                             11
Clojure - intégration Java

(println "Hello"(.toUpperCase conference))




                                             11
Clojure - intégration Java

(println "Hello"(.toUpperCase conference))


(javax.swing.JOptionPane/showMessageDialog nil
"Hello Devoxx")




                                                 11
Clojure - fonctions




                      12
Clojure - fonctions
(def print-hello
   (fn[name] (println "Hello", name)))




                                         12
Clojure - fonctions
(def print-hello
   (fn[name] (println "Hello", name)))

(defn print-hello [name] (println "Hello", name))



(print-hello "Devoxx")




                                                    12
Clojure - fonctions
(def print-hello
   (fn[name] (println "Hello", name)))

(defn print-hello [name] (println "Hello", name))



(print-hello "Devoxx")


(def conferences '("Devoxx" "Mix-IT"))
(map #(str "Hello " %) conferences)
          -> ("Hello Devoxx" "Hello Mix-IT")


                                                    12
Clojure - les nombres




                        13
Clojure - les nombres


Boxés

Double par défaut




                                13
Clojure - les nombres

                    (+ 1 2 3)   -> 7
Boxés

Double par défaut




                                       13
Clojure - les nombres

                    (+ 1 2 3)       -> 7
Boxés
                    (+ 4 (* 2 3))    -> 10
Double par défaut




                                             13
Clojure - les nombres

                    (+ 1 2 3)       -> 7
Boxés
                    (+ 4 (* 2 3))    -> 10
Double par défaut
                    (= 2 (+ 1 1))    -> true




                                               13
Clojure - les nombres

                    (+ 1 2 3)       -> 7
Boxés
                    (+ 4 (* 2 3))    -> 10
Double par défaut
                    (= 2 (+ 1 1))    -> true
                    (= 1 1.0)        -> true




                                               13
Clojure - les collections

List,

Vector,

Set




                                      14
Clojure - les collections
             (def valuelist '(1 2 2 3))
             (def avector [1 2 2 3])
List,        (def aset #{1 2 3})
Vector,

Set




                                          14
Clojure - les collections
             (def valuelist '(1 2 2 3))
             (def avector [1 2 2 3])
List,        (def aset #{1 2 3})
Vector,

Set          (count valuelist)    -> 4
             (count '(2 1 3))     -> 3




                                          14
Clojure - les collections
             (def valuelist '(1 2 2 3))
             (def avector [1 2 2 3])
List,        (def aset #{1 2 3})
Vector,

Set          (count valuelist)    -> 4
             (count '(2 1 3))     -> 3


             (nth '(2 1 3) 0)     -> 2
             ([1 2 2 3] 0)        -> 1




                                          14
Clojure - les collections



Map




                                  15
Clojure - les collections

       (def colormap { "Black" 0, "White" 7} )
       (def person { :name "Alice", :score 2} )

Map




                                                  15
Clojure - les collections

       (def colormap { "Black" 0, "White" 7} )
       (def person { :name "Alice", :score 2} )

Map
       (colormap "White")     -> 7
       (person :name)         -> "Alice"




                                                  15
Clojure - les collections

          (def colormap { "Black" 0, "White" 7} )
          (def person { :name "Alice", :score 2} )

Map
          (colormap "White")     -> 7
          (person :name)         -> "Alice"


      (map #(:score %)
           (filter #(= (:name %) "Alice")
                persons))
                                          -> 1


                                                     15
Incanter - la collection Dataset




                                   16
Incanter - la collection Dataset
(def inputds
  (read-dataset "test-data.csv" :header true))




                                                 16
Incanter - la collection Dataset
(def inputds
  (read-dataset "test-data.csv" :header true))



($where {:status "true"}   inputds) -> les lignes OK




                                                       16
Incanter - la collection Dataset
(def inputds
  (read-dataset "test-data.csv" :header true))



($where {:status "true"}    inputds) -> les lignes OK

($ :t inputds)   -> la colonne t




                                                        16
Incanter - la collection Dataset
(def inputds
  (read-dataset "test-data.csv" :header true))



($where {:status "true"}    inputds) -> les lignes OK

($ :t inputds)   -> la colonne t

(mean ($ :t inputds))   -> la moyenne




                                                        16
Incanter - visualisation
(view inputds)




                               17
Incanter - visualisation
(view inputds)
(histogram :t :data inputds)




                               18
Incanter - visualisation
(view inputds)
(histogram :t :data inputds)
(time-series-plot :ts :t :data inputds))




                                           19
Incanter - initiation à la magie




                                   20
Incanter - initiation à la magie
Les grimoires


incanter.org
data-sorcery.org
github.com/liebke/incanter

clojure.org

4clojure.com




                                      20
Incanter - initiation à la magie




                                   21
Incanter - initiation à la magie
            L’atelier


            REPL

            Emacs
             - Slime

            Eclipse
            - CounterClockWise

            IDEA
            - La Clojure



                                   21
Incanter - initiation à la magie




                                   22
Incanter - initiation à la magie
                     Les assistants


                     Leiningen
                     Midge
                     Swank
                     ...




                                      22
Incanter - se lancer




                       23
Incanter - se lancer
La voie du novice

 downloader Incanter




cliquer sur l’icône




                                    23
Incanter - se lancer




                       24
Incanter - se lancer
La voie du gourou


installer clojure, lein, swank, incanter ...




                                               24
Incanter - se lancer



    La voie du gourou faineant

       installer cljr
       cljr install incanter
       cljr repl

      REPL & more (lein, swank, ...)



                                       24
Incanter - quelques incantations




                                   25
Incanter - quelques incantations

Le fichier tu liras
                                             Le graphe des temps de réponse tu
                                             afficheras
Les erreurs tu filtreras
                                             Les données tu grouperas par label
La moyenne des temps de réponse tu
calculeras
                                             Sur chaque groupe, la moyenne des
                                             temps tu produiras
Les statistiques des temps de
                                             Pour chaque groupe, l’histogramme
réponse tu calculeras
                                             tu produiras



       https://github.com/cfalguiere/Demo-Incanter-Devoxx-France


                                                                                  25
Incanter - incantation 1




                           26
Incanter - incantation 1

Le fichier tu liras
Les erreurs tu filtreras
La moyenne des temps de réponse tu calculeras




                                                26
Incanter - incantation 1

Le fichier tu liras
Les erreurs tu filtreras
La moyenne des temps de réponse tu calculeras

 https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo1.clj




                                                 851.7333333333333




                                                                                   26
Incanter - incantation 2




                           27
Incanter - incantation 2

Le fichier tu liras
Les erreurs tu filtreras
Les statistiques des temps de réponse tu calculeras




                                                      27
Incanter - incantation 2

Le fichier tu liras
Les erreurs tu filtreras
Les statistiques des temps de réponse tu calculeras

 https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo2.clj



         {"sd" 1366.7118238764929,
         "mean" 851.7333333333333,
         "count" 15}




                                                                                   27
Incanter - incantation 3




                           28
Incanter - incantation 3

Le fichier tu liras
Les erreurs tu filtreras
Le graphe des temps de réponse tu afficheras




                                              28
Incanter - incantation 3

Le fichier tu liras
Les erreurs tu filtreras
Le graphe des temps de réponse tu afficheras

https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo3.clj




                                                                                  28
Incanter - incantation 4




                           29
Incanter - incantation 4
 Le fichier tu liras
Les erreurs tu filtreras
Les données tu grouperas par label
Sur chaque groupe, la moyenne des temps tu produiras




                                                       29
Incanter - incantation 4
   Le fichier tu liras
  Les erreurs tu filtreras
  Les données tu grouperas par label
  Sur chaque groupe, la moyenne des temps tu produiras

https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.clj
https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo4.clj



        {"SearchProduct" 1255.5, "HomePage" 341.75}




                                                                                           29
Incanter - incantation 5




                           30
Incanter - incantation 5
 Le fichier tu liras
Les erreurs tu filtreras
Les données tu grouperas par label
Pour chaque groupe, l’histogramme tu produiras




                                                 30
Incanter - incantation 5
   Le fichier tu liras
  Les erreurs tu filtreras
  Les données tu grouperas par label
  Pour chaque groupe, l’histogramme tu produiras


https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.clj
https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo5.clj




                                                                                           30
Incanter - les secrets du magicien




                                     31
Incanter - les secrets du magicien

 Parallel Colt a multi-threaded version of Colt

  https://sites.google.com/site/piotrwendykier/software/parallelcolt




                                                                       31
Incanter - les secrets du magicien

 Parallel Colt a multi-threaded version of Colt

  https://sites.google.com/site/piotrwendykier/software/parallelcolt


Colt a set of Open Source Libraries for High Performance Scientific and Technical Comput

  http://acs.lbl.gov/software/colt/




                                                                                    31
Incanter - les secrets du magicien

 Parallel Colt a multi-threaded version of Colt

  https://sites.google.com/site/piotrwendykier/software/parallelcolt


Colt a set of Open Source Libraries for High Performance Scientific and Technical Comput

  http://acs.lbl.gov/software/colt/

 Netlib-Java                   a collection of mission-critical software
 components for linear algebra systems (i.e. working with vectors or matrices)

   http://code.google.com/p/netlib-java/




                                                                                    31
Incanter - les secrets du magicien




                                     32
Incanter - les secrets du magicien
 OpenCVS

  http://www.opencvs.org/




                                     32
Incanter - les secrets du magicien
 OpenCVS
                            POI
  http://www.opencvs.org/
                            a Java API for microsoft documents


                            http://poi.apache.org/




                                                                 32
Incanter - les secrets du magicien
 OpenCVS
                                                POI
  http://www.opencvs.org/
                                                  a Java API for microsoft documents


                                                  http://poi.apache.org/



                      CongoMongo

                       a Clojure wrapper for mongo-db API


                       https://github.com/aboekhoff/congomongo



                                                                                       32
Incanter - les secrets du magicien




                                     33
Incanter - les secrets du magicien
 iText

  a library that allows you to create and manipulate PDF documents.


  http://itextpdf.com/




                                                                      33
Incanter - les secrets du magicien
 iText

  a library that allows you to create and manipulate PDF documents.


  http://itextpdf.com/
                                     JLaTeXMath

                                       display mathematical formulas written in LaTeX


                                       http://forge.scilab.org/index.php/p/jlatexmath/




                                                                                         33
Incanter - les secrets du magicien
 iText

  a library that allows you to create and manipulate PDF documents.


  http://itextpdf.com/
                                       JLaTeXMath

                                         display mathematical formulas written in LaTeX


                                         http://forge.scilab.org/index.php/p/jlatexmath/



              JFreeChart

                http://www.jfree.org/jfreechart/

                                                                                           33
Incanter - les secrets du magicien
 iText

  a library that allows you to create and manipulate PDF documents.


  http://itextpdf.com/
                                       JLaTeXMath

                                         display mathematical formulas written in LaTeX


                                         http://forge.scilab.org/index.php/p/jlatexmath/



              JFreeChart

                http://www.jfree.org/jfreechart/

                                                                                           33
Incanter - les secrets du magicien




                                     34
Incanter - les secrets du magicien

     JLine

      a Java library for handling console input


      http://jline.sourceforge.net/




                                                  34
Incanter - les écoles de magie




                                 35
Incanter - les écoles de magie

http://dev.clojure.org/display/community/Clojure+User+Groups

              Paris Clojure User Group

                Incanter Google Group

                Incanter & Clojure sur
                Stackoverflow



                                                               35
36
Merci
Bonnes incantations !



                        36

Contenu connexe

Tendances

Librairies Java qui changent la vie
Librairies Java qui changent la vieLibrairies Java qui changent la vie
Librairies Java qui changent la viecluelessjoe
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...ECAM Brussels Engineering School
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...MICHRAFY MUSTAFA
 

Tendances (20)

Librairies Java qui changent la vie
Librairies Java qui changent la vieLibrairies Java qui changent la vie
Librairies Java qui changent la vie
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Python avancé : Tuple et objet
Python avancé : Tuple et objetPython avancé : Tuple et objet
Python avancé : Tuple et objet
 
Change mind about JS
Change mind about JSChange mind about JS
Change mind about JS
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...Interface fonctionnelle, Lambda expression, méthode par défaut,  référence de...
Interface fonctionnelle, Lambda expression, méthode par défaut, référence de...
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 

En vedette

Médias sociaux et relations publiques
Médias sociaux et relations publiquesMédias sociaux et relations publiques
Médias sociaux et relations publiques Michelle Blanc
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Certification nationale A2-B1 d'allemand session 2016
Certification nationale A2-B1 d'allemand session 2016Certification nationale A2-B1 d'allemand session 2016
Certification nationale A2-B1 d'allemand session 2016Jean-Marc Dubois
 
Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?LaNetscouade
 
Tendances Web Marketing 2013
Tendances Web Marketing 2013Tendances Web Marketing 2013
Tendances Web Marketing 2013WSI France
 
2013 Guide IDEAS des bonnes pratiques
2013 Guide IDEAS des bonnes pratiques2013 Guide IDEAS des bonnes pratiques
2013 Guide IDEAS des bonnes pratiquesAsso Asah
 
L’acquisition d’entreprises en difficulte
L’acquisition d’entreprises en difficulteL’acquisition d’entreprises en difficulte
L’acquisition d’entreprises en difficulteALTIUS
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Emiland
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessJonathon Colman
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseYannick Pavard
 

En vedette (20)

Droit d'auteur belge en 2011
Droit d'auteur belge en 2011Droit d'auteur belge en 2011
Droit d'auteur belge en 2011
 
Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012
 
L’e mailing2012
L’e mailing2012L’e mailing2012
L’e mailing2012
 
L'économie des télécoms en France - 2011
L'économie des télécoms en France - 2011L'économie des télécoms en France - 2011
L'économie des télécoms en France - 2011
 
Le savoir traditionnel et la cybercartographie
Le savoir traditionnel et la cybercartographieLe savoir traditionnel et la cybercartographie
Le savoir traditionnel et la cybercartographie
 
Médias sociaux et relations publiques
Médias sociaux et relations publiquesMédias sociaux et relations publiques
Médias sociaux et relations publiques
 
Symfony à la télé
Symfony à la téléSymfony à la télé
Symfony à la télé
 
Faire un scan du réseau avec NMAP
Faire un scan du réseau avec NMAPFaire un scan du réseau avec NMAP
Faire un scan du réseau avec NMAP
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Certification nationale A2-B1 d'allemand session 2016
Certification nationale A2-B1 d'allemand session 2016Certification nationale A2-B1 d'allemand session 2016
Certification nationale A2-B1 d'allemand session 2016
 
Modelisation et maquettage 2015
Modelisation et maquettage 2015Modelisation et maquettage 2015
Modelisation et maquettage 2015
 
Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?
 
Tendances Web Marketing 2013
Tendances Web Marketing 2013Tendances Web Marketing 2013
Tendances Web Marketing 2013
 
2013 Guide IDEAS des bonnes pratiques
2013 Guide IDEAS des bonnes pratiques2013 Guide IDEAS des bonnes pratiques
2013 Guide IDEAS des bonnes pratiques
 
J2 me
J2 meJ2 me
J2 me
 
Les chefs étoilés Drômois
Les chefs étoilés DrômoisLes chefs étoilés Drômois
Les chefs étoilés Drômois
 
L’acquisition d’entreprises en difficulte
L’acquisition d’entreprises en difficulteL’acquisition d’entreprises en difficulte
L’acquisition d’entreprises en difficulte
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for Success
 
Barre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et EclipseBarre pour développeur Firefox et Eclipse
Barre pour développeur Firefox et Eclipse
 

Similaire à Quickie Incanter/Clojure à Devoxx France 2012

Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Pablo Tamarit
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojurelolopetit
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Aurélien Maury
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013Zenika
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Guillaume Laforge
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP EL JAOUARI Ahmed
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 

Similaire à Quickie Incanter/Clojure à Devoxx France 2012 (20)

Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Drools
DroolsDrools
Drools
 
Ce bon vieux propel
Ce bon vieux propelCe bon vieux propel
Ce bon vieux propel
 
PHP.pptx
PHP.pptxPHP.pptx
PHP.pptx
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 

Plus de Claude Falguiere

H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016Claude Falguiere
 
Pres perf human talks mars 2015
Pres perf human talks mars 2015Pres perf human talks mars 2015
Pres perf human talks mars 2015Claude Falguiere
 
Presentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agilePresentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agileClaude Falguiere
 
Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataClaude Falguiere
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesClaude Falguiere
 
Présentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesPrésentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesClaude Falguiere
 
Présentation Performances Montpellier
Présentation Performances Montpellier Présentation Performances Montpellier
Présentation Performances Montpellier Claude Falguiere
 
Pres android nuit de l'info v3
Pres android nuit de l'info v3Pres android nuit de l'info v3
Pres android nuit de l'info v3Claude Falguiere
 
Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Claude Falguiere
 
La marmite Intro session NoSQL
La marmite Intro session NoSQLLa marmite Intro session NoSQL
La marmite Intro session NoSQLClaude Falguiere
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec IncanterClaude Falguiere
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec IncanterClaude Falguiere
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh campClaude Falguiere
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Claude Falguiere
 

Plus de Claude Falguiere (20)

H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016
 
Pres perf human talks mars 2015
Pres perf human talks mars 2015Pres perf human talks mars 2015
Pres perf human talks mars 2015
 
Devoxx 2014 monitoring
Devoxx 2014 monitoringDevoxx 2014 monitoring
Devoxx 2014 monitoring
 
Devoxx 2014 Monitoring
Devoxx 2014 Monitoring Devoxx 2014 Monitoring
Devoxx 2014 Monitoring
 
Presentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agilePresentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agile
 
Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big Data
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de Nantes
 
Présentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesPrésentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de Nantes
 
Présentation Performances Montpellier
Présentation Performances Montpellier Présentation Performances Montpellier
Présentation Performances Montpellier
 
Pres android nuit de l'info v3
Pres android nuit de l'info v3Pres android nuit de l'info v3
Pres android nuit de l'info v3
 
Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012
 
La marmite Intro session NoSQL
La marmite Intro session NoSQLLa marmite Intro session NoSQL
La marmite Intro session NoSQL
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec Incanter
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec Incanter
 
Incanter bigdata jsc2012
Incanter bigdata jsc2012Incanter bigdata jsc2012
Incanter bigdata jsc2012
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Usine logicielle ios
Usine logicielle iosUsine logicielle ios
Usine logicielle ios
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh camp
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
 

Quickie Incanter/Clojure à Devoxx France 2012

  • 1. goo.gl/4mmJQ des statistiques en un coup de baguette magique Claude Falguière - @cfalguiere Devoxx France 20 Avril 2012 1
  • 6. Claude Falguière Architecte Technique depuis plus de 10 ans @cfalguiere 4
  • 7. Incanter : Clojure + R The R Project for Statistical Computing 5
  • 8. Incanter : Clojure + R = + The R Project for Statistical Computing 5
  • 9. Incanter, quelles magies Charting & visualization Mathematical functions Statistical functions Matrix & linear algebra functions Data manipulations 6
  • 10. Incanter, quelles magies Charting & visualization Mathematical functions Statistical functions Matrix & linear algebra functions Data manipulations 6
  • 12. Incanter, quelles magies Probability distributions Probabilités Monte Carlo simulation 7
  • 13. Incanter, quelles magies Probability distributions Probabilités Monte Carlo simulation Linear regression Hypothesis / Significance / Correlation tests Principal Componants Analysis (PCA) Statistiques Statistical learning / Classification Bayesian statistics ... 7
  • 14. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle Pas de panique ... 8
  • 15. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle Fonctions 8
  • 16. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle Fonctions Programme = emboîtement de fonctions que l'on peut voir comme des « boîtes noires » 8
  • 17. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle Fonctions Programme = emboîtement de fonctions que l'on peut voir comme des « boîtes noires » Chaque boîte possède plusieurs paramètres en entrée mais une seule sortie 8
  • 18. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelle Fonctions Programme = emboîtement de fonctions que l'on peut voir comme des « boîtes noires » Chaque boîte possède plusieurs paramètres en entrée mais une seule sortie Pas d’état => pas d’effet de bord 8
  • 19. Clojure LISP like ((()()())) compilé en bytecode Sur JVM toutes les librairies Java sont disponibles Orienté données immuables et collections persistantes concurrence support du multi-threading 9
  • 21. Clojure - expressions (println "Hello Devoxx") -> "Hello Devoxx" 10
  • 22. Clojure - expressions (println "Hello Devoxx") -> "Hello Devoxx" (def conference "Devoxx") (println "Hello" conference) 10
  • 23. Clojure - expressions (println "Hello Devoxx") -> "Hello Devoxx" (def conference "Devoxx") (println "Hello" conference) (count (str "Hello" conference)) -> 11 10
  • 25. Clojure - intégration Java (println "Hello"(.toUpperCase conference)) 11
  • 26. Clojure - intégration Java (println "Hello"(.toUpperCase conference)) (javax.swing.JOptionPane/showMessageDialog nil "Hello Devoxx") 11
  • 28. Clojure - fonctions (def print-hello (fn[name] (println "Hello", name))) 12
  • 29. Clojure - fonctions (def print-hello (fn[name] (println "Hello", name))) (defn print-hello [name] (println "Hello", name)) (print-hello "Devoxx") 12
  • 30. Clojure - fonctions (def print-hello (fn[name] (println "Hello", name))) (defn print-hello [name] (println "Hello", name)) (print-hello "Devoxx") (def conferences '("Devoxx" "Mix-IT")) (map #(str "Hello " %) conferences) -> ("Hello Devoxx" "Hello Mix-IT") 12
  • 31. Clojure - les nombres 13
  • 32. Clojure - les nombres Boxés Double par défaut 13
  • 33. Clojure - les nombres (+ 1 2 3) -> 7 Boxés Double par défaut 13
  • 34. Clojure - les nombres (+ 1 2 3) -> 7 Boxés (+ 4 (* 2 3)) -> 10 Double par défaut 13
  • 35. Clojure - les nombres (+ 1 2 3) -> 7 Boxés (+ 4 (* 2 3)) -> 10 Double par défaut (= 2 (+ 1 1)) -> true 13
  • 36. Clojure - les nombres (+ 1 2 3) -> 7 Boxés (+ 4 (* 2 3)) -> 10 Double par défaut (= 2 (+ 1 1)) -> true (= 1 1.0) -> true 13
  • 37. Clojure - les collections List, Vector, Set 14
  • 38. Clojure - les collections (def valuelist '(1 2 2 3)) (def avector [1 2 2 3]) List, (def aset #{1 2 3}) Vector, Set 14
  • 39. Clojure - les collections (def valuelist '(1 2 2 3)) (def avector [1 2 2 3]) List, (def aset #{1 2 3}) Vector, Set (count valuelist) -> 4 (count '(2 1 3)) -> 3 14
  • 40. Clojure - les collections (def valuelist '(1 2 2 3)) (def avector [1 2 2 3]) List, (def aset #{1 2 3}) Vector, Set (count valuelist) -> 4 (count '(2 1 3)) -> 3 (nth '(2 1 3) 0) -> 2 ([1 2 2 3] 0) -> 1 14
  • 41. Clojure - les collections Map 15
  • 42. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} ) Map 15
  • 43. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} ) Map (colormap "White") -> 7 (person :name) -> "Alice" 15
  • 44. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} ) Map (colormap "White") -> 7 (person :name) -> "Alice" (map #(:score %) (filter #(= (:name %) "Alice") persons)) -> 1 15
  • 45. Incanter - la collection Dataset 16
  • 46. Incanter - la collection Dataset (def inputds (read-dataset "test-data.csv" :header true)) 16
  • 47. Incanter - la collection Dataset (def inputds (read-dataset "test-data.csv" :header true)) ($where {:status "true"} inputds) -> les lignes OK 16
  • 48. Incanter - la collection Dataset (def inputds (read-dataset "test-data.csv" :header true)) ($where {:status "true"} inputds) -> les lignes OK ($ :t inputds) -> la colonne t 16
  • 49. Incanter - la collection Dataset (def inputds (read-dataset "test-data.csv" :header true)) ($where {:status "true"} inputds) -> les lignes OK ($ :t inputds) -> la colonne t (mean ($ :t inputds)) -> la moyenne 16
  • 51. Incanter - visualisation (view inputds) (histogram :t :data inputds) 18
  • 52. Incanter - visualisation (view inputds) (histogram :t :data inputds) (time-series-plot :ts :t :data inputds)) 19
  • 53. Incanter - initiation à la magie 20
  • 54. Incanter - initiation à la magie Les grimoires incanter.org data-sorcery.org github.com/liebke/incanter clojure.org 4clojure.com 20
  • 55. Incanter - initiation à la magie 21
  • 56. Incanter - initiation à la magie L’atelier REPL Emacs - Slime Eclipse - CounterClockWise IDEA - La Clojure 21
  • 57. Incanter - initiation à la magie 22
  • 58. Incanter - initiation à la magie Les assistants Leiningen Midge Swank ... 22
  • 59. Incanter - se lancer 23
  • 60. Incanter - se lancer La voie du novice downloader Incanter cliquer sur l’icône 23
  • 61. Incanter - se lancer 24
  • 62. Incanter - se lancer La voie du gourou installer clojure, lein, swank, incanter ... 24
  • 63. Incanter - se lancer La voie du gourou faineant installer cljr cljr install incanter cljr repl REPL & more (lein, swank, ...) 24
  • 64. Incanter - quelques incantations 25
  • 65. Incanter - quelques incantations Le fichier tu liras Le graphe des temps de réponse tu afficheras Les erreurs tu filtreras Les données tu grouperas par label La moyenne des temps de réponse tu calculeras Sur chaque groupe, la moyenne des temps tu produiras Les statistiques des temps de Pour chaque groupe, l’histogramme réponse tu calculeras tu produiras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France 25
  • 67. Incanter - incantation 1 Le fichier tu liras Les erreurs tu filtreras La moyenne des temps de réponse tu calculeras 26
  • 68. Incanter - incantation 1 Le fichier tu liras Les erreurs tu filtreras La moyenne des temps de réponse tu calculeras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo1.clj 851.7333333333333 26
  • 70. Incanter - incantation 2 Le fichier tu liras Les erreurs tu filtreras Les statistiques des temps de réponse tu calculeras 27
  • 71. Incanter - incantation 2 Le fichier tu liras Les erreurs tu filtreras Les statistiques des temps de réponse tu calculeras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo2.clj {"sd" 1366.7118238764929, "mean" 851.7333333333333, "count" 15} 27
  • 73. Incanter - incantation 3 Le fichier tu liras Les erreurs tu filtreras Le graphe des temps de réponse tu afficheras 28
  • 74. Incanter - incantation 3 Le fichier tu liras Les erreurs tu filtreras Le graphe des temps de réponse tu afficheras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo3.clj 28
  • 76. Incanter - incantation 4 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Sur chaque groupe, la moyenne des temps tu produiras 29
  • 77. Incanter - incantation 4 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Sur chaque groupe, la moyenne des temps tu produiras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.clj https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo4.clj {"SearchProduct" 1255.5, "HomePage" 341.75} 29
  • 79. Incanter - incantation 5 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Pour chaque groupe, l’histogramme tu produiras 30
  • 80. Incanter - incantation 5 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Pour chaque groupe, l’histogramme tu produiras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.clj https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo5.clj 30
  • 81. Incanter - les secrets du magicien 31
  • 82. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcolt 31
  • 83. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcolt Colt a set of Open Source Libraries for High Performance Scientific and Technical Comput http://acs.lbl.gov/software/colt/ 31
  • 84. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcolt Colt a set of Open Source Libraries for High Performance Scientific and Technical Comput http://acs.lbl.gov/software/colt/ Netlib-Java a collection of mission-critical software components for linear algebra systems (i.e. working with vectors or matrices) http://code.google.com/p/netlib-java/ 31
  • 85. Incanter - les secrets du magicien 32
  • 86. Incanter - les secrets du magicien OpenCVS http://www.opencvs.org/ 32
  • 87. Incanter - les secrets du magicien OpenCVS POI http://www.opencvs.org/ a Java API for microsoft documents http://poi.apache.org/ 32
  • 88. Incanter - les secrets du magicien OpenCVS POI http://www.opencvs.org/ a Java API for microsoft documents http://poi.apache.org/ CongoMongo a Clojure wrapper for mongo-db API https://github.com/aboekhoff/congomongo 32
  • 89. Incanter - les secrets du magicien 33
  • 90. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ 33
  • 91. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ 33
  • 92. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ JFreeChart http://www.jfree.org/jfreechart/ 33
  • 93. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ JFreeChart http://www.jfree.org/jfreechart/ 33
  • 94. Incanter - les secrets du magicien 34
  • 95. Incanter - les secrets du magicien JLine a Java library for handling console input http://jline.sourceforge.net/ 34
  • 96. Incanter - les écoles de magie 35
  • 97. Incanter - les écoles de magie http://dev.clojure.org/display/community/Clojure+User+Groups Paris Clojure User Group Incanter Google Group Incanter & Clojure sur Stackoverflow 35
  • 98. 36

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n