Data types infos (doc)
This commit is contained in:
parent
dbd0222746
commit
2c9599128c
@ -34,6 +34,105 @@ Cf. [Git SDK COMMON](https://git.4nk.com/4nk/sdk_common/doc)
|
||||
|
||||
Voir [_Doc_references.md](_Doc_references.md).
|
||||
|
||||
## Choix des formats de données
|
||||
|
||||
### Strings
|
||||
|
||||
Les chaînes de caractères (String et &str) sont utilisées pour stocker du texte. String est une collection dynamique, modifiable, possédant une allocation sur le tas, tandis que &str est une vue immuable d'une séquence de caractères.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Manipulation de texte : Lecture et écriture de fichiers texte, interfaces utilisateur, etc.
|
||||
* Traitement de données formatées comme le JSON ou le XML.
|
||||
* Communication réseau où les protocoles basés sur le texte sont utilisés (HTTP, SMTP).
|
||||
|
||||
### Hexadécimales
|
||||
|
||||
Les valeurs hexadécimales sont souvent utilisées pour représenter des données binaires de manière lisible, notamment dans le contexte de l'adressage mémoire, du débogage, ou de la représentation de couleurs en informatique.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Affichage et édition de données binaires dans les éditeurs hexadécimaux.
|
||||
* Définition de couleurs dans les standards web (CSS).
|
||||
* Représentation compacte d'adresses mémoire ou de grandes valeurs binaires.
|
||||
|
||||
### Tableaux de bytes
|
||||
|
||||
Les tableaux de bytes (```Vec<u8v>``` ou ```[u8]``` en Rust) sont utilisés pour manipuler des données binaires. Ils servent à stocker et transmettre des données dans un format qui n'est pas nécessairement du texte.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Lecture et écriture de fichiers binaires, comme les images ou les fichiers audio/vidéo.
|
||||
* Communication réseau, en envoyant et recevant des données binaires sur les sockets.
|
||||
* Cryptographie, où les clés, les hash, et les signatures sont souvent manipulés sous forme de bytes.
|
||||
|
||||
### Format Base64
|
||||
|
||||
Le format Base64 est une méthode d'encodage qui permet de représenter des données binaires sous forme de chaînes de caractères ASCII. Il est couramment utilisé pour encoder des données binaires dans des contextes où les données textuelles sont préférées, comme dans le XML, le JSON, ou les courriels.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Encodage d'images, de fichiers audio/vidéo pour leur intégration dans des fichiers HTML ou CSS.
|
||||
* Transmission de données binaires dans des protocoles de communication qui ne supportent que le texte.
|
||||
* Stockage sécurisé d'informations sensibles sous une forme encodée.
|
||||
|
||||
### Différence entre Bytes et Bits
|
||||
|
||||
Un byte est une unité de stockage informatique qui contient 8 bits. Un bit est la plus petite unité de données en informatique et peut prendre la valeur de 0 ou 1.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Les bits sont utilisés pour les opérations au niveau le plus basique de l'informatique, comme les calculs binaires ou le stockage de valeurs booléennes.
|
||||
* Les bytes sont utilisés pour presque toutes les formes de stockage et de manipulation de données, comme le texte, les images, et les instructions de programme.
|
||||
|
||||
### Little Endian et Big Endian
|
||||
|
||||
Ce sont deux manières différentes de stocker ou d'interpréter des séquences de bytes qui composent des nombres plus grands dans l'ordinateur. En Big Endian, le byte le plus significatif est stocké en premier. En Little Endian, c'est le byte le moins significatif qui est stocké en premier.
|
||||
|
||||
Cas d'usage commun :
|
||||
|
||||
* Little Endian est utilisé par la majorité des architectures de processeurs modernes, y compris x86 et x86_64.
|
||||
* Big Endian est souvent utilisé dans les réseaux, comme dans le protocole IP pour l'ordre des octets des adresses.
|
||||
* La conversion entre les deux est nécessaire lors de l'interopérabilité réseau entre différentes architectures ou lors du traitement de fichiers binaires d'origines diverses.
|
||||
|
||||
Cette vue d'ensemble donne une idée de l'importance et de la polyvalence de ces concepts en programmation Rust et plus largement en informatique. Chaque élément a des cas d'usage spécifiques où il brille particulièrement bien, aidant les développeurs à choisir la meilleure approche pour leurs besoins.
|
||||
|
||||
### Conversions de données
|
||||
|
||||
Aborder les conversions entre différents formats de données est essentiel dans le développement de logiciels, notamment en Rust, où la gestion de la mémoire et des types est centrale.
|
||||
|
||||
#### Conversion entre Strings et Hexadécimales
|
||||
|
||||
* **Préconisation** : Utilisez des bibliothèques éprouvées pour convertir les chaînes de caractères en hexadécimales et vice versa. Ces opérations peuvent sembler simples, mais gérer correctement tous les cas d'erreur potentiels peut être délicat.
|
||||
|
||||
* **Retour d'expérience** : La conversion directe peut être tentante, mais attention aux données non représentables en hexadécimal directement (comme les caractères spéciaux ou non ASCII). La validation des entrées est cruciale pour éviter les erreurs.
|
||||
|
||||
#### Conversion entre Tableaux de Bytes et Format Base64
|
||||
|
||||
* **Préconisation** : Lors de la conversion de données binaires (comme des tableaux de bytes) en Base64, assurez-vous de comprendre l'impact sur la taille des données. La représentation en Base64 augmente la taille des données d'environ 33%. Cela peut être important pour les performances réseau et le stockage.
|
||||
|
||||
* **Retour d'expérience** : L'utilisation de Base64 est très pratique pour intégrer des ressources binaires dans des formats textuels (comme des images en HTML/CSS). Cependant, cette facilité d'utilisation doit être équilibrée avec la considération de l'augmentation de la taille des données.
|
||||
|
||||
#### Conversion entre Bytes et Bits
|
||||
|
||||
* **Préconisation** : Soyez conscient de l'endianess lorsque vous travaillez avec des conversions de bits à bytes et vice versa. Des erreurs dans ces conversions peuvent entraîner des bugs subtils et difficiles à détecter, surtout lors de l'interopérabilité entre différents systèmes ou protocoles.
|
||||
|
||||
* **Retour d'expérience** : Dans les applications bas niveau ou embarquées, ces conversions sont courantes. L'utilisation explicite de types de données et de fonctions de conversion aide à maintenir la clarté du code et à éviter les erreurs.
|
||||
|
||||
#### Gestion de Little Endian et Big Endian
|
||||
|
||||
* **Préconisation** : Lorsque vous travaillez dans un environnement hétérogène (différentes architectures de machines ou réseaux), il est essentiel d'être explicite sur l'endianess des données lors de leur envoi, réception, ou stockage. Utilisez des fonctions de conversion dédiées pour modifier l'ordre des bytes lorsque nécessaire.
|
||||
|
||||
* **Retour d'expérience** : Les erreurs d'endianess sont parmi les plus déroutantes à diagnostiquer. Documenter clairement l'endianess attendue pour chaque interface peut sauver des heures de débogage.
|
||||
|
||||
#### Bonnes Pratiques Générales
|
||||
|
||||
* **Validation des données** : Toujours valider les données en entrée lors des conversions pour éviter des erreurs inattendues ou des vulnérabilités de sécurité.
|
||||
* **Performance** : Soyez conscient de l'impact sur les performances des conversions, surtout dans des boucles critiques ou pour des données volumineuses.
|
||||
* **Clarté du code** : Préférez des fonctions ou des bibliothèques de conversion explicites plutôt que des manipulations manuelles, pour la clarté du code et sa maintenabilité.
|
||||
|
||||
Les conversions entre différents formats de données sont omniprésentes en programmation. Une compréhension approfondie de ces opérations et une attention particulière aux détails peuvent grandement améliorer la robustesse et l'efficacité de vos applications.
|
||||
|
||||
## 4. <a name='Gestiondeserreurs'></a>Gestion des erreurs
|
||||
|
||||
Les processus doivent continuer malgré des "sous" traitements/threads en échec et les fonctions doivent être `catch` si il y a une possiblité d'interuption.
|
||||
@ -86,7 +185,7 @@ Utilisation de Visual Studio (pour le partage de configurations).
|
||||
|
||||
* **Environnement** : navigateur (tous dispositifs), et relais sous Debian.
|
||||
|
||||
* **Développement** : en Rust pour compilation Wasm.
|
||||
* **Développement** : pour compilation Wasm.
|
||||
|
||||
* **Pas de base de données** sauf IndexedDB présent nativement pour les navigateurs et les applications mobiles.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user