Développement > Autres langages : C++, Python...

C++
  • LI-DEV-510 Langage C++ 14 – Mise à niveau
    Langage C++ 14 – Mise à niveau
    CPP-14 / LI-DEV-510

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Parcourir les nouveautés de C++ 11 et C++ 14
    - Découvrir les lambdas et l’inférence de type
    - Utiliser les nouveaux initialiseurs et la délégation de constructeurs
    - Mettre en œuvre les nouveautés de la bibliothèque standard.

    PUBLIC

    PRE–REQUIS

    Développeurs. Indispensables :
    - Expérience pratique de C++.

    CONTENU

    C++ 11 / 14 / 17
    Etat actuel de la norme
    Le support des compilateurs

    Initialiseurs inline de membres
    Initialiseurs de listes
    Une nouvelle syntaxe pour le for (« foreach »)
    Nouveaux littéraux
    Chaînes
    Binaires
    Séparateurs décimaux
    Conversions

    Délégation de constructeurs
    Méthodes virtuelles : override et final
    Enumérations fortement typées
    Variables auto et inférence de type
    Principe
    Utilisation de base et principaux intérêts (itérateurs, types anonymes…)
    Types de retour auto

    Fonctions lambda
    Méthodes inline
    La clôture en C++ et les « lambda captures extensions »
    Lambda et pointeurs vers fonctions
    Application et utilisation avec STL

    Sémantique du mouvement
    lvalue, rvalue, rvalue reference
    Constructeur par mouvement, opérateur d’affectation et type déplaçable
    Utilisation automatique et usage de std::move

    Templates
    Templates variadiques
    Lambda génériques

    Bibliothèque
    Rappels : STL
    Multithreading standard
    Types tuple
    Nullptr et std::nullptr_t
    Pointeurs intelligents : unique_ptr, shared_ptr et weak_ptr
    Rôle de Boost

    SESSIONS PROGRAMMEES

    Langage C++ 14 – Mise à niveau

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 3 jours (21 heures) avec 7 heures par jour
    Prix stagiaire : 1 535,00 € TTC
    Horaires : 09h00 / 17h30

    ( )
  • LI-DEV-509 Librairie C++ Qt5 et QML – Fonctionnalités avancées
    Librairie C++ Qt5 et QML – Fonctionnalités avancées
    CPP-QT5PE / LI-DEV-509

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Développer des applications pouvant tourner sur Windows, Mac OS, Linux, Android et les systèmes embarqués / temps réel.

    PUBLIC

    PRE–REQUIS

    Développeurs de logiciels. Indispensables :
    - Avoir développé en C++. Avoir suivi la formation « Librairie C++ Qt5 et QML -Initiation » ou connaître les bases de Qt Core, QML et Qt Quick

    CONTENU

    Rappels de Qt / QML
    L’intégration entre C++ / Qt et QML / JavaScript et ses limites
    La boucle d’évènement de Qt et son impact sur Qt Quick
    Problèmes fréquemment rencontrés
    QQmlListProperty
    Threading
    Types non reconnus…Sujets avancés sur Qt Quick
    Création de composants visuels en C++
    Avec une base Qt Scene Graph : la solution idéale mais limitée
    Avec une base QPainter : la solution de compatibilité
    Le composant hybride C++ / QML : une solution largement répandue

    Intégrer des images générées ou ne provenant pas d’un fichier local
    Les « images provider »
    Les composants spécialisés
    Texture
    Dessin procédural
    FBO OpenGL…
    Les moyens pour se passer de C++ dans certains cas
    SVG généré à la volée
    Canvas…

    Optimisation des performances
    Les pratiques permettant d’améliorer naturellement les performances du code
    Le « proxying » des bindings pour éviter les goulets d’étranglement
    L’utilisation de C++ à la place de JavaScript pour les traitements lourds
    La résolution des noms en QML : l’épineux problème du « scoping »

    Performances graphiques : éléments à prendre en compte
    Les objets graphiques superflus
    Les mauvaises utilisations dans les « delegates » d’une vue MVC
    Les effets de bords des mauvaises utilisations de composants basiques
    Image
    Text…

    Techniques pour rendre le code plus compréhensible
    La programmation orientée flux de données
    Différences avec l’orienté objet classique / naïf
    Application des principes en QML et C++
    Implications sur l’architecture globale

    La séparation C++ / QML
    Bien placer la séparation entre les deux langages
    Eviter que le code QML soit pollué par de mauvaises utilisations de C++
    Simplifier le code côté C++ pour qu’il ne soit pas un frein à son utilisation

    Eviter les erreurs courantes
    Rendre le code QML sémantiquement plus clair
    Fuir les cas où JavaScript peut produire des erreurs silencieuses
    Limiter au maximum la redondance dans le code, notamment entre C++ et QML

    La création de composants personnalisés : l’importance du cloisonnement
    Empêcher les bugs potentiels par intrusion externe dans le composant
    Rendre un composant réellement réutilisable et portable pour un gain de temps
    La spécialisation en cascade : un bon moyen de coder proprement et simplement avec QML

    Questions restantes : une fois que la technique pure est réglée
    Ces problématiques qui apparaissent en fin de projet, lorsque le produit doit être diffusé
    La création de « vrais » modules de plug-ins QML
    Le déploiement sur les plateformes sans système de package (Windows…)
    La dynamique traduction de l’interface (Qt Linguist)

    SESSIONS PROGRAMMEES

    Librairie C++ Qt5 – Fonctionnalités avancées

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 3 jours (21 heures) avec 7 heures par jour
    Prix stagiaire : 1 535,00 € TTC
    Horaires : 09h00 / 17h30

    ( )
  • LI-DEV-508 Librairie C++ Qt5 et QML – Initiation
    Librairie C++ Qt5 et QML – Initiation
    CPP-QT5IN / LI-DEV-508

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Développer des applications pouvant tourner sur Windows, Mac OS, Linux, Android et les systèmes embarqués / temps réel.

    PUBLIC

    PRE–REQUIS

    Développeurs de logiciels. Indispensables :
    - Avoir développé en C++.

    CONTENU

    Préliminaires
    Présentation de l’écosystème Qt / QML
    Historique et philosophie
    Portabilité et système de plug-ins / plateformes
    Explications du dual-licensingInstallation et configuration du Software Development Kit (SDK) et de l’Integrated
    Development Environment (IDE)
    Installation du SDK
    Découverte rapide de Qt Creator
    Configuration de base et assistant de création de projets

    Rappels de C++
    Rappels sur les classes et structures
    Pointeurs et références
    Les mots-clés
    Virtual
    Static
    Const
    Template…

    Le module Qt Core, la base de tout le reste
    Le Meta-Object : l’utilité du Meta-Object Compiler (MOC) et ses limites
    Signals / Slots
    Property
    Introspection d’énumérations
    Les conteneurs
    QList / QVector, QMap / QHash, comment choisir ?
    QString / QByteArray : manipulation de texte
    QVariant : le conteneur universel dans les interactions entre les langages

    Le langage QML créé par Qt, avec son moteur spécifique
    Les principes de la programmation déclarative
    La syntaxe générale, le moteur QML et l’intégration de JavaScript
    Les bindings dynamiques : la fonctionnalité-clé du langage QML
    Les signal-handlers et les signaux implicites : simplification par rapport au C++

    Création de composants
    En QML, avec les mots-clés natifs
    En C++, avec les macros et templates de Qt
    Conversions de types entre C++ et QML / JavaScript

    Le toolkit graphique Qt Quick 2.x pour des interfaces modernes et fluides
    Concepts de base
    Hiérarchie d’objets graphiques, positionnement et ordre visuel
    Les primitives : briques de base pour construire des interfaces
    Les « positioners » et les « anchors »

    Intégration avec C++ via le pattern MVC
    Les différents types de modèles pour QML
    Création de vue pour un modèle en Qt Quick
    Création de modèle en C++

    Déploiement : l’étape finale pour la distribution de l’application
    Les méthodes de déploiement simples
    Utilisation de fichiers de ressources Qt
    Installation des fichiers QML avec l’exécutable
    Les plateformes avec un système de packages (Android, iOS…)

    SESSIONS PROGRAMMEES

    Librairie C++ Qt5 – Initiation

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 3 jours (21 heures) avec 7 heures par jour
    Prix stagiaire : 1 485,00 € TTC
    Horaires : 09h00 / 17h30

    ( )
  • LI-DEV-507 Langage C++ – Programmation
    Langage C++ – Programmation
    CPP-IN / LI-DEV-507

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Programmer objet en C++
    - Maîtriser l’héritage et le polymorphisme
    - Connaître les types de fonctions dont les inline
    - Gérer la mémoire et les pointeurs
    - Utiliser la STL
    - Surcharger des opérateurs.

    PUBLIC

    PRE–REQUIS

    Développeurs. Indispensables :
    - Connaissance du langage C conseillée.

    CONTENU

    C++ langage basé sur le C : rappels
    Instructions, déclaration de variables, types, et littéraux
    Portée des variables
    Les opérateurs et leurs priorités
    Les conditions, opérateurs logiques
    Les boucles, while, do while, for, break continue, goto

    Structure d’un programme
    Le préprocesseur C / C++
    Header et implémentation
    Utilisation des constantes
    Compilation conditionnelle
    Déclaration anticipée (forward)

    Définition de fonctions
    La stack
    Appel d’une fonction
    Passage par valeur ou par référence
    Passage par pointeur
    Pointeur sur fonction

    Les classes
    Définition d’une classe
    Gestion de l’encapsulation
    Constructeur
    Membres et fonctions statiques d’une classe
    « this »

    Gestion de la mémoire
    Context Automatique, rappel sur la stack
    Context Statique
    Context dynamique
    Destructeur d’une classe
    Const
    L’intérêt du const
    Paramètres const
    Fonctions membre const

    Fonctions inline
    Inline implicite
    Inline explicite
    Impact sur la compilation
    Impact sur le code généré

    Héritage et polymorphisme
    Héritage public de C++
    Construction des classes dérivées
    Utiliser la ZIM
    Fonctions virtuelles
    Fonctions virtuelles pures et classes de bases abstraites
    Destruction des classes dérivées
    Surcharge d’opérateur
    Opérateur de cast
    Opérateur de pointeur
    Opérateur

    Constructeur de copie et surcharge d’opérateur d’affectation
    Surcharge du constructeur de copie
    Surcharge de l’opérateur d’affectation

    La STL
    Les conteners
    Les itérateurs
    Les algorithmes

    Gestion des exceptions
    Les problématiques
    Exception et références
    Exception et valeurs
    Exception et pointeurs

    SESSIONS PROGRAMMEES

    Langage C++ – Programmation

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 5 jours (35 heures) avec 7 heures par jour
    Prix stagiaire : 2 063,00 € TTC
    Horaires : 09h00 / 17h30

    ( )

  • Python
  • LI-DEV-513 Langage Python pour tests d’intrusion
    Langage Python pour tests d’intrusion
    SEC-PYT / LI-DEV-513

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Développer des scripts d’exploitation personnalisés en Python
    - Adapter des outils existants
    - Utiliser Python pour effectuer des tests d’intrusion.

    PUBLIC

    PRE–REQUIS

    Administrateurs systèmes et réseaux, responsables de la sécurité des systèmes d’informations, auditeurs en sécurité ou toute personne impliquée dans la sécurité des systèmes d’information. Indispensables :
    - Avoir des bases en sécurité des systèmes d’informations, connaître le fonctionnement des réseaux, comprendre le fonctionnement du protocole HTTP et avoir des bases en cryptographie.

    CONTENU

    Langage
    Fondamentaux de Python
    Variables et fonctions
    Les structures de contrôles
    Opérations sur les types courants
    Facilités d’écriture
    Le gestionnaire de paquets
    La librairie standardRéseau et communication
    Principes de base
    Les couches basses : la librairie Scapy
    Les couches hautes : manipulation de sockets
    Fuzzing de services : la librairie Sully

    HTTP
    Principes de base
    La librairie Request
    Les attaques Web en Python
    Interception applicative : la librairie Proxy 2
    Scripting Python dans Burp Suite

    Cryptographie
    Principes de base
    Manipulations de chaînes : la librairie itertools
    Le cas du Padding Oracle : la librairie Python-PaddingOracle
    Les attaques cryptographiques en Python
    Découverte des OS

    SESSIONS PROGRAMMEES

    Langage Python pour la sécurité

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 3 jours (21 heures) avec 7 heures par jour
    Prix stagiaire : 1 575,00 € TTC
    Horaires : 09h00 / 17h30

    ( )
  • LI-DEV-512 Python – Perfectionnement
    Python – Perfectionnement
    PYT-PE / LI-DEV-512

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Comprendre les subtilités du langage Python et en tirer parti pour écrire des programmes bien structurés, robustes et efficaces
    - Approfondir le développement en langage Python.

    PUBLIC

    PRE–REQUIS

    Développeurs, administrateurs et architectes. Indispensables :
    - Avoir suivi le stage « Python – Par la pratique » ou posséder un niveau équivalent.

    CONTENU

    Langage
    Appel de fonctions aspects avancés : *args, **argk
    Lambda, filter et map
    Utilisation avancée des modèles de données : list, dic, stack, queue
    Utilisation avancée des fonctions : passages d’arguments
    Aspects avancés de la programmation orientée objets

    Programmation multithread
    Concepts de bases : programme, thread, synchronisation
    Gestion de threads : modules thread, threading
    Threads et la programmation orientée objets
    Gestion des aspects concurrentiels : lock, mutex, sémaphores…
    Threads et échanges de données
    Notion de pool de threads

    Programmation réseau avec les sockets
    Rappels sur le TCP/IP et concepts de base de l’API socket
    Utilisation du module socket
    Socket en mode connecté : TCP ou stream
    Socket en mode non connecté : UDP ou datagram
    Les sockets et la programmation orientée objets
    Combinaison des sockets et des threads

    Python et XML
    Concepts de base :
    DOM (Document Object Model)
    SAX (Simple API for XML)
    Parser…
    Gestion de fichiers XML selon SAX et selon DOM
    Requêtage Xpath et transformation avec XSL

    Programmation graphique
    Différentes API : Tkinter, wxPython, Qt/UI API
    Tkinter : présentation et mise en œuvre
    API wxPython : présentation et mise en œuvre
    API Qt/UI : présentation et mise en œuvre

    Persistance de données
    Concepts de base : sérialisation / désérialisation
    Différents modèles de persistance : Pickle…
    Persistance texte avec Json, XML

    Les bases de données
    Concepts de base : SQL, NoSQL, tables, curseur
    Création d’une base avec les modules Gadfly
    Gestion de la base de données SQLite
    Gestion de la base de données MySQL

    Développement Web avec Django
    Architecture d’applications Web et les concepts de bases
    Présentation du framework MVC Django
    Installation et configuration minimale de Django
    Modèle de l’applications Django et publication
    Eléments de MVC : vue, modèle et échanges HTTP
    Echanges HTTP et formulaires
    Bases de données, modèle et ORM

    Intégration Python/C et Python/Java
    Présentation générale et mise en œuvre de SWIG
    Python/C et les packages natifs C
    Python/C et les packages natifs Java

    Mise au point de programme
    Débogage : exécution pas à pas
    Modes : verbose, trace
    Analyse des performances et profiling

    SESSIONS PROGRAMMEES

    Python – Perfectionnement

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 3 jours (21 heures) avec 7 heures par jour
    Prix stagiaire : 1 350,00 € TTC
    Horaires : 09h00 / 17h30

    ( )
  • LI-DEV-511 Python – Par la pratique
    Python – Par la pratique
    PYT / LI-DEV-511

    OBJECTIFS PEDAGOGIQUES

    A la fin du cours, le stagiaire sera capable de :
    - Connaître les usages courants du langage
    - Maîtriser le scripting en Python
    - Structurer son code en fonction, classes et modules
    - Utiliser des modules existants
    - Vous initier à la programmation réseau

    PUBLIC

    PRE–REQUIS

    Développeurs. Indispensables :
    - Connaître un langage de programmation.

    CONTENU

    Introduction
    Historique
    Environnement de travail
    Champs d’application
    Scripts, fonctions et classes
    Versions architectures et plateformes pour Python
    Editeurs et environnements de Développement (IDE)
    Installation et configuration de Python
    Conformité du codage à PEP8

    Programme type
    Programme minimal et point d’entré
    Extension basée sur les packages : import
    Lancement de programmes, passage d’arguments
    Version compilée de Python : .py, .pyc
    Console Python
    Encoding : utf-8

    Types de bases
    Typage faible
    Booléens, numériques
    Les chaînes de caractères
    Conversions de types, casting
    Types agrégés : Tuples, List, Set et dictionnaires

    Les instructions de base
    Commentaires sur une ligne # ou plus «  »"
    Notion de bloc et indentations
    Les opérateurs :
    Affectation
    Arithmétique
    Logiques
    Relationnels
    Saisie et affichage : input, print et formatage
    Structure conditionnelle
    Les structures de boucle : while, for, range()
    Break et continue
    La gestion des exceptions
    L’import de modules

    Procédures et fonctions
    def(), arguments et valeur de retour
    Variables globales et l’instruction globale
    Arguments par défaut, *args et **kwargs -
    Fonctions lambda

    Gestion des fichiers
    Gestion de fichiers et répertoires
    Accès séquentiel, aléatoire
    Le module os, os.path, shutil, zlib

    Les modules
    Définition de modules et instruction import
    Modules en tant que fichier py, en tant que répertoire : unique_ptr, shared_ptr et weak_ptr
    Rôle de Boost
    Résolution des modules
    Module et programme : __main__
    Installation de modules : pip, easy_install

    Les classes
    Approche objets
    Classes et instances / objets : self
    Constructeur : __init__
    Données et méthodes membres
    Héritage multiple

    Les librairies Python
    Accès aux bases de données relationnelles
    Programmation graphique UI avec Tkinter

    Mise au point de programme
    Débogage : exécution pas à pas

    Python et le Web
    Scripts Python en tant que CGI
    Introduction au framework Django

    SESSIONS PROGRAMMEES

    Python – Par la pratique

    VALIDATION

    Exercices de validation au cours de la formation

    PEDAGOGIE

    Exposés – Cas pratiques – Synthèse

    INTERVENANTS

    Consultant-formateur dont les compétences techniques, professionnelles et pédagogiques ont été validées par des diplômes et/ou testées et approuvées par l’éditeur et/ou par M2i Formation.

    MODALITES PRATIQUES

    Durée : 4 jours (28 heures) avec 7 heures par jour
    Prix stagiaire : 1 650,00 € TTC
    Horaires : 09h00 / 17h30

    ( )