SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
MACHINE LEARNING POUR
TOUS
L'éducation a des racines amères, mais ses fruits sont doux
Forum AFUP, Paris, 2015
AGENDA
Comment enseigner à un ordinateur
Application à la recherche de code dans les commentaires
Des apprentissages complexes
INTERVENANT
Damien Seguy
Directeur technique à Exakat
Services d'analyse de code
APPLICATIONS
Detection de fraude et estimation du risque
Traduction automatique ou la transcription automatique
Reconnaissance de caractères ou de visages
Les diagnostics médicaux
La reconnaissance de bon code PHP
MACHINE LEARNING
Machine : l'ordinateur
Learning : apprentissage
Il se bâtit un modèle tout seul : phase d'entrainement
Il propose alors des prédictions : phase d'utilisation
APPRENTISSAGE SURPERVISÉ
Données
Historiques Apprentissage
ModèleDonnées
réelles
Résultat
APPLICATION PRATIQUE
Détecter du code dans les commentaires
Un problème classique
Un bon problème de machine learning
Complexe, pas de solution simple
Permet de faire des tests avec beaucoup de données
THE FANN EXTENSION
ext/fann (https://pecl.php.net/package/fann)
Fast Artificial Neural Network
http://leenissen.dk/fann/wp/
Réseaux Neuronaux en PHP
RÉSEAUX NEURONAUX
Imitation de la nature
Couche d'entrée
Couche de sortie
Neurones intermédiaires et
couches de neurones
RÉSEAUX NEURONAUX
Imitation de la nature
Couche d'entrée
Couche de sortie
Neurones intermédiaires et
couches de neurones
INITIALISATION
<?php
$num_layers  = 1;
$num_input  = 5;
$num_neurons_hidden = 3;
$num_output  = 1;
$ann = fann_create_standard($num_layers, $num_input, 
$num_neurons_hidden, $num_output);
// fonction d'activation
fann_set_activation_function_hidden($ann, 
FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, 
FANN_SIGMOID_SYMMETRIC);
EXPERTISE
// Test if the if is in a compressed format
// none need yet
// icon
// There is a parser specified in `Parser::$KEYWORD_PARSERS`
// Show generated config file in a <textarea>
// numGlyphs + 1
// $a && $b and multidimensional
// $result should exist, regardless of $_message
// if(ob_get_clean()){
//$annots .= ' /StructParent ';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
VECTEUR D'ENTRÉE
'length' : taille du commentaire
'countDollar' : présence du $
'countEqual' : présence du =
'countObjectOperator' présence du ->
'countSemicolon' : présence de ;
DONNÉES D'ENTRÉE
46 5 1
825 0 0 0 1
0
37 2 0 0 0
0
55 2 2 0 1
1
61 2 1 3 1
1
...
 * This file is part of Exakat.
 *
 * Exakat is free software: you can redist
 * it under the terms of the GNU Affero Ge
 * the Free Software Foundation, either ve
 * (at your option) any later version.
 *
 * Exakat is distributed in the hope that 
 * but WITHOUT ANY WARRANTY; without even 
 * MERCHANTABILITY or FITNESS FOR A PARTIC
 * GNU Affero General Public License for m
 *
 * You should have received a copy of the 
 * along with Exakat.  If not, see <http:/
 *
 * The latest code can be found at <http:/
 *
*/
// $x[3] or $x[] and multidimensional
//if ($round == 3) { die('Round '.$round);
//$this->errors[] = $this->language->get('
APPRENTISSAGE
$max_epochs  = 500000;
$desired_error  = 0.001;
// apprentissage lui-même
if (fann_train_on_file($ann, 
'leçon.data', 
$max_epochs, 
$epochs_between_reports, 
$desired_error)) {
        fann_save($ann, 'appris.out');
}
fann_destroy($ann);
?>
APPRENTISSAGE
47 leçons
5 caractéristiques
3 neurones
Durée d'exécution : 5,711 s
EXPLOITATION
Données
Historiques Apprentissage
ModèleDonnées
réelles
Résultat
EXPLOITATION
<?php 
$ann = fann_create_from_file('appris.out'); 
$commentaire = "//$gvars = $this->getGraphicVars();";
$input  = makeVector($commentaire);
$resultats = fann_run($ann, $input); 
if ($resultats[0] > 0.8) { 
     print ""$commentaire" : -> $resultats[0] %n"; 
} 
?>
DONNÉES RÉELLES
Testé sur 14093 cas
Durée d'exécution 367.01ms
Trouvé 665 cas (5%)
99.999893
// $cfg['Servers'][$i]['controlhost'] = '';    
99.999928
//$_SESSION['Import_message'] = $message->getDisplay();    
/* 99.999928
if (defined('SESSIONUPLOAD')) {
    // write sessionupload back into the loaded PMA session
    $sessionupload = unserialize(SESSIONUPLOAD);
    foreach ($sessionupload as $key => $value) {
        $_SESSION[$key] = $value;
    }
    // remove session upload data that are not set anymore
    foreach ($_SESSION as $key => $value) {
        if (mb_substr($key, 0, mb_strlen(UPLOAD_PREFIX))
            == UPLOAD_PREFIX
            && ! isset($sessionupload[$key])
        ) {
            unset($_SESSION[$key]);
        }
    }
98.780382
//LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232    
99.361396
// We have server(s) => apply default configuration
    
98.383027
// Duration = as configured    
99.999928
// original -> translation mapping    
97.590065
// = (   59 x 84   ) mm  = (  2.32 x 3.31  ) in    
Vrai positif Faux positif
Vrai négatif Faux négatif
Rapporté
par le RN
Objectif
Vrai positif Faux positif
Vrai négatif Faux négatif
Rapporté
par le RN
Objectif
// $cfg['Servers'][$i]['table_coords'] = 'pma__tabl
//(isset($attribs['height'])?$attribs['height']: 1)
// if ($key != null) did not work for index "0"    
// the PASSWORD() function    
99.999923
73.295981
99.999851
2.104115
BILAN
665 code trouvés
72% de faux positifs
mais après nettoyage facile, il reste 23% de faux positif
Analyse de 14k commentaires en 367 ms
// = (   59 x 84   ) mm  = (  2.32 x 3.31  ) in    
RETROACTION
Amélioration de la base
d'entrainement
Ajout/retraits de caractéristiques
Changement de configuration du
RN
Nouvel apprentissage
Nouvelle validation
Données
réelles
Données
Historiques
Apprentissage
Modèle Résultat
Rétraction
AMÉLIORATION DE LA BASE
Augmentation de la taille
Variété des situations
Inclusion des cas particuliers rencontrés
Accumulation d'expérience
REVUE DES CARACTÉRISTIQUES
Ajouts de nouvelles caractéristiques
Retrait des caractéristiques moins pertinentes
CONFIGURATION DU RN
Vecteurs d'entrée
Couches intermédiaires 

et neurones cachés
Fonction d'activation
Vecteur de sortie
PILOTAGE AUTOMATIQUE
Tester sur différentes

configurations
Identifier les résultats
Idéalement, retirer 

les faux positifs
Résultats
Nombre de couches
Nombre de neurones
SYNOPSIS
Selection d'une base de données d'apprentissage
Configuration du RN
Apprentissage
Validation sur des données de tests
Retroaction
AUTRESTECHNIQUES
Réseaux Bayésiens
Algorithmes génétiques
Apprentissage par renforcement
APPRENTISSAGE PAR
RENFORCEMENT
Logiciel
Monde réel
Récompense
ActionRéaction
FILTRES BAYESIENS
ALGORITHMES GÉNÉTIQUES
Population
Population
Selection
Reproduction
PopulationVariations
QUELQUES OUTILS
PHP ext/fann
Langage R
https://github.com/kachkaev/php-r
Scikit-learn
https://github.com/scikit-learn/scikit-learn
Mahout
https://mahout.apache.org/
MERCI
@exakat
http://joind.in/talk/view/15265
AUTRES CONFIGURATIONS
Fonction d'activation
FANN_SIGMOID_SYMMETRIC
FANN_LINEAR
FANN_THRESHOLD
FANN_SIN_SYMMETRIC
Linéaire Seuil
Tangeante
Gaussienne Quadratique
Sigmoide
QUELLES APPLICATIONS?
Non-déterministe
Elimination de tout ce qui est systématique à trouver
Accès à l'expertise et aux vecteurs de caractéristiques
Couche finale après les résultats
Classification, priorisation, approximation rapide

Contenu connexe

En vedette

Apprentissage Automatique et moteurs de recherche
Apprentissage Automatique et moteurs de rechercheApprentissage Automatique et moteurs de recherche
Apprentissage Automatique et moteurs de recherchePhilippe YONNET
 
Machine intelligente d’analyse financiere
Machine intelligente d’analyse financiereMachine intelligente d’analyse financiere
Machine intelligente d’analyse financiereSabrine MASTOURA
 
Machine learning
Machine learningMachine learning
Machine learningebiznext
 
Mix it2014 - Machine Learning et Régulation Numérique
Mix it2014 - Machine Learning et Régulation NumériqueMix it2014 - Machine Learning et Régulation Numérique
Mix it2014 - Machine Learning et Régulation NumériqueDidier Girard
 
Mahout classification presentation
Mahout classification presentationMahout classification presentation
Mahout classification presentationNaoki Nakatani
 
Machine learning, deep learning et search : à quand ces innovations dans nos ...
Machine learning, deep learning et search : à quand ces innovations dans nos ...Machine learning, deep learning et search : à quand ces innovations dans nos ...
Machine learning, deep learning et search : à quand ces innovations dans nos ...Antidot
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage AutomatiqueNizar Bechir
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkAmal Abid
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBaseAmal Abid
 
Machine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionMachine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionVarad Meru
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 

En vedette (12)

Mahout clustering
Mahout clusteringMahout clustering
Mahout clustering
 
Apprentissage Automatique et moteurs de recherche
Apprentissage Automatique et moteurs de rechercheApprentissage Automatique et moteurs de recherche
Apprentissage Automatique et moteurs de recherche
 
Machine intelligente d’analyse financiere
Machine intelligente d’analyse financiereMachine intelligente d’analyse financiere
Machine intelligente d’analyse financiere
 
Machine learning
Machine learningMachine learning
Machine learning
 
Mix it2014 - Machine Learning et Régulation Numérique
Mix it2014 - Machine Learning et Régulation NumériqueMix it2014 - Machine Learning et Régulation Numérique
Mix it2014 - Machine Learning et Régulation Numérique
 
Mahout classification presentation
Mahout classification presentationMahout classification presentation
Mahout classification presentation
 
Machine learning, deep learning et search : à quand ces innovations dans nos ...
Machine learning, deep learning et search : à quand ces innovations dans nos ...Machine learning, deep learning et search : à quand ces innovations dans nos ...
Machine learning, deep learning et search : à quand ces innovations dans nos ...
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage Automatique
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBase
 
Machine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An IntroductionMachine Learning and Apache Mahout : An Introduction
Machine Learning and Apache Mahout : An Introduction
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 

Similaire à Machine learning pour tous

Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
De Legacy à Symfony
De Legacy à SymfonyDe Legacy à Symfony
De Legacy à SymfonyAlayaCare
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJsimeon
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Surveiller son ordinateur de façon efficace
Surveiller son ordinateur de façon efficaceSurveiller son ordinateur de façon efficace
Surveiller son ordinateur de façon efficacePrénom Nom de famille
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowMathias Kluba
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Hamza Ben Marzouk
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPrestaShop
 
Lbv Dev Meetup #3
Lbv Dev Meetup #3Lbv Dev Meetup #3
Lbv Dev Meetup #3LbvDev
 
Partagez votre code et non vos secrets
Partagez votre code et non vos secretsPartagez votre code et non vos secrets
Partagez votre code et non vos secretsOpen Source Experience
 
Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011jonasmonnier
 

Similaire à Machine learning pour tous (20)

Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
De Legacy à Symfony
De Legacy à SymfonyDe Legacy à Symfony
De Legacy à Symfony
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Surveiller son ordinateur de façon efficace
Surveiller son ordinateur de façon efficaceSurveiller son ordinateur de façon efficace
Surveiller son ordinateur de façon efficace
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - Specflow
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015
 
rapportWAS
rapportWASrapportWAS
rapportWAS
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Self-programming Software
Self-programming SoftwareSelf-programming Software
Self-programming Software
 
Lbv Dev Meetup #3
Lbv Dev Meetup #3Lbv Dev Meetup #3
Lbv Dev Meetup #3
 
Partagez votre code et non vos secrets
Partagez votre code et non vos secretsPartagez votre code et non vos secrets
Partagez votre code et non vos secrets
 
Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011Retour d'expérience AdobeMC 2011
Retour d'expérience AdobeMC 2011
 

Plus de Damien Seguy

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leedsDamien Seguy
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationDamien Seguy
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeDamien Seguy
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limogesDamien Seguy
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Damien Seguy
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Damien Seguy
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confooDamien Seguy
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Damien Seguy
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbiaDamien Seguy
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic trapsDamien Seguy
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappesDamien Seguy
 
Code review workshop
Code review workshopCode review workshop
Code review workshopDamien Seguy
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018Damien Seguy
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018Damien Seguy
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3Damien Seguy
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)Damien Seguy
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCDamien Seguy
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018Damien Seguy
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy peopleDamien Seguy
 

Plus de Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Machine learning pour tous