Aller au contenu

Leaderboard

Popular Content

Showing content with the highest reputation on 17/01/2015 in all areas

  1. Comme vous le savez surement, le framework .NET est une immense collection de classes que nous, les développeurs, utilisons pour créer nos programmes. Le framework est divisé en plusieurs Namespace, celui que nous utiliserons dans ce tutoriel est System.IO.Compression. Il vous faudra donc ajouter deux références (Explorateur de solution -> Références -> Ajouter Référence) Puis vérifiez que les références ont bien été ajoutées: Maintenant il ne vous reste plus qu'a ajouter un using tout en haut de votre code: using System.IO.Compression; (Nous utiliserons aussi les namespaces System et Sytem.IO) Pour commencer, nous avons les fonctions de la classe statique ZipFile : -Prend tout les fichiers contenus dans le dossier "folder", puis les compresses dans le fichier "compressed.zip" ZipFile.CreateFromDirectory("folder", "compressed.zip"); Avec l'enumeration CompressionLevel, il est possible d'optimiser la compression, sois pour la vitesse, sois pour la taille du fichier. -Extrait les fichiers contenus dans le fichier "compressed.zip" vers le dossier "folder" ZipFile.ExtractToDirectory("compressed.zip", "folder"); Ces deux fonctions ont une surchage qui prend en compte l'encodage, l'encodage de base est UTF-8 donc si vous avez besoin d'un encodage différent, il vous suffit de le passer en paramètre. Maintenant passons au choses un peu plus complexes, la classe ZipArchive vas nous permettre d'avoir plus de contrôle sur notre archive. Cette classe implémente IDisposable, il faut donc l'entourer d'un bloc "using", ou manuellement appeler Dispose() quand vous avez fini de l'utiliser. Tout d'abord, pour créer une instance ZipArchive, il faut ouvrir un Stream qui va nous permettre de lire le fichier. Cet exemple ouvre le fichier "test.zip". affiche le nom de tout les fichiers ainsi que le ratio de compression: using (Stream fs = File.OpenRead("test.zip")) using (var archive = new ZipArchive(fs, ZipArchiveMode.Read)) foreach (ZipArchiveEntry entry in archive.Entries) Console.WriteLine("{0} : {1}%", entry.Name, Math.Ceiling((double)entry.CompressedLength / (double)entry.Length * 100)); La classe ZipArchive nous permet de créer, de lire et aussi de mettre a jour des archives ZIP. -Création: ZipArchive archive = ZipFile.Open("name.zip", ZipArchiveMode.Create); -Lecture: ZipArchive archive = ZipFile.Open("name.zip", ZipArchiveMode.Read); // equivalent ZipArchive archive = ZipFile.OpenRead("name.zip"); -Mise a jour: ZipArchive archive = ZipFIle.Open("name.zip", ZipArchiveMode.Update); Dans l'archive, chaque fichier est représenter par une ZipArchiveEntry, qu'on peut obtenir grâce a la proprietee Entries de la classe ZipArchive. On peut récupérer un objet ZipArchiveEntry en choisissant un existant: var entry = archive.GetEntry("file.txt"); Ou en créant une nouvelle: var entry = archive.CreateEntry("file.txt"); La classe ZipArchiveEntry contient des propriétés publiques qui exposent des informations a propos du fichier (nom, taille (et taille après compression), date de la dernière écriture ...) Elle contient aussi plusieurs fonctions tel que Delete (supprime le fichier de l'archive) et ExtractToFile(extrait le fichier compressé vers un fichier décompressé hors de l'archive). La fonction Open revois un objet Stream, qui va nous permettre de modifier directement le contenu du fichier. Exemple qui créé une archive "test.zip", et qui y ajoute le fichier "foo.txt". (c'est possible de le faire plus facilement en utilisant archive.CreateEntryFromFile, mais je vais utiliser cet exemple pour vous montrer comment utiliser l'objet Stream): using (ZipArchive archive = ZipFile.Open("test.zip", ZipArchiveMode.Create)) { var entry = archive.CreateEntry("foo.txt"); using (Stream s = entry.Open()) { byte[] data = File.ReadAllBytes("foo.txt"); s.Write(data, 0, data.Length); } } // Reouvre l'archive pour confirmer que le fichier est bien la, et affiche sa taille. using(ZipArchive archive = ZipFile.OpenRead("test.zip")) { var entry = archive.GetEntry("foo.txt"); Console.WriteLine("Name: {0}\r\nOriginalSize: {1}\r\nCompressedSize: {2}", entry.Name, entry.Length, entry.CompressedLength); } Je pense avoir fait le tour du sujet, j’éditerais peut être avec une section a propos de la classe GZipStream (qui permet de compresser/décompresser en mémoire, sans fichiers). Je vais aussi écrire un petit tool qui permetra de gérer les fichiers ZIP en ligne de commande. N’hésitez pas si vous avez des questions, ou des remarques a faire ! Davy
    1 point
  2. Bonjour, Le film n°1 de la trilogie Noob vient de sortir. Il est disponible sur YouTube : https://www.youtube.com/watch?v=BB2mT62LMoM Bon film !
    1 point
  3. Le développement suit son cours ! Actuellement, je travaille principalement sur les missions et la messagerie, deux très gros morceaux à soigner, donc c'est un peu long entre les mises à jours. Le SSL est prévue pour la partie in-game dans une version ultérieur. Une intégration avec un CDN est également étudié. Je pense que ces solutions seront mises en place une fois le jeu jouable et avec un certains nombre de joueurs régulier.
    1 point
  4. Voila le dernier son de Different Heaven, un dj plutôt connu dans le monde du dubstep. Il a fait cette musique avec une chanteuse inconnue mais je trouve le rendu juste énorme ! Vous en pensez quoi ?
    1 point
  5. CONSEILS SUR LA MISE EN FORME DES SUJETS Lorsque vous créez un sujet, il est important qu’il soit clair et lisible. Pour cela, vous avez à votre disposition le BBCode qui permet de mettre en forme votre texte (couleur, police d’écriture, taille du texte, …). De plus, si votre sujet est assez long, vous devez le séparer en plusieurs paragraphes et parties. Bien sûr, Melinyel ne vous impose aucune norme et vous êtes libre d’organiser votre sujet comme bon vous semble. 1. Ecriture du sujet 1.1 Le titre Le titre du sujet est un point très important. En effet, il permet aux lecteurs de comprendre de quoi traite le sujet sans pour autant avoir regardé le contenu. De plus, il a une utilité très importante pour le référencement du sujet, il faut donc bien choisir ses mots-clés. 1.2 Les mots clés Les mots-clés ou étiquettes du sujet améliorent considérablement la visibilité du sujet sur un moteur de recherche. Il est donc très important de compléter cette case avec des mots-clés méticuleusement sélectionnés dans votre sujet. 1.3 Le contenu Le contenu de votre sujet doit être riche et compréhensible. Il doit permettre au lecteur, à la fin de votre sujet, d’avoir une réponse claire et précise sur la problématique posée par le sujet. 2. Mise en forme 2.1 La typographie Lorsque votre sujet devient assez long, il est important de le diviser en plusieurs parties et en plusieurs paragraphes pour une meilleur lisibilité du sujet et pour faciliter les recherches dans celui-ci. Quelques petits conseils pour la typographie : Introduisez le sujet en posant une problématique accompagnée d’une amorce et d’un plan. Développez le sujet en plusieurs parties et paragraphes pour répondre à la problématique. Concluez le sujet en reprennant les grandes lignes de chaque partie et d’en tirer un lien logique. 2.2 Le BBCode Le BBCode est un outil puissant pour rédiger un sujet. Il permet de mettre en forme le sujet et ainsi de le rendre plus lisible et compréhensible. Cet outil a aussi une influence dans le référencement du sujet puisque certaines balises permettent d’indiquer aux moteurs de recherche qu’il s’agit d’un mot-clé. Liste des balises BBCode : Texte :Met en gras le texte. Texte :Met en italique de texte. Texte :Souligne le texte. Texte :Colore le texte de la couleur choisie (on peut utiliser le format hexadécimal). Texte :Change la police du texte. Adresse URL :Crée un lien hypertexte. Texte :Texte avec lien hypertexte. Adresse URL :ffiche une image. Adresse URL :Affiche une image avec lien hypertexte. Heureusement, on peut modifier directement le contenu dans la boite de dialogue en sélectionnant le morceau du texte à transformer et à l’aide des outils de la barre BBCode : Vous pouvez aussi trouver quelques BBCodes spécieux dans le troisième icône en haut à gauche :
    1 point
  6. C'était l'index des blogs que j'ai posté. Une entrée ressemblera à ça : http://community.invisionpower.com/blogs/entry/9721-ips-community-suite-400-beta-5-available/ Pas personnalisable, c'est vrai, mais de base incorporé à Melinyel et donc similaire à la charte graphique. Pas besoin de quitter le forum, avoir de nouveaux comptes, etc... On peut envisager les deux cas. Le réserver à l'équipe pour les annonces où si les membres s'investissent, l'ouvrir à certains rédacteurs motivés.
    1 point
×
×
  • Créer...