Vous souhaitez compiler OpenSSL avec le compilateur libre MinGW sous Windows ? Ce guide est fait pour vous. Nous verrons comment compiler et installer OpenSSL, comment compiler un programme en statique et en dynamique.
Exploitez la puissance de la commande find
Les système Unix/Linux possèdent un grand nombre de commandes permettant d'effectuer les tâches d'administration de tous les jours... La commande find est une de celles-là. Elle sait faire bien plus que chercher des fichiers. find permet de trouver tous les fichiers mp3, tous les fichiers d'un utilisateur donné, tous les fichiers exécutables, tous les fichiers modifiés à une date donnée, etc. En la combinant avec xargs, il est possible d'exécuter des tâches sur les fichiers trouvés avec un gain de temps assez conséquent. C'est ce que nous allons voir dans cet article.
Sauvegarder automatiquement vos données sous Gnu Linux avec rdiff-backup
Ce tutoriel décrit les étapes nécessaires pour automatiser la sauvegarde de vos données importantes grâce à l'outil rdiff-backup. Les sauvegardes se font à travers le réseau via le protocole sécurisé SSH, personne ne sera donc en mesure d'intercepter vos fichiers car tout sera chiffré. rdiff-backup fait des sauvegardes incrémentales, c'est-à-dire qu'il ne sauvegarde que les fichiers qui ont été créés, modifiés ou supprimés depuis la dernière sauvegarde, ce qui permet de ne transférer que le strict minimum. rdiff-backup va permettre de récupérer un fichier tel qu'il était à un temps donné.
Calculer la somme de contrôle MD5 sur une arborescence entière
Lorsque l'on effectue des transferts d'une machine à une autre, il peut arriver que des erreurs se produisent. Voici une technique permettant de vérifier que les fichiers transférés sont bien conformes aux originaux. On utilise pour cela l'algorithme MD5 qui permet de calculer une somme à partir d'un fichier. Si un seul octet venait à changer dans ce fichier, alors la somme de contrôle serait complètement différente.
Supprimer les espaces en début et en fin de chaîne
Utiliser Firefox comme Vim
Les utilisateurs de Vim ne quitteraient leur éditeur pour rien au monde car il permet de gagner un temps considérable, une fois les commandes connues. Il est en effet possible d’être très productif sans jamais avoir à retirer les mains du clavier. Si vous désirez que Firefox puisse être commandé à la manière de Vim, il suffit d'installer l’extension Vimperator. Vimperator transforme Firefox en un navigateur web modal.
Utiliser les replis (folding) de Vim
La rédaction de documents sur ordinateur fait gagner beaucoup de temps, mais parfois, rien ne remplace la bonne vieille feuille de papier. Il est en effet plus facile de comparer des portions de texte lorsqu'il est présent sur papier plutôt que sur un écran. Sitôt qu'un document devient plus grand que l'écran, il est difficile de comparer et travailler sur des endroits différents du fichier. Les fonctions de partage d'écran (:split) vertical ou horizontal peuvent pallier à ce problème mais nous allons nous intéresser ici aux replis (folding) de Vim. Un repli permet de cacher une portion du fichier en cours d'édition.
Créez un effet néon
Pour ce premier tutoriel sous illustrator CS4, nous allons voir comment créer un effet néon comme ceux que l'on peut voir sur les enseignes des magasins.
Personnalisez l'affichage de vos données dans le débogueur de Visual C++ 2008 Express
Nous allons voir ici comment personnaliser l'affichage des données dans le débogueur de Visual C++. En tant que développeur, vous consacrez sans doute une bonne partie de votre temps à déboguer. L'astuce suivante pourrait vous faire gagner pas mal de temps et vous éviter d'avoir à effectuer un grand nombre de choses répétitives, désagréables et inutiles.
Évitez les chiffres magiques
Vous êtes de ceux qui utilisent des chiffres directement dans le code ? Lisez ceci, vous allez très vite changer d'avis.
Effectuez des copies entières de vos objets
Nous avons vu précédemment que le compilateur pouvait créer automatiquement le constructeur par copie et l'opérateur d'affectation. Ces éléments par défaut suffisent la plupart du temps, à moins que les objets à copier contiennent des pointeurs, des constantes ou des références. Si vous avez écrit le constructeur par copie et l'opérateur d'affectation, sachez qu'il y a quelques pièges à éviter.
Bien utiliser l'opérateur =
Aujourd'hui, nous allons voir comment bien implémenter l'opérateur d'affectation du C++ : operator=.
Cet opérateur est souvent victime d'au moins une des deux erreurs suivantes : soit la signature de cet opérateur n'est pas correcte, ce qui rend impossible l'utilisation des affectations chainées, soit l'auto-affectation n'est pas prise en compte et l'objet qui est auto-copié est alors corrompu. Suivez le guide...
Déclarez virtuels les destructeurs de vos classes polymorphes
Si vous créez des classes polymorphes, c'est-à-dire, héritant d'autres classes, vous devez déclarer vos destructeurs virtuels si vous ne souhaitez pas avoir des comportements étranges ainsi que des fuites mémoire.
Interdire la copie d'objets
C++ génère automatiquement pour vous le constructeur par copie et l'opérateur d'affectation si vous ne les avez pas définis et qu'une partie de votre code y fait appel. Dans certains cas, vous désirerez peut-être que ces éléments ne soient pas générés afin d'interdire la copie d'objets. Cela peut être utile si par exemple une copie est trop complexe ou trop longue à mettre en place, ou encore si cette copie ne veut rien dire sémantiquement...
Constructeurs par défaut, par copie, destructeur et opérateur d'affectation
La plupart des classes C++ que l'on crée possèdent généralement au moins un constructeur, un destructeur et un opérateur d'affectation. Si vous ne les avez pas déclarés, le compilateur le fera pour vous.
Préférez const et inline aux #define
Les macros du C c'est mal, vous ne devriez pas les utiliser en C++. En effet, C++ fournit tout un tas de mécanismes permettant de combler les lacunes du C. Il faut privilégier le compilateur au préprocesseur. Il ne faut donc pas utiliser #define pour créer des constantes ou des fonctions.
Préférez les commentaires C++ à ceux du C
Les commentaires multi-lignes du C /* ... */ fonctionnent également en C++ mais vous devriez éviter de les utiliser. Le commentaire de fin de ligne C++ // ... a des avantages indéniables.
Utiliser les vecteurs de la STL
Les tableaux dynamiques, c'est bien mais ce n'est pas très pratique. Une fois leur taille fixée, on ne peut plus la changer. Comme il est rare que l'on connaisse cette taille à l'avance, on a tendance à la surdimensionner pour être tranquille, ce qui engendre une surconsommation de mémoire. La STL fournit la solution à ce problème. En effet, elle propose de nombreux conteneurs très utiles. Celui auquel nous allons nous intéresser aujourd'hui, le plus simple d'entre-eux est std::vector. Il ressemble fort à un tableau mais présente de nombreux avantages notamment en termes d'accès et il est capable de s'agrandir lorsque sa mémoire est pleine. Il est également plus sécurisé. Le vecteur est le conteneur que vous devez utiliser par défaut.
Améliorez votre code avec const
Le mot-clé const est malheureusement très peu utilisé par les programmeurs, soit par oubli, soit parce qu'ils jugent ce mot-clé inutile ou encore parce qu'ils ne connaissent pas les bienfaits qu'il procure. Pourtant, il devrait être considéré comme un réel atout du C++ parce qu'il rend le style de programmation meilleur : plus rapide, plus robuste, plus sécurisé, etc.
Installer Visual C++ Express 2008 avec wxWidgets et boost
Il est possible de développer gratuitement et avec efficacité des applications commerciales grâce aux outils libres tels que wxWidgets et boost et de l'EDI gratuit Visual C++ 2008 dans sa version Express. Ce tutoriel vous présentera toutes les étapes qui vous permettront de mettre en place ces trois composants. À vous d'adapter si vous souhaitez n'utiliser que boost ou wxWidgets.
Derniers Commentaires
Bonjour,
Merci pour ces précisions. Ces techniques pourront en effet faire l'objet d'un nouvel article. C'est d'ailleurs un peu pour ça que je n'en ai pas parlées, car on peut vite dévier sur un autre sujet.
Excellent article! Le plus complet, clair que j'ai trouvé, et j'en cherche régulièrement.
Merci
Bonjour. En fait, ces commandes sont juste à taper dans une console. Mais si on les met dans un batch, elles ne fonctionnent plus. Je corrige donc en ajoutant le call pour que cela soit fonctionnel dans les deux cas. Merci
Bonjour,
une petite remarque sur un problème non adressé par cet article : la résistance aux exceptions. Un opérateur= se doit d'être résistant aux exceptions. En termes simples, si une exception est levée pendant l'exécution de l'operator=(), alors il faut faire en sorte que l'instance en cours de modification ne soit pas modifiée - sans quoi on la retrouve dans un état inconnu, avec un invariant invalide (et tout les problèmes que cela pose si, plus tard, cet objet est réutilisé).
Une approche est d'utiliser les idiomes RAII et swap. Le code de copie se trouve alors principalement dans une méthode swap(), qui peut être utilisée dans l'operator=() de cette manière :
C& C::operator=(const C& other) { C(other).swap(*this); return *this; }cf Copy-and-swap Idiom, Non-throwing swap et RAII
Bonjour.
Cela ne fonctionne pas car les appels d'autres batchs par tes commandes ne te permet pas de continuer d'exécuter ton propre batch, celui-ci s'arrête après l'appel de la compilation, pour y remédier remplacer :
par
et
par
Merci pour ce tuto très pratique.