Multiples vulnérabilités dans le noyau Linux de RedHat
Download
Report
Transcript Multiples vulnérabilités dans le noyau Linux de RedHat
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
Introduction
1. Objectifs et méthode
15
2. Glossaire
16
3. Qt, qu'est-ce ?
18
3.1 Histoire
3.2 Compatibilité
3.3 Notoriété
3.4 Bibliothèque ou framework ?
3.5 Documentation
3.6 Que peut-on faire avec Qt ?
3.7 Modèles de conception
3.8 Modèle objet
3.9 Plugins Qt
19
20
21
21
21
22
23
23
24
4. Retour sur C++
25
4.1 Pointeurs et références
4.1.1 Pointeurs C
4.1.2 Références
4.2 Copie d'objets
4.2.1 Copie superficielle (shallow copy)
4.2.2 Copie en profondeur (deep copy)
4.2.3 Copie paresseuse (lazy copy)
4.2.4 Partage implicite
4.3 Types primitifs
4.4 Gestion de la mémoire
4.4.1 Cycle de vie
4.4.2 Structures de données
4.5 STL, Boost et Qt
4.6 Réentrance
4.7 Exceptions
www.editions-eni.fr
© Editions ENI
26
26
28
30
30
32
34
37
39
40
41
41
42
44
45
1/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
L'environnement de développement
1. Objectifs
47
2. Licence commerciale ou libre ?
47
2.1 Propriété intellectuelle et GPL
2.2 Diffusion de l'application
48
48
3. Choisir judicieusement son compilateur
49
3.1 Monoplateforme ou multiplateforme ?
3.2 Maintenabilité du code
4. Installer l'environnement de développement
4.1 Le compilateur
4.2 Qt Creator
4.3 Intégrer un autre environnement de compilation
5. Maintenir à jour son environnement
53
53
54
57
61
5.1 Profiter des dernières nouveautés
5.2 Gérer le cycle de vie de son application
6. Utiliser Qt Creator
63
65
66
6.1 Organisation des projets
6.2 Fenêtre principale
6.2.1 Boutons d'accès aux modules
6.2.2 Boutons de compilation et d'exécution
6.2.3 Onglets de journaux
6.2.4 Onglets de contenus additionnels
6.2.5 Sessions récentes
6.2.6 Projets récents
6.3 Module d'édition
6.4 Module de conception d'interfaces graphiques
6.5 Module de débogage
6.6 Module de configuration de projet
www.editions-eni.fr
49
52
© Editions ENI
66
67
68
68
70
72
72
72
73
73
74
76
2/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
6.7 Module de profilage
6.8 Paramétrage
77
77
Le modèle « event-driven »
1. Objectifs
79
2. Pourquoi Qt est-il orienté événements ?
79
3. La notion de flux
81
4. La run-loop
86
5. La programmation asynchrone
88
6. Avantages et inconvénients
90
7. Gestion des ressources et performances
91
Anatomie d'une application
1. Objectifs
93
2. L'humain
94
2.1 Les différents types d'applications
2.2 Contenu d'un projet Qt
2.3 Création d'une application
2.3.1 En ligne de commande
2.3.2 Avec Qt Creator
2.4 Le fichier projet .pro
2.4.1 Les directives de projet
www.editions-eni.fr
© Editions ENI
94
95
95
95
99
102
103
3/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
2.4.2 Les directives de chemins
2.4.3 Les directives de précompilation
3. La machine
103
104
105
3.1 Les commandes externes
3.2 La phase de compilation
105
105
QtCore et fondations
1. Objectifs
107
2. Intégration et interactions
107
3. Découverte de QtCore
108
3.1 Principes de conception
3.2 La classe QObject
3.2.1 Prototype
3.2.2 Copie
3.2.3 Internationalisation
3.3 Métaclasses
3.4 La classe QVariant
3.5 Propriétés Qt
3.6 Instanciation d'objets
3.7 Votre modèle objet
3.8 Signaux et slots
3.8.1 Le signal
3.8.2 Le slot
3.8.3 La connexion
3.8.4 Différents types de connexion
3.8.5 L'appel
3.8.6 Éléments particuliers
3.9 Appel asynchrone d'une fonction
3.9.1 L'émission de signaux
3.9.2 L'utilisation d'un timer
www.editions-eni.fr
© Editions ENI
108
109
109
110
111
111
113
114
116
121
123
124
124
125
127
129
131
135
136
136
4/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
3.9.3 La fonction invokeMethod
137
4. Rendre ses algorithmes asynchrones
137
4.1 Effectuer une boucle
4.2 Faire une pause dans le programme
4.3 Synchroniser des objets
5. Créer et piloter des threads
146
5.1 Paralléliser des tâches
5.1.1 Les threads pilotés
5.1.2 Un exemple
5.1.3 Les tâches simples
5.1.4 Lancer une tâche asynchrone
5.2 Synchronisation par blocage et protection
5.3 Synchronisation par notification
6. Les pointeurs
147
147
150
152
155
156
158
160
6.1 Pointeurs intelligents
6.2 Comptage de références vs héritage
6.3 Faire le bon choix
7. Les structures de données
160
164
165
166
7.1 Structures unidimensionnelles
7.2 Structures multidimensionnelles
7.3 Parcourir les structures
7.4 Rechercher les performances
166
169
170
170
8. Choisir sa classe String
171
8.1 Les chaînes C et les langues accentuées
8.2 Les normes ISO, Unicode, UCS
8.3 Adopter une solution universelle
8.4 Construire des tableaux de chaînes
9. Interactions avec le système d'exploitation
www.editions-eni.fr
138
141
141
© Editions ENI
171
172
175
176
178
5/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
9.1 Exécuter une commande externe
9.2 Les fichiers
178
180
10. La gestion des paramètres
181
10.1 QSettings
10.2 Une classe propriétaire
182
184
11. La sérialisation
184
11.1 Mécanismes
11.2 Exemples
185
187
12. Les fichiers XML
188
12.1 Écrire dans un fichier XML
12.2 Lire un fichier XML
189
190
QtNetwork
1. Objectifs
193
2. Intégration et interactions
193
3. Accéder au réseau
194
3.1 Portée de QtNetwork
3.2 Appel bloquant vs non bloquant
194
195
4. Sockets
197
4.1 Client TCP
4.1.1 Connexion avec un hôte
4.1.2 Envoi d'une requête
4.1.3 Lecture d'une réponse
4.1.4 Fermeture et nettoyage
4.2 Serveur TCP
4.3 Client UDP
www.editions-eni.fr
197
198
199
199
200
202
204
© Editions ENI
6/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
4.3.1 Connexion à un hôte
4.3.2 Envoi de données
4.3.3 Lecture des données
4.3.4 Fermeture de la connexion
5. Internet
204
205
206
207
207
5.1 Résolution DNS
5.1.1 Résoudre un nom de machine
5.1.2 Obtenir les enregistrements d'un nom de domaine
5.2 Échange de fichiers avec FTP
5.2.1 Client simple
5.2.2 Client évolué
5.3 Connexion à un serveur HTTP
5.3.1 Création d'une requête
5.3.2 Exécution de la requête
5.3.3 Lecture du résultat
5.3.4 Authentification
5.4 Le chiffrement avec SSL et TLS
6. Les interfaces réseau
207
208
209
211
212
214
216
217
218
218
221
223
225
QtSql
1. Objectifs
227
2. Intégration et interactions
228
3. Persistance des données
228
3.1 Utilisation d'un serveur de données
3.2 Ce que QtSql permet et ne permet pas
3.3 Le modèle de conception approprié
4. Connexion au serveur de données
www.editions-eni.fr
228
229
229
232
© Editions ENI
7/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
5. Effectuer une requête
233
5.1 La requête
5.2 Le résultat
5.3 Le mode transactionnel
5.4 Obtenir les métadonnées
5.5 Rechercher les performances
5.5.1 Préparation de la requête
5.5.2 Exécution de la requête
5.5.3 Stratégie d'instanciation
234
235
236
236
238
240
241
242
QtGui
1. Objectifs
243
2. Intégration et interactions
244
3. QGuiApplication et QWindow
244
3.1 QGuiApplication
3.2 QWindow
244
245
4. Rendu 2D
246
4.1 Géométrie et positionnement
4.2 Images
4.2.1 QImage
4.2.2 QPixmap
4.3 Dessin 2D
4.3.1 Dessiner des formes
4.3.2 Dessiner du texte
247
248
248
250
251
252
254
5. Rendu 3D
www.editions-eni.fr
255
© Editions ENI
8/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
QtWidgets
1. Objectifs
257
2. Intégration et interactions
258
3. Flux d'application et de GUI
259
4. Modèle objet et modèle-vue
261
4.1 Modèle-vue
4.2 Architecture du code
262
270
5. Créer avec Qt Designer
271
5.1 Organisation du designer
5.2 Mise en page
5.2.1 Ergonomie
5.2.2 Redimensionnement automatique
5.2.3 Une mise en page plus complexe
5.2.4 Modèle objet et relations
274
275
275
276
289
297
6. Créer « à la main »
297
7. Modes SDI et MDI
299
8. Créer un menu
304
9. Réagir aux événements
307
10. Intégrer et afficher les dialogues créés
310
11. Feuilles de style
312
www.editions-eni.fr
© Editions ENI
9/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
12. Gestion des événements
316
13. Ressources
320
13.1 Créer un fichier de ressources
13.2 Utiliser une ressource dans le designer
13.3 Accéder à une ressource depuis le code
320
321
323
14. Widgets personnalisés
323
15. Icône de notification (Tray icon)
327
16. Composants graphiques 2D
331
17. Drag and Drop
334
17.1 Initialisation des widgets
17.2 Mise en place du drag
17.3 Mise en place du drop
335
336
338
18. Copier-coller
339
19. Ouvrir et enregistrer des fichiers
340
20. Généraliser les styles
342
QtMultimedia
1. Objectifs
343
2. Intégration et interactions
344
www.editions-eni.fr
© Editions ENI
10/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
3. Audio
344
3.1 Lister les périphériques
3.2 Enregistrer du son
3.3 Lire un fichier
344
345
347
4. Vidéo
349
4.1 Enregistrer une vidéo
4.2 Lire une vidéo
349
350
5. Caméra
351
5.1 Afficher en direct
5.2 Enregistrer en direct
351
352
6. Radio
353
6.1 Lire un flux radio
6.2 Enregistrer un flux radio
354
356
Les modules graphiques et web
1. Objectifs
357
2. QtSvg
357
2.1 Intégration et interactions
2.2 Rendu et affichage
2.3 Exporter au format SVG
357
358
358
3. QtPrintSupport
360
3.1 Intégration et interactions
3.2 Choisir l'imprimante
3.3 Imprimer un dessin
3.4 Imprimer un widget
3.5 Imprimer du texte
www.editions-eni.fr
360
360
361
363
363
© Editions ENI
11/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
4. QtWebkitWidgets
364
4.1 Intégration et interactions
4.2 Afficher une page web
4.3 Accéder au DOM
4.4 Bases de données HTML 5
364
364
366
369
QtTest - qualité du code
1. Objectifs
371
2. Intégration et interactions
372
3. Scénario de tests
372
4. Tests unitaires et couverture de code
375
4.1 Les assertions
4.2 Exécution des test
4.3 Diversifier les données
4.4 Événements GUI
4.5 Tester les performances
376
377
379
381
383
5. Non-régression
384
Traduction d’une application
1. Objectifs
385
2. Cycle de traduction
385
3. Rendre traduisible son application
387
www.editions-eni.fr
© Editions ENI
12/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
3.1 Code source
3.2 Vues
387
389
4. Traduire son application
390
4.1 Langue et région
4.2 Traduction de l'application
4.2.1 Exportation des textes
4.2.2 Traduction des textes
4.2.3 Compilation des traductions
4.3 Intégration des traductions
5. Contexte de traduction
390
391
391
391
394
394
396
Publication d'une application
1. Objectifs
397
2. Comprendre les licences
398
3. Les dépendances
400
4. Créer un installeur universel
401
5. Créer un installeur pour Windows
402
5.1 Programme compilé avec Microsoft Visual C++
5.2 Programme compilé avec mingw
402
403
6. Créer un installeur pour OS X
404
6.1 Bundle
6.1.1 Création
6.1.2 Signature
6.2 Fichier DMG
404
405
406
407
www.editions-eni.fr
© Editions ENI
13/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
6.3 Paquet d'installation
409
7. Créer un paquet pour Debian/Ubuntu
409
7.1 Arborescence
7.2 Fichier de contrôle
7.3 Création du paquet
409
411
412
8. Inclure les plugins de Qt
412
8.1 Windows
8.2 OS X
8.3 GNU/Linux
412
413
413
9. Tester son application
414
Techniques d'optimisation
1. Objectifs
415
2. Langages et mode de pensée
416
3. Optimisations
419
3.1 Le modèle objet
3.2 Le cycle de vie des objets
3.3 Les classes optimisées
3.3.1 QByteArray
3.3.2 QStringRef
3.4 Optimiser le processeur
420
422
425
425
427
429
4. Lectures complémentaires
www.editions-eni.fr
431
© Editions ENI
14/15
Maîtrisez Qt 5
Guide de développement d'applications professionnelles
Index
www.editions-eni.fr
433
© Editions ENI
15/15